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. sqlmap--tamper使用技巧

    apostrophemask.py 适用数据库:ALL 作用:将引号替换为utf-8,用于过滤单引号 使用脚本前: tamper("1 AND '1'='1") 使用脚本后: 1A ...

  2. [no code][scrum meeting] Alpha 12

    项目 内容 会议时间 2020-04-19 会议主题 周总结会议 会议时长 45min 参会人员 全体成员 $( "#cnblogs_post_body" ).catalog() ...

  3. springBoot服务整合线程池ThreadPoolTaskExecutor与@Async详解使用

    ThreadPoolExecutor:=======这个是java自己实现的线程池执行类,基本上创建线程池都是通过这个类进行的创建.ThreadPoolTaskExecutor:========这个是 ...

  4. activemq实现队列的独有消费

    在我们实际的开发中可能存在这么一种情况,应用程序要向一个队列名为queue的队列中发送3条消息,需要保证这3条消息按顺序消费.必须是第一条消费完,在消费第二条然后是第三条.而我们的程序中可能有时候存在 ...

  5. cURL 命令获取本机外网 IP

    1.1 查询本机外网 IP # curl dhcp.cn 134.175.159.160 1.2 输出格式为 JSON # curl dhcp.cn/?json { "IP": & ...

  6. 实验5:开源控制器实践——POX

    一.实验目的 1.能够理解 POX 控制器的工作原理: 2.通过验证POX的forwarding.hub和forwarding.l2_learning模块,初步掌握POX控制器的使用方法: 3.能够运 ...

  7. SPOJ GSS8 - Can you answer these queries VIII | 平衡树

    题目链接 这一道题的修改操作用平衡树都很容易实现,难处理的是询问操作. 要想解决询问操作,只要知道如何在平衡树上快速合并左右两个区间的答案即可. 设$Ans_{[l,r]}^k=\sum\limits ...

  8. TTMS 一个基于Java Swing的Socket通信的剧院票务管理系统

    TTMS (Theater Ticket Management System) 点我进入github TTMS全称剧院票务管理系统,分为客户端和服务器端.服务器端可以接收客户端连接请求,客户端相当于我 ...

  9. k8s入坑之路(4)kubenetes安装

    三种安装方法: 1.kubeadm 2.kubespray 3.二进制安装 kubespray安装kubernetes集群 优点: 1.kuberspray对比kubeadm更加简洁内部集成了kube ...

  10. Jmeter 踩坑记录(七)

    1.master连不上Slave机 解决方法:telnet 192.168.xx.xx 1099  看IP 端口通不通,如果通 OK,不通,检查关闭防火墙或者开放端口 2.salve 连不上 mast ...