caldyn0.F

路径

LMDZ.MARS\libf\dynphy_lonlat\phymars\caldyn0.F

所属目录/模块

libf/dynphy_lonlat/phymars

文件定位

lon-lat GCM 动力倾向计算例程;由 newstart.F 调用,按顺序调用 13 个 EXTERNAL 子过程完成协变/反变风转换、气压计算、空气质量、质量通量、质量辐合、垂直速度、位涡、动能、Bernoulli 函数等,最终调 sortvarc0 输出诊断。

定义的符号

符号 类型 行号 作用
caldyn0 subroutine 1 动力倾向计算调度;依次调 13 个 EXTERNAL 子过程

依赖的模块

use 模块 only 列表 用途 待确认
comvert_mod ap, bp 垂直 sigma-混合坐标参数,用于 pression 计算气压场

头文件

头文件 用途
dimensions.h 网格维度参数(ip1jmp1, ip1jm, llm, llmp1, iip1, jjp1
paramet.h 物理常量(constang 科氏参数等)
comgeom.h 几何参数(airesurg 格点面积等)

调用的关键例程

被调用例程 所在模块/文件 调用位置 作用
covcont EXTERNAL 行 60 协变→反变风分量转换
pression EXTERNAL 行 61 ap, bp, ps 计算气压场 p
psextbar EXTERNAL 行 62 提取地表气压水平平均 psexbarxy
massdair EXTERNAL 行 63 计算空气质量 masse
massbar EXTERNAL 行 64 计算质量加权水平平均 massebx, masseby
massbarxy EXTERNAL 行 65 计算质量加权 xy 平均 massebxy
flumass EXTERNAL 行 66 计算质量通量 pbaru, pbarv
convmass EXTERNAL 行 67 计算质量辐合 convm
vitvert EXTERNAL 行 73 计算垂直速度 w
tourpot EXTERNAL 行 74 计算位涡 vorpot
enercin EXTERNAL 行 75 计算动能 ecin
bernoui EXTERNAL 行 76 计算 Bernoulli 函数 bern = phi + ecin
sortvarc0 EXTERNAL 行 84 输出/整理诊断变量

输入

输入 来源 类型/维度 单位 含义
itau newstart integer 时间步编号
ucov newstart real (ip1jmp1, llm) m/s 协变纬向风
vcov newstart real (ip1jm, llm) m/s 协变经向风
teta newstart real (ip1jmp1, llm) K 位温
ps newstart real (ip1jmp1) Pa 地表气压
masse newstart real (ip1jmp1, llm) kg 空气质量(输入/输出)
pk newstart real (iip1, jjp1, llm) Exner 函数
phis newstart real (ip1jmp1) m²/s² 地表位势
time newstart real s 模拟时间

输出(内部计算,传给 sortvarc0)

输出 去向 类型/维度 单位 含义
phi sortvarc0 real (ip1jmp1, llm) m²/s² 位势
w sortvarc0 real (ip1jmp1, llm) Pa/s 垂直速度
pbaru sortvarc0 real (ip1jmp1, llm) 纬向质量通量
pbarv sortvarc0 real (ip1jm, llm) 经向质量通量
vorpot sortvarc0 real (ip1jm, llm) s⁻¹ 位涡
bern sortvarc0 real (ip1jmp1, llm) m²/s² Bernoulli 函数
dp sortvarc0 real (ip1jmp1) Pa 底层质量辐合/面积

共享状态与副作用

核心逻辑

  1. 风分量转换(行 60):covcont 把协变风 ucov, vcov 转换为反变风 ucont, vcont

  2. 气压与质量计算(行 61-66):pressionap, bp, ps 算气压 ppsextbar 提取地表气压水平平均;massdair 计算空气质量;massbar/massbarxy 计算质量加权水平平均;flumass 计算质量通量。

  3. 质量辐合与底层气压倾向(行 67-71):convmass 计算质量辐合 convm,底层 dp = convm(1)/airesurg

  4. 垂直速度、位涡、动能、Bernoulli(行 73-76):依次计算 w, vorpot, ecin, bern = phi + ecin

  5. 绝对涡度(行 78-82):ang = ucov + constang(相对涡度 + 科氏参数)。

  6. 诊断输出(行 84-85):sortvarc0 收集所有诊断变量输出。

伪代码

covcont(ucov, vcov) -> ucont, vcont
pression(ap, bp, ps) -> p
psextbar(ps) -> psexbarxy
massdair(p) -> masse
massbar(masse) -> massebx, masseby
massbarxy(masse) -> massebxy
flumass(massebx, masseby, vcont, ucont) -> pbaru, pbarv
convmass(pbaru, pbarv) -> convm

for each grid point ij:
    dp(ij) = convm(ij, 1) / airesurg(ij)

vitvert(convm) -> w
tourpot(vcov, ucov, massebxy) -> vorpot
enercin(vcov, ucov, vcont, ucont) -> ecin
bernoui(phi, ecin) -> bern

for each (ij, l):
    ang(ij, l) = ucov(ij, l) + constang(ij)

sortvarc0(itau, ucov, teta, ps, masse, pk, phis, vorpot, phi, bern, dp, time, vcov)

参与的主题流程

主题 参与方式
动力核心 计算 lon-lat GCM 动力倾向;由 newstart 在时间循环中调用

写法特点

复现要点

待确认

相关页面