当前位置: 首页 > news >正文

【CFD小工坊】浅水模型的边界条件

【CFD小工坊】浅水模型的边界条件

  • 前言
  • 处理边界条件的原则
  • 边界处水力要素的计算
    • 水位边界条件
    • 单宽流量边界条件
    • 流量边界条件
    • 固壁边界条件
  • 参考文献

前言

在浅水方程的离散及求解方法一篇中,我们学习了三角形网格各边通量值及源项的求解。但仍有一个问题没有解决:对于边界处的网格,模型边界对应的网格边的通量求解。
对此,我们借鉴王志力1的研究,学习各类边界条件下,网格边的通量的求解。

处理边界条件的原则

对于浅水水域,常见的边界有水位边界与流量边界。在此,我们假设网格 i i i的第 j j j条边对应了模型的边界,设边界上的水位为 h i j ∗ h_{ij}^* hij,垂直(外法线方向)和平行网格边的流速为 u ~ i j ∗ \tilde{u}_{ij}^* u~ij v ~ i j ∗ \tilde{v}_{ij}^* v~ij。为简便起见,以下我们将 h i j ∗ h_{ij}^* hij简记为 h ∗ h^* h,将 u ~ i j ∗ \tilde{u}_{ij}^* u~ij v ~ i j ∗ \tilde{v}_{ij}^* v~ij简记为 u ~ L ∗ \tilde{u}_L^* u~L v ~ L ∗ \tilde{v}_L^* v~L
根据一维方程的特征线理论,沿着特征线方向有特征不变量,最终会得到如下关系:
u ~ L ∗ + 2 c L = u ∗ + 2 c ∗ \tilde{u}_L^*+2c_L = u^* + 2c^* u~L+2cL=u+2c
上式即确定边界条件时所要满足的原则。其中, c L = g h L c_L=\sqrt{gh_L} cL=ghL c ∗ = g h ∗ c^*=\sqrt{gh^*} c=gh
在这里插入图片描述

边界处水力要素的计算

在模型中,边界处的水力要素的计算步骤如下:

  1. 根据笛卡尔坐标系下边界处的 u L u_L uL v L v_L vL转化为网格边界外法线方向和切向的 u ~ L ∗ \tilde{u}_L^* u~L v ~ L ∗ \tilde{v}_L^* v~L
  2. 给定边界处的 u ∗ u^* u h ∗ h^* h。此处的 u ∗ u^* u值可通过流量边界条件转化而来。
  3. 根据式 u ~ L ∗ + 2 c L = u ∗ + 2 c ∗ \tilde{u}_L^*+2c_L = u^* + 2c^* u~L+2cL=u+2c来确定网格边上的其它变量。例如,对于水位条件, h ∗ h^* h已知,我们需要通过上式确定 u ∗ u^* u
  4. 根据浅水方程的对流项确定通量值。

水位边界条件

对于边界条件, h ∗ h^* h已知,则:
u ∗ = u ~ L ∗ + 2 c L − 2 c ∗ = u ~ L ∗ + 2 g h L − 2 g h ∗ u^* = \tilde{u}_L^*+2c_L - 2c^*=\tilde{u}_L^*+ 2\sqrt{gh_L} -2\sqrt{gh^*} u=u~L+2cL2c=u~L+2ghL 2gh
之后将局部坐标系的 u ∗ u^* u v ∗ v^* v转化为全局笛卡尔坐标系下的 u b u_b ub v b v_b vb;记 h b = h ∗ h_b=h^* hb=h。则边界处的通量为:
( F n ) b = E ( U b ) n x + G ( U b ) n y = n x ( h u b h u b 2 + g h b 2 2 h u b v b ) + n y ( h v b z h u b v b h v b 2 + g h b 2 2 ) (\bold{F}_n)_b = \bold{E(U_b)} n_x+ \bold{G(U_b)} n_y = n_x \left( \begin{matrix} hu_b \\ hu_b^2+\dfrac{gh_b^2}{2} \\ hu_b v_b \end{matrix} \right) + n_y \left( \begin{matrix} hv_bz \\ hu_b v_b \\ hv_b^2+\dfrac{gh_b^2}{2} \end{matrix} \right) (Fn)b=E(Ub)nx+G(Ub)ny=nx hubhub2+2ghb2hubvb +ny hvbzhubvbhvb2+2ghb2
式中, ( n x , n y ) (n_x, n_y) (nx,ny)表示边界处外法线方向。

单宽流量边界条件

给定网格边的单宽流量 q = h ∗ u ∗ q=h^*u^* q=hu,则有:
u ~ L ∗ + 2 c L = u ∗ + 2 c ∗ = q h ∗ + 2 g h ∗ = q c ∗ 2 / g + 2 g h ∗ \tilde{u}_L^*+2c_L = u^* + 2c^* = \dfrac{q}{h^*} + 2\sqrt{gh^*} = \dfrac{q}{{c^*}^2/g} + 2\sqrt{gh^*} u~L+2cL=u+2c=hq+2gh =c2/gq+2gh
化简后,上述方程为 c ∗ c^* c的一元三次方程:
2 c ∗ 3 − ( u L + 2 g h L ) c ∗ 2 − g q = 0 2{c^*}^3 - (u_L + 2\sqrt{gh_L}){c^*}^2 - gq = 0 2c3(uL+2ghL )c2gq=0
求解后可得 h ∗ = c ∗ 2 / g h^*={c^*}^2/g h=c2/g。同理,我们可求得 h b h_b hb u b u_b ub v b v_b vb,以及通量 ( F n ) b (\bold{F}_n)_b (Fn)b
注意:在设置边界时,我们需要设定单宽流量的方向;对于入流边界,单宽流量方向与边界外法线方向相反,则 q < 0 q<0 q<0;反之,对于出流边界, q > 0 q>0 q>0

流量边界条件

若流量给定在一个网格的边上,我们可以先求该边界的单宽流量 q q q,之后按照上一小节等同的办法处理边界。若指定的边界条件涉及到m条连续的网格边(如下图边界蓝色边所示),组需要先求出每个对应网格边的单宽流量,之后再按单宽流量边界条件处理方法进行计算。
在这里插入图片描述
对于这m条边界上的总流量 Q Q Q,某一网格 i i i边上的单宽流量 q i q_i qi是:
q i = L i ′ h i 1.5 C i ∑ k = 1 m L k ′ h k 1.5 C k Q q_i = \dfrac{L'_i h_i^{1.5}C_i}{\sum^{m}_{k=1} L'_k h_k^{1.5}C_k} Q qi=k=1mLkhk1.5CkLihi1.5CiQ
式中, L ′ L' L表示流量边界对应网格边的边长, h h h表示对应网格的水深, C C C表示对应网格的摩阻力项,有 C = h 1 / 6 n C = \dfrac{h^{1/6}}{n} C=nh1/6,n为曼宁系数。
之后根据求出的单款流量,依次处理每个边界网格的通量值。

固壁边界条件

在静止的固壁边界上,我们采用无滑移边界条件,即 u b u_b ub v b v_b vb均为0,故:
( F n ) b = ( 0 g h L 2 2 n x g h L 2 2 n y ) (\bold{F}_n)_b = \left( \begin{matrix} 0 \\ \dfrac{gh_L^2}{2}n_x \\ \dfrac{gh_L^2}{2}n_y \end{matrix} \right) (Fn)b= 02ghL2nx2ghL2ny

参考文献


  1. 王志力. 基于Godunov和Semi-Lagrangian法的二、三维浅水方程的非结构化网格离散研究[D]. 辽宁:大连理工大学,2005. ↩︎

相关文章:

【CFD小工坊】浅水模型的边界条件

【CFD小工坊】浅水模型的边界条件 前言处理边界条件的原则边界处水力要素的计算水位边界条件单宽流量边界条件流量边界条件固壁边界条件 参考文献 前言 在浅水方程的离散及求解方法一篇中&#xff0c;我们学习了三角形网格各边通量值及源项的求解。但仍有一个问题没有解决&…...

电力物联网关智能通讯管理机-安科瑞黄安南

众所周知&#xff0c;网关应用于各种行业的终端设备的数据采集与数据分析&#xff0c;然后去实现设备的监测、控制、计算&#xff0c;为系统与设备之间建立通讯联系&#xff0c;达到双向的数据通讯。 网关可以实时监测并及时发现异常数据&#xff0c;同时自身根据用户规则进行…...

用Flask构建一个AI翻译服务

缘起 首先&#xff0c;看一段代码&#xff0c;只有几行Python语句却完成了AI翻译的功能。 #!/usr/bin/python3import sys from transformers import MarianMTModel, MarianTokenizerdef translate(word_list):model_name "Helsinki-NLP/opus-mt-en-zh"tokenizer …...

微信小程序引入阿里巴巴iconfont图标并使用

介绍 在小程序里&#xff0c;使用阿里巴巴的图标&#xff0c;如下所示: 使用方式 搜索自己需要的图标&#xff0c;然后将需要用到的图标加入购物车&#xff0c;如下图所示&#xff1a; 去右上角&#xff0c;点击购物车按钮&#xff1b;这里第一次使用&#xff0c;会有三个提…...

mysql面试题49:MySQL中不同text数据类型的最大长度

该文章专注于面试&#xff0c;面试只要回答关键点即可&#xff0c;不需要对框架有非常深入的回答&#xff0c;如果你想应付面试&#xff0c;是足够了&#xff0c;抓住关键点 面试官&#xff1a;MySQL中TEXT数据类型的最大长度 在MySQL中&#xff0c;TEXT数据类型用于存储较大…...

从虚拟电厂在上海的实践探索看企业微电网数字化的意义

安科瑞 华楠 作为典型的人口聚集、负荷密集区域&#xff0c;上海市具有外来电比例高、本地资源禀赋不足的特点。从发电侧角度来看&#xff0c;近年来上海风、光等新能源发电装机比例逐年提升&#xff0c;传统的火电逐渐成为调节性发电资源&#xff1b;从负荷侧角度来看上海以第…...

创建并初始化线程池

创建并初始化线程池–》threadpool.h, 创建并初始化&脱离(执行完后)子线程&#xff0c;每个子线程信号量wait阻塞【1】 创建套接字&#xff1a;int listenfd socket( PF_INET, SOCK_STREAM, 0 ); 端口复用&#xff1a;setsockopt( listenfd, SOL_SOCKET, SO_REUSEADDR, &a…...

【LeetCode热题100】--136.只出现一次的数字

136.只出现一次的数字 使用哈希表&#xff1a; class Solution {public int singleNumber(int[] nums) {Map<Integer,Integer> map new HashMap<>();for(int num:nums){Integer count map.get(num);if(count null){count 1;}else{count;}map.put(num,count);}…...

Java idea查看自定义注解的调用地方

Java idea查看自定义注解的调用地方...

ReLU激活函数

LeakyReLU激活函数的具体用法请查看此篇博客&#xff1a;LeakyReLU激活函数 ReLU&#xff08;Rectified Linear Unit&#xff09;激活函数是深度学习中最常用的激活函数之一&#xff0c;它的数学表达式如下&#xff1a; 在这里&#xff0c;(x) 是输入&#xff0c;(f(x)) 是输…...

【Android】adjustViewBounds 的理解和使用

理解 adjustViewBounds 是一个 ImageView 的属性&#xff0c;用于调整 ImageView 的边界以适应图像的尺寸。当设置为 true 时&#xff0c;ImageView 的边界将根据图像的宽高比例进行调整&#xff0c;以确保图像完全显示在 ImageView 内部。 理解和使用 adjustViewBounds 的步…...

Redis知识补充

大key删除 unLink scan分批删除 渐进式rehash Redis笔记&#xff1a;Redis的字典什么时候进行Rehash&#xff1f;_redis什么时候进行rehash-CSDN博客...

IIS 部署.NetCore,最细步骤

服务器安装环境 将.net core程序部署到IIS总体需要经过以下3个大步骤&#xff0c;其中在IIS上配置网站有些比较繁琐&#xff0c;我都会逐一给出详细步骤。 <1>安装IIS和.NetCORE运行时程序 <2>以文件的形式发布.NETCORE程序到指定目录 <3>IIS上面建立网站…...

4.查询用户的累计消费金额及VIP等级

思路分析&#xff1a; &#xff08;1&#xff09;按照user_id及create_date 分组求消费金额total_amount &#xff08;2&#xff09;开窗计算同user_id下的累计销售金额sum(total_amount) over(partition by user_id order by create_date ROWS BETWEEN UNBOUNDED PRECEDING AN…...

解决MySQL错误-this is incompatible with sql_mode=only_full_group_by

报错 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column ‘数据库名.表名.字段名’ which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_modeonly_full_group_by 原因 MySQL错误-t…...

UDP通信-广播、组播

UDP的三种通信方式 单播&#xff1a;单台主机与单台主机之间的通信。 广播&#xff1a;当前主机与所在网络中的所有主机通信。 组播&#xff1a;当前主机与选定的一组主机的通信。 UDP如何实现广播 使用广播地址&#xff1a;255.255.255.255 具体操作&#xff1a; 发送端…...

10-bean创建流程1一finishBeanFactoryInitialization(ConfigurableListableBeanFactory

文章目录 1. 方法的主要流程2. ConversionService-如何自定义转换器3. AbstractBeanFactory#getMergedLocalBeanDefinition(String beanName)4.FactoryBean实例化5.内置值处理器1. 方法的主要流程 /*** Finish the initialization of this contexts bean factory,* initializi…...

专题三:穷举、暴搜、深搜、回溯、剪枝【递归、搜索、回溯】

1、全排列 class Solution { public:vector<vector<int>> ret;vector<int> path;bool check[7];void dfs(vector<int>& nums){if(nums.size() path.size()) {ret.push_back(path);return;}for(int i 0;i < nums.size();i){if(check[i] fals…...

国科云SSL证书讲堂:SSL证书安装常见问题盘点

SSL证书能够对网站传输数据进行加密处理&#xff0c;有效提升网站的数据安全防护能力&#xff0c;逐渐被越来越多的政企网站所应用。但在安装使用SSL证书时&#xff0c;经常会发生各种意想不到的问题&#xff0c;对网站的数据安全和正常访问造成严重影响。本文国科云对安装使用…...

Python3无法调用Sqlalchemy解决(mysqldb)

原因 在安装Sqlalchemy后运行程序报错 无法导入mysqldb&#xff0c;缺失模块 ImportError: No module named ‘MySQLdb’ 既然缺少 MySQLdb 这个模块&#xff0c;尝试按照正常的想法执行 pip install MySQLdbpip install mysql-python 应该能解决&#xff0c;但是却找不到…...

UE5 学习系列(二)用户操作界面及介绍

这篇博客是 UE5 学习系列博客的第二篇&#xff0c;在第一篇的基础上展开这篇内容。博客参考的 B 站视频资料和第一篇的链接如下&#xff1a; 【Note】&#xff1a;如果你已经完成安装等操作&#xff0c;可以只执行第一篇博客中 2. 新建一个空白游戏项目 章节操作&#xff0c;重…...

2025年能源电力系统与流体力学国际会议 (EPSFD 2025)

2025年能源电力系统与流体力学国际会议&#xff08;EPSFD 2025&#xff09;将于本年度在美丽的杭州盛大召开。作为全球能源、电力系统以及流体力学领域的顶级盛会&#xff0c;EPSFD 2025旨在为来自世界各地的科学家、工程师和研究人员提供一个展示最新研究成果、分享实践经验及…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望

文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例&#xff1a;使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例&#xff1a;使用OpenAI GPT-3进…...

MySQL中【正则表达式】用法

MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现&#xff08;两者等价&#xff09;&#xff0c;用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例&#xff1a; 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

大数据学习(132)-HIve数据分析

​​​​&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求&#xff0c;并检查收到的响应。它以以下模式之一…...

GruntJS-前端自动化任务运行器从入门到实战

Grunt 完全指南&#xff1a;从入门到实战 一、Grunt 是什么&#xff1f; Grunt是一个基于 Node.js 的前端自动化任务运行器&#xff0c;主要用于自动化执行项目开发中重复性高的任务&#xff0c;例如文件压缩、代码编译、语法检查、单元测试、文件合并等。通过配置简洁的任务…...

【笔记】WSL 中 Rust 安装与测试完整记录

#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统&#xff1a;Ubuntu 24.04 LTS (WSL2)架构&#xff1a;x86_64 (GNU/Linux)Rust 版本&#xff1a;rustc 1.87.0 (2025-05-09)Cargo 版本&#xff1a;cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...

深度学习水论文:mamba+图像增强

&#x1f9c0;当前视觉领域对高效长序列建模需求激增&#xff0c;对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模&#xff0c;以及动态计算优势&#xff0c;在图像质量提升和细节恢复方面有难以替代的作用。 &#x1f9c0;因此短时间内&#xff0c;就有不…...

FFmpeg:Windows系统小白安装及其使用

一、安装 1.访问官网 Download FFmpeg 2.点击版本目录 3.选择版本点击安装 注意这里选择的是【release buids】&#xff0c;注意左上角标题 例如我安装在目录 F:\FFmpeg 4.解压 5.添加环境变量 把你解压后的bin目录&#xff08;即exe所在文件夹&#xff09;加入系统变量…...