当前位置: 首页 > 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;但是却找不到…...

2023/10/15总结

学习总结 最近开始写项目了&#xff0c;然后写的过程中遇到了跨域问题。 为什么会出现跨域问题 由于浏览器的同源策略限制。同源策略是一种约定&#xff0c;它是浏览器最核心也是最基本的安全功能。如果缺少了同源策略&#xff0c;那么浏览器的正常功能可能都会收到影响。所谓…...

关于图像分割SDK的一些基础认识

随着科技的不断发展&#xff0c;图像分割SDK已经成为了一个备受关注的话题。而在众多图像分割SDK中&#xff0c;美摄图像分割SDK以其独特的功能和优势脱颖而出。本文将从美摄图像分割SDK的企业价值和互联网娱乐方面&#xff0c;介绍其宣传文章的具体写作规范。 在企业价值方面&…...

SpringMVC之国际化上传下载

spring项目中的国际化 1&#xff09;提供中英两种资源文件 i18n_en_US.properties i18n_zh_CN.properties 2&#xff09;配置国际化资源文件&#xff08;在spring配置文件中添加&#xff0c;例如spring-mvc.xml&#xff09; <bean id"messageSource" class&quo…...

TigerVNC自动设置密码脚本

新建sh脚本&#xff0c;复制以下命令。设置ssh终端密码和vncserver密码后&#xff0c;运行ssh脚本&#xff0c;即可设置修改vncserver密码。 #!/bin/bash vncpwd"vncserver密码" sshpwd"ssh终端密码"expect << EOFset timeout 10spawn ssh root127.…...

什么是美体SDK?美摄美颜美体SDK对接开发指南

在当今的数字世界中&#xff0c;人们对自我表达和形象展示的需求越来越高。美体SDK应运而生&#xff0c;为用户提供了一种全新的美颜美体体验&#xff0c;让每一个人都能享受到个性化的美丽与自信。 一、美体SDK的特点 轻量级&#xff1a;美体SDK体积小巧&#xff0c;不会对用…...

【Java集合中各种数据结构的方法汇总】

文章目录 Java集合中各种数据结构的方法汇总数组 ArrayList 、LinkedList链表 LinkedList栈 Stack队列 ArrayQueue、LinkedList哈希表 HashMap堆 PriorityQueue Java集合中各种数据结构的方法汇总 获取大小&#xff1a;fun.size(); 判断是否为空&#xff1a;fun.isEmpty(); …...

算法通过村第十四关-堆|白银笔记|经典问题

文章目录 前言在数组中寻找第K大的元素堆排序原理合并K个排序链表总结 前言 提示&#xff1a;想要从讨厌的地方飞出来&#xff0c;就得有藏起来的翅膀。 --三岛由纪夫《萨德侯爵夫人》 这里我们主要看一下经典的题目&#xff0c;这三个题目来说都是堆的热点问题。重点再理解处理…...

如何正确维护实验室超声波清洗器?

实验室一直被视为一个严谨而严肃的场所&#xff0c;实验应遵循一定的步骤&#xff0c;使用的设备也经历了详细的选择&#xff0c;如实验室超声波清洗机&#xff0c;其特点远强于一般类型的清洗机。专门负责采购的实验室人员一般对优质服务的实验室超声波清洗机印象深刻&#xf…...

DID赛道前列的生物识别技术,开启Web3时代的大门—MXT

互联网发展的十字路口 互联网从上世纪90年代初发展至今&#xff0c;历经30年&#xff0c;她改变了整个人类的生活方式、沟通形式以及社会发展模式&#xff0c;她的影响早已渗透到了世界的各个角落。而如今&#xff0c;我们似乎正站在一个新的十字路口&#xff0c;一个互联网将…...

Java基础面试-final

final&#xff08;最终的&#xff09; 修饰类&#xff1a;表示类不可被继承修饰方法&#xff1a;表示方法不可被子类覆盖&#xff0c;但是可以重载修饰变量&#xff1a;表示变量一旦被赋值就不可以更改它的值 修饰成员变量 如果final修饰的是类变量&#xff0c;只能在静态初始…...

网站设计代做/市场调研报告模板ppt

一、简介 美国国家漏洞数据库收集了操作系统&#xff0c;应用软件的大量漏洞信息&#xff0c;当有新的漏洞出现时&#xff0c;它也会及时发布出来&#xff0e; 由于信息量巨大&#xff0c;用户每次都需要到它的网站进行搜索&#xff0c;比较麻烦&#xff0e;如果能有个工具&…...

网站做流量怎么赚钱的/开封seo推广

前天我去一个客户那里装系统&#xff0c;那里的环境是这样的&#xff1a;他们那里是两台邮件服务器&#xff0c;同时用&#xff0c;数据同步&#xff0c;就算是备份和冗余&#xff0c;现在正常的叫A&#xff0c;我要装系统的是B&#xff0c;B有两个盘&#xff0c;一个盘为一个分…...

横沥仿做网站/百度模拟点击软件判刑了

网页布局原理标签在网页中会显示成一个个的方块&#xff0c;先按照行的方式&#xff0c;把网页划分成多个行&#xff0c;再到行里面划分列&#xff0c;也就是在表示行的标签中再嵌套标签来表示列&#xff0c;标签的嵌套产生叠加效果。单列布局水平居中水平居中的页面布局中最为…...

全球网站域名/关键词排名优化系统

hashMap源码获取元素的位置&#xff1a; static int indexFor(int h, int length) {// assert Integer.bitCount(length) 1 : "length must be a non-zero power of 2";return h & (length-1); } 解释&#xff1a; h:为插入元素的hashcode length:为map的容量…...

wordpress独立博客/关键词挖掘爱站网

1 XML资源文件简介 android程序自带的xml文件一般放在values/xml/xml_name.xml处&#xff0c;这里需要使用new->file创建一个新的xml文件。xml文件的版本代码如下: <?xml version"1.0" encoding"utf-8"?> java代码中引用&#xff1a;R.xml.x…...

网架报价明细表/seo咨询常德

http://poj.org/problem?id3007 用STL 会超时 用哈希哟 本题哈希很简单&#xff0c;主要是字符串可能出现的各种情况处理起来有点复杂 #include<iostream> #include<cmath> #include<string> #include<algorithm> #include<queue> #include<…...