0.Formulation of the RANS equations [1]

不可压缩流体控制方程

\[\begin{array}{l l}
\frac{\partial u}{\partial x}+\frac{\partial v}{\partial y}+\frac{\partial w}{\partial z}=0 \cr
\frac{Du}{Dt}-fv=-\frac{1}{\rho}\frac{\partial p}{\partial x}+\frac{\partial }{\partial z} N_z \frac{\partial u}{\partial z} + N_h\Delta u \cr
\frac{Dv}{Dt}+fu=-\frac{1}{\rho}\frac{\partial p}{\partial y}+\frac{\partial }{\partial z} N_z \frac{\partial v}{\partial z} + N_h\Delta v \cr
\frac{Dw}{Dt}=-\frac{1}{\rho}\frac{\partial p}{\partial z}-g+\frac{\partial }{\partial z} N_z \frac{\partial w}{\partial z} + N_h\Delta w \cr
\end{array}\]

其中\(N_z\)为垂向涡粘系数,\(N_h\)为水平涡粘系数,分子粘性系数已忽略。

1.Boussinesq approximation

Boussinesq 近似假定密度在参考密度附近变化不大,即

\[\rho(\vec{x},t) = \rho_0 + \rho'(\vec{x},t)
\]

将控制方程内除了重力之外,所有密度替换为参考密度\(\rho_0\),即

\[\begin{array}{l l}
\frac{\partial u}{\partial x}+\frac{\partial v}{\partial y}+\frac{\partial w}{\partial z}=0 \cr
\rho_0\frac{Du}{Dt}-fv=-\frac{\partial p}{\partial x}+\rho_0(\frac{\partial }{\partial z} N_z \frac{\partial u}{\partial z} + N_h\Delta u) \cr
\rho_0\frac{Dv}{Dt}+fu=-\frac{\partial p}{\partial y}+\rho_0(\frac{\partial }{\partial z} N_z \frac{\partial v}{\partial z} + N_h\Delta v) \cr
\rho_0\frac{Dw}{Dt}=-\frac{\partial p}{\partial z}-\rho g+\rho_0(\frac{\partial }{\partial z} N_z \frac{\partial w}{\partial z} + N_h\Delta w) \cr
\end{array}\]

2.Hydrostic approximation

静压假定包括

  1. 忽略垂向粘性
  2. 忽略垂向加速度

此时,垂向方程变为

\[\frac{\partial p}{\partial z} = -\rho g
\]

注意,此时密度并非为参考密度,而是水体总密度。将动量方程沿垂向进行积分,得

\[p(x,y,z=z_0) = p_a(x,y) + \int_{z=z_0}^{\zeta(x,y)}\rho gdz
\]

\(p_a(x,y)\)为自由表面处大气压强。

将\(\rho(\vec{x},t) = \rho_0 + \rho'(\vec{x},t)\)代入方程,便可得到压力表达式

\[p(x,y,z=z_0) = p_a(x,y) + (-\rho_0gz_0 + \rho_0g\zeta(x,y) + \int_{z=z_0}^{\zeta(x,y)}\rho' gdz)
\]

其中三项分别为正压项,动压项与斜压项。其中\(\rho'(x,y,z,t)\)根据状态方程求得。

Appendix A.Mode Splitting [1]

内外模分离方法主要目的是解决海洋模拟中水平计算最大时间步和垂向计算时间步不匹配的问题。

为了模拟表面重力波,根据CFL准则,最大时间步应满足

\[T_h\le \frac{\Delta x}{\sqrt{2gH}}
\]

而垂向计算所需时间步仅需满足

\[T_z\le \frac{h_z^2}{2N_z}
\]

一般情况下,T_z大约为T_z的10倍以上(FVCOM中推荐取10)。

因此,内外模分离方法主要是解决海洋模拟问题计算过程中,水平尺度和垂直尺度计算时间步不匹配问题。

在水平模拟过程中,由于表面重力波在沿水深方向变化不大,因此可采用垂向积分方程

\[\begin{array}{l l}
\frac{\partial D\bar{u}}{\partial x} + \frac{\partial D\bar{v}}{\partial y} + \frac{\partial \zeta}{\partial t}=0 \cr
\frac{\partial \bar{u}}{\partial t}+A_x -fv=-\frac{1}{\rho_0}\frac{\partial p_a}{\partial x} -g \frac{\partial \zeta}{\partial x} -B_x + C_x+ N_h\Delta \bar{u} \cr
\frac{\partial \bar{v}}{\partial t}+A_y -fv=-\frac{1}{\rho_0}\frac{\partial p_a}{\partial y} -g \frac{\partial \zeta}{\partial y} -B_y + C_y + N_h\Delta \bar{v} \cr
\end{array}\]

其中\(D=H+\zeta\)为总水深。

求解内模时将各层流速时将速度分解为

\[u = \bar{u}+u' ,\quad v = \bar{v}+v'
\]

将原始动量方程与垂向积分动量方程作差,可得

\[\begin{array}{l l}
\frac{\partial u}{\partial x}+\frac{\partial v}{\partial y}+\frac{\partial w}{\partial z}=0 \cr
\frac{\partial u'}{\partial t}+ u \frac{\partial u}{\partial x} + v \frac{\partial u}{\partial y}+ w \frac{\partial u}{\partial z} - A_x -fv' = B_x - \frac{g}{\rho_0}\frac{\partial}{\partial x}\int_z^{\zeta}\rho'dz -C_x + N_h\Delta u' \cr
\frac{\partial v'}{\partial t}+ u \frac{\partial v}{\partial x} + v \frac{\partial v}{\partial y}+ w \frac{\partial v}{\partial z} - A_y +fu' = B_y - \frac{g}{\rho_0}\frac{\partial}{\partial y}\int_z^{\zeta}\rho'dz -C_x + N_h\Delta v' \cr
\end{array}\]

根据三个方程,便可求解各层水体流速\(u,v,w\)

Reference

[1] Kowalik Z, Murty T S. Numerical modeling of ocean dynamics[M]. World Scientific, 1993.

Boussinesq 近似及静压假定,内外模分离方法(附录A)的更多相关文章

  1. CTF中图片隐藏文件分离方法

    CTF中图片隐藏文件分离方法   0x01 分析 这里我们以图片为载体,给了这样的一样图片:2.jpg 首先我们需要对图片进行分析,这里我们需要用到kali里面的一个工具 binwalk ,想要了解这 ...

  2. AsyncTask内的各个方法调用顺序

    |- AsyncTask内的各个方法调用顺序:|- 首先,用户调用execute方法,启动AsyncTask .然后在execute方法中:|- 首先调用onPreExecute方法,执行初始化操作. ...

  3. [C#解惑] #1 在构造函数内调用虚方法

    谜题 在C#中,用virtual关键字修饰的方法(属性.事件)称为虚方法(属性.事件),表示该方法可以由派生类重写(override).虚方法是.NET中的重要概念,可以说在某种程度上,虚方法使得多态 ...

  4. 在String()构造器不存在的情况下自定义一个MyString()函数,实现如下内建String()方法和属性:

    在String()构造器不存在的情况下自定义一个MyString()函数,实现如下内建String()方法和属性: var s = new MyString("hello"); s ...

  5. Flex Array内置排序方法的使用

    在Array类中,提供内置的排序方法.排序是在软件开发的过程中,经常遇到的问题.通过这些内置的方法,可以快速轻便的进行排序操作. Array类提供sort方法对Array实例进行排序.sort方法没有 ...

  6. PHP文章关键词相似短尾长尾内链替换方法介绍

    对于互联网程序来说,对文字正文内容做关键词内链优化是常态的工作之一.一方面有人手动来处理关键词内链,这个效率太低:一方面通过程序自动添加内链,这样子也省事而且便于管理: 今天我们探讨的就是给自动给文章 ...

  7. day29 类中的内置函数方法 __str__ __repr__ __call__ isinstance() issubclass()

    __str__()__repr__()__len__() str() 转字符串repr() 让字符原形毕露的方法len() 计算长度 内置的方法很多,但是并不是全部都在object中,比如len(), ...

  8. python - 类的内置 attr 方法

    类的内置 attr 方法 #类的内置 attr 方法: # __getattr__ # __setattr__ # __delattr__ # __getattr__ #到调用一个类不存在数参数时,将 ...

  9. Python3内置字符串方法详解

    官网文档地址:https://docs.python.org/3/library/stdtypes.html#string-methods基于 Python 3.X 版本 str.capitalize ...

随机推荐

  1. gridlayout在kv中的引用

    from kivy.app import App from kivy.uix.gridlayout import GridLayout class GridLayoutWidget(GridLayou ...

  2. Scrum Meeting 13

    第13次例会报告 日期:2021年06月05日 会议主要内容概述: 团队成员均明确了下一步的目标,进度突飞猛进辣 一.进度情况 我们采用日报的形式记录每个人的具体进度,链接Home · Wiki,如下 ...

  3. 攻防世界 杂项 6.pure_color

    图片隐写 工具 使用StegSolve一把梭 另一种解法 右击图片编辑,画图工具打开,属性设置黑白.

  4. Vue3学习(十)之 页面、菜单、路由的使用

    一.前言 好几天没更文了,周末真的太冷了,在家躺了一天不爱动.今天给暖气了,相对不那么冷了,就可以继续更文了. 由文章标题不难看出,就是实现点击菜单跳转的意思,我写的很直白了,哈哈. 二.实现点击菜单 ...

  5. 如何选择普通索引和唯一索引《死磕MySQL系列 五》

    系列文章 一.原来一条select语句在MySQL是这样执行的<死磕MySQL系列 一> 二.一生挚友redo log.binlog<死磕MySQL系列 二> 三.MySQL强 ...

  6. 修改 openssh 版本号

    1.查看 sshd 位置 #which sshd 2.查看 /usr/sbin/sshd(二进制文件) 内容 #strings /usr/sbin/sshd | grep nicai 3.修改版本号, ...

  7. Typora软件的使用教程

    一.Typora软件介绍 Typora是一款轻便简洁的Markdown编辑器,支持即时渲染技术,这也是与其他Markdown编辑器最显著的区别.即时渲染使得你写Markdown就想是写Word文档一样 ...

  8. ONVIF客户端中预置位设置代码实现过程

    simpleOnvif的功能:提供支持Windows.Linux.arm.Android.iOS等各种平台的SDK库,方便集成,二次开发 之前跟大家分享了我们安徽思蔷信息科技的simpleOnvif的 ...

  9. 子查询之 exists 和 in

    exists exists用于检查一个子查询是否至少会返回一行数据(即检测行的存在),返回值为boolean型,true或false 语法 exists subquery /* 参数: subquer ...

  10. uni-app APP端隐藏导航栏自定义按钮

    话不多说,上代码 // #ifdef APP-PLUS var webView = this.$mp.page.$getAppWebview(); // 修改buttons webView.setTi ...