收藏本站 劰载中...网站公告 | 吾爱海洋论坛交流QQ群:835383472

数值海洋与大气模式(四):POM模式框架

[复制链接]
1.POM模式概况  前文用了两篇文章的篇幅讲述了如何从0到1实现一个浅水方程,涉及到了交错网格、差分离散化和初边值条件的处理等等。本文就来探讨一下海洋模式中最经典的模式之一,POM模式。
+ c7 w5 K8 q4 ^2 k0 c  POM模式的全名为Princeton Ocean Model,在1970年代由G.Mello和Alan Blumberg所开发。经过发展和维护,逐渐成为了可以胜任数值实验和业务化应用的经典模式。尽管从2021年的今天来看,这个模式可能略微跟不上时代,但其经典型和代表性是模式学习者所绕不开的。后续很多海洋模式都是从POM中修改而得到的。POM是一个串行模式,所有代码都写在一个Fortran文件之中。不涉及多文件编译,而且代码结构清晰,是模式学习者初学的首选。除此之外,对于模式的高性能计算的学习者来说,优化POM模式也是很好的实战案例。倘若能用MPI把POM模式改写成并行代码,对代码能力的锻炼是很显著的。
) W+ \" P1 R+ O+ q; F" x  POM模式的原始控制方程如下。
. {7 \! n' D8 G7 d+ q- F  R! r) O5 C
% R+ f$ b# C9 ^# M; M
- y: m0 G$ W: T8 Y5 e# [) T
                               
登录/注册后可看大图
: ?5 w- K1 P/ [
2.Sigma坐标系  前文讲述的浅水模式,介绍了蛙跳格式和交错网格。由于浅水方程组对NS方程做了垂向平均,因此前面提到的网格都是水平网格。在真实的海洋模拟中,水平尺度大于垂直尺度。海底地形起伏较大,所模拟的海区水深可能从几十米到几千米深。如果使用传统的笛卡尔正交坐标系,会出现垂直步长dz不论怎么取都不能满足所有需求。假如近岸水深50m,远洋水深10000m,如果dz取5m,近岸则有10层的网格,而远洋则会出现2000层的网格,造成了极大的计算资源浪费。而如果dz取的比较大,在浅海地区的层数就少的可怜。除此之外,笛卡尔正交坐标系划出的锯齿状很难贴合边界,由下图可以看出,Z坐标系中被底地形横切的网格,不论当做海洋还是当做底地形都会影响精度。6 `$ Q7 o0 n' m9 W: I
0 u$ O" y) _/ f4 t2 h+ o) r5 j
                               
登录/注册后可看大图
  POM模式给出的解决方案是采用sigma坐标系,该坐标系也被称为地形追随坐标系。有图中可以看出,该坐标系能把海洋各个位置均等的划分同样的层数,在边界上也能很好的贴合地形。因此,在推导POM的方程时,要做的第一步就是将上述控制方程一一进行sigma变换,得到在sigma坐标下的控制方程。
: S$ d  }' \0 W6 t% c7 L
, l, r$ w" X0 J6 _, {* u2 z; f

5 ?# ]8 [3 V  u: v" e& ^                               
登录/注册后可看大图

: L2 h& |) ?- |+ H4 G  根据链式法则,就可以得到每个导数项的关系。
  ?! i. r9 F( r5 x8 n. s
$ ]$ }) e# Y- g
1 O6 {+ W  ~6 O  p/ v0 r( c
                               
登录/注册后可看大图
1 n. z' w% z* v! r
  用s代表x,y,t的任一项,D海底到自由表面的高度,即 5 I9 [7 k2 x3 Y% N( T* T
# `  v# d( f9 @$ l
                               
登录/注册后可看大图
,可得到如下表达式。

8 A! r6 t9 n4 k  z/ V1 t' ]& J; J
1 I6 a3 O1 J7 K8 Z" O& {
# _: \1 y' u. E( U% X2 q$ [
                               
登录/注册后可看大图
! n7 s  ?& h& C5 a- w
  由此推导下去即可得到sigma坐标下的控制方程,推导过程极其繁琐,再此省略了推导的中间过程,直接给出结果。为表示方便,后文sigma坐标系的变量中省略其右上角的星号。若对推导的详细过程感兴趣,见文末参考资料。" G8 S% i  }9 |$ l$ s! i

) C7 t+ ^7 S' I
8 g8 M% Y( x  F+ `& P5 \
                               
登录/注册后可看大图

! M8 X# c) W2 d; n4 E/ q4 t3.内外模态分离  首先,再回顾一下第一篇文章所讨论过的CFL条件,上次是从数学的角度理解CFL条件为什么能确保线性偏微分方程稳定,这次从波动的角度理解一下CFL条件的意义。由于海洋和大气的动力框架系统为高度非线性系统,因此其稳定性变得更加难以控制。CFL条件是一种很好的参考,而无法绝对确保稳定。
' s9 l2 B4 L6 a1 m' d7 w4 M9 F+ q
- T; D0 _% |2 Z% w
5 o. K) p& O3 q# }8 k
                               
登录/注册后可看大图

8 Q; Q& T4 H% o; J. ]+ W: p9 e  CFL条件中c的物理意义是波速。假设
( L  C5 `: G1 U; o+ \$ m
                               
登录/注册后可看大图
,那么此时
( Z" B' ^% S, p+ p
                               
登录/注册后可看大图
。可以看出网格的步长比和波的传播速度相同,意味着这样的网格分辨率是无法分辨这个波的。而当
" O) v1 H! a9 R, z4 P0 U
                               
登录/注册后可看大图
& C9 ~1 x) T! G1 Q$ t, r. ?
时,波速比步长比要大,同样是无法解得这个波的运动状态。这样描述或许不够严谨,但是有助于理解CFL条件的物理意义。结合海洋的实际情况来看,在表层的表面重力波的波速约为200-300m/s,而在海洋内部的重力内波波速远小于表面重力波,大概是在5m/s左右。可以看出,海洋内部的运动过程和海洋表层的运动过程时间尺度相差较大,表层明显快于内部。再回看CFL条件,可以看出如果要想同时满足海洋表层和海洋内部的稳定,表层就需要迁就内部。而POM模式的做法是将表层和内部分离。把表层的正压过程和内部的斜压过程分别称为外模态和内模态,分别设置时间步长。

% |1 M5 O" X" s5 D2 S  先来看外模态(即正压模态),该部分也被称为快过程,时间步长较小。处理方式类似于浅水方程的推导,对其所在区域做垂向积分,忽略了水平扩散项。在sigma坐标系下的方程组如下所示。
5 `, R  k1 h' z) I7 A+ q, J7 S
; O2 S4 z( `4 Q1 z) ?

' H! r) Z0 O5 I7 h! B7 H, {" g! d                               
登录/注册后可看大图
, L1 k1 j3 a# h4 I1 b2 W) I7 G
  对于内模态,则方程形式和第二部分列的形式一样。由于外模态时间步长短,内模态时间步长较长。在POM模式中,内模态的时间步长通常是外模态的数十倍。如果将POM模式的整体结构写成伪代码的话,可以写成如下形式。内模态的时间步长是外模态的isplit倍,这样外模态就可以嵌套在内模态的循环里写。
% S- W7 F4 m8 R' u/ U3 q! F$ e" M7 Xprogram POM' Z% D6 E- N1 @. o8 Z) _
    Init Paramter        !初始化各种参数,如im,jm等    Init Variable        !初始化T,S,U,V,W等    do iint=1,iend       !内模态循环        call advct()     !计算平流项        call baropg()    !计算压强梯度力        do iext=1,isplit !外模态循环            compute el   !计算eta            compute ua   !计算正压ua            compute va   !计算正压va            compute ut,vt!计算正压平均速度        end do           !外模态循环结束        adjust u,v       !        call vertvl      !计算垂直速度        call advq        !计算km,kh        call profq. `' c! `7 R6 {, t7 y4 F5 l
        call advt        !计算T和S        call proft( X8 `2 h  G$ }) p
        call dens        !计算密度        call advu        !计算u        call profu" _5 m) B* W' Z" H2 ?, X4 J6 P2 w
        call advv        !计算v        call profv8 J7 j* Q3 K: j) C' T7 v
        print            !将结果输出    end do               !内模态结束end4.湍流闭合方案9 K) A7 L3 z; I, I7 {3 f5 Q8 d

3 u1 }6 e9 T# V0 h                               
登录/注册后可看大图
) }) C, t+ i7 R2 U1 c
  通过观察可以发现,本文最开端给出的POM原始方程的运动方程和温盐方程都有

" B. [! ?/ _2 s" C# \4 M8 K                               
登录/注册后可看大图
2 K/ v/ D, P' k
                               
登录/注册后可看大图
。而在这些方程的末尾,也有
6 Z. k9 z  x6 [" I
                               
登录/注册后可看大图
,

% J: B5 I: f: ]3 x% M" ^! a7 s0 m4 O                               
登录/注册后可看大图
,

( y& M5 [1 p9 h* b" m                               
登录/注册后可看大图
: [  G; j7 u8 F1 i) h$ z+ B
                               
登录/注册后可看大图
这些项。这些项的存在使得方程的未知量多于待求解的变量,而如果忽略这些项则会对模拟结果大打折扣。因此,需要解决这些参数的设置问题,而POM模式选择了使用Mellor-Yamada方案,具体形式如下。
: G+ {1 [# N# H' O& r% W8 ~
% H9 d) E% |1 G0 B/ X% Q, p
9 O: R& G' ~# @4 d

" X6 D" N' E0 O4 Q) S                               
登录/注册后可看大图
  V* M8 j% k, X2 r5 N5 ]5 k7 _0 a
  湍流是一个十分复杂的现象,如果想理解湍流参数化方案,就需要理解什么是湍流。下文将从湍流的本质讲起,逐渐引出湍流参数化方案的全貌。当对模式的动力框架有了比较明确的理解之后,再去看模式代码甚至修改模式代码,就会容易很多。) l) m. u. W7 ]$ ]! u0 ~' l
版权声明  本文创作的初衷是用于帮助数值模式的学习者。欢迎转载,转载请私信并注明作者和出处,请勿用于任何商业用途。
% j; U1 @1 b  w7 V( l) G5 m参考资料A Manual for POM and GOMO. Xiaomeng Huang, Xing Huang. Users Guide For A Three-Dimensional Numerical Ocean Model. George L. Mellor. CEE262c Lecture 8: Sigma coordinates and mode splitting: The Princeton Ocean Model (POM).0 x( Y, g8 t* ^$ Q2 O- F2 Q3 [
7 a$ i9 B' \1 k$ Q% M' m% L+ l
回复

举报 使用道具

相关帖子

全部回帖
暂无回帖,快来参与回复吧
懒得打字?点击右侧快捷回复 【吾爱海洋论坛发文有奖】
您需要登录后才可以回帖 登录 | 立即注册
liangbingquan
活跃在2022-11-6
快速回复 返回顶部 返回列表