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. Golang通脉之错误处理

    在实际工程项目中,总是通过程序的错误信息快速定位问题,但是又不希望错误处理代码写的冗余而又啰嗦.Go语言没有提供像Java.C#语言中的try...catch异常处理方式,而是通过函数返回值逐层往上抛 ...

  2. 什么是Sprint计划?

    Sprint 计划是Scrum框架中的一个事件,团队将确定他们将在冲刺期间处理的产品积压项目,并讨论他们完成这些产品积压项目的初始计划. 团队可能会发现建立冲刺目标很有帮助,并以此为基础确定他们在冲刺 ...

  3. oo第三单元学习总结

    OO第三单元小结 一.JML语言理论基础及工具链梳理 在本单元我们学习了JML语言的一些基础知识,能够让我们看懂简单的JML规格并写出对应代码, 主要用到的知识点有:   1.requires 该子句 ...

  4. CICD 流水线就该这么玩系列之一

    今天给大家分享的是 DevOps 世界中非常流行的一个 GitOps 工具 - Argo CD.如果你还不知道什么是 GitOps,欢迎留言告诉我,根据热度,我会再写一篇详细讲解 GitOps 的文章 ...

  5. CanalAdmin搭建Canal Server集群

    CanalAdmin搭建Canal Server集群 一.背景 二.机器情况 三.实现步骤 1.下载canal admin 2.配置canalAdmin 3.初始化canal admin数据库 4.启 ...

  6. 常用Java API:Math类

    求最值 最小值 Math.min(int a, int b) Math.min(float a, float b) Math.min(double a, doubleb) Math.min(long ...

  7. hdu 1502 Regular Words(DP)

    题意: 一个单词X由{A,B,C}三种字母构成. A(X):单词X中A的个数.B(X),C(X)同理. 一个单词X如果是regular word必须满足A(X)=B(X)=C(X)且对于X的任意前缀有 ...

  8. JAVA笔记13__创建线程/线程休眠/等待线程终止/线程中断/守护线程

    /** * 线程:是进程的一个执行路径,共享一个内存空间,线程之间可以自由切换,并发执行,一个进程最少有一个进程(单线程程序) * 多线程两种实现方法:1.继承Thread类 2.实现Runnable ...

  9. Go语言核心36讲(Go语言进阶技术十二)--学习笔记

    18 | if语句.for语句和switch语句 现在,让我们暂时走下神坛,回归民间.我今天要讲的if语句.for语句和switch语句都属于 Go 语言的基本流程控制语句.它们的语法看起来很朴素,但 ...

  10. 羽夏看Win系统内核——SourceInsight 配置 WRK

    写在前面   此系列是本人一个字一个字码出来的,包括示例和实验截图.由于系统内核的复杂性,故可能有错误或者不全面的地方,如有错误,欢迎批评指正,本教程将会长期更新. 如有好的建议,欢迎反馈.码字不易, ...