paleoclimate_mod.F90

路径

LMDZ.MARS\libf\phymars\paleoclimate_mod.F90

所属目录 / 模块

libf/phymars

文件定位

paleoclimate_mod.F90 是古气候和 lag-layer 路径的共享状态模块。它本身不实现物理通量公式,而是集中保存 conf_phys.F 读取的古气候开关,以及按 (ngrid, nslope) 分配的地下 H2O/CO2 冰深度、地下水扩散系数和地下冰交互总通量缓存。后续初始化、重启读写、newstart 坡面重映射和 vdifc 水冰交换路径都通过这些 module 变量传递状态。

定义的符号

符号 类型 行号 作用
paleoclimate_mod module 1 古气候共享状态模块
paleoclimate logical module variable 13 是否启用古气候相关处理,由 conf_phys.F 读取
lag_layer logical module variable 14 是否启用 lag-layer 路径,由 conf_phys.F 读取
include_waterbuoyancy logical module variable 15 是否在水冰升华相关计算中考虑水汽浮力,由 conf_phys.F 读取
h2oice_depth allocatable module array 18 最浅 H2O 冰层深度,维度 (ngrid, nslope),单位 m
co2ice_depth allocatable module array 19 最浅 CO2 冰层深度,维度 (ngrid, nslope),单位 m
zdqsdif_ssi_tot allocatable module array 20 地下冰交互总通量缓存,维度 (ngrid, nslope),单位 kg/m^2/s
coef_ssdif allocatable module array 21 地下水扩散系数,维度 (ngrid, nslope)
ini_paleoclimate subroutine 28 ngrid, nslope 分配四个古气候数组
end_paleoclimate subroutine 44 释放已经分配的古气候数组

依赖的模块

use 模块 only 列表 用途 待确认
(无) - 本文件没有 use 依赖 -

调用的关键例程

被调用例程 所在模块 / 文件 调用位置 作用
(无外部调用) - - 本模块只分配/释放自身数组,不调用外部例程

输入

输入 来源 类型/维度 单位 含义
ngrid ini_paleoclimate 调用方 integer - 物理网格点数
nslope ini_paleoclimate 调用方 integer - 次网格坡面数量
paleoclimate conf_phys.F 读取 callphys.def logical - 控制 paleoclimate 重启字段读写和相关路径
lag_layer conf_phys.F 读取 callphys.def logical - 控制 vdifc 中 lag-layer 阻力/通量路径
include_waterbuoyancy conf_phys.F 读取 callphys.def logical - 控制 PBL/交换系数中水汽浮力修正路径

输出

输出 去向 类型/维度 单位 含义
h2oice_depth(ngrid,nslope) phyetat0_modvdifc_modphyredemnewstart.F real array m 最浅 H2O 冰层深度;默认缺省值见 phyetat0_mod
co2ice_depth(ngrid,nslope) phyetat0_modphyredemnewstart.F real array m 最浅 CO2 冰层深度
coef_ssdif(ngrid,nslope) phyetat0_modvdifc_modphyredemnewstart.F real array - 地下水扩散系数;缺省值由 phyetat0_mod 设为 4.e-4
zdqsdif_ssi_tot(ngrid,nslope) vdifc_mod、诊断输出路径 real array kg/m^2/s vdifc 中累计的地下冰交互总通量

共享状态与副作用

核心逻辑

  1. conf_phys.F 读取 lag_layerpaleoclimateinclude_waterbuoyancy 三个配置开关;其中 include_waterbuoyancy 为真但 paleoclimate 为假时会中止。
  2. phys_state_var_init_mod.F90 在初始化物理状态变量时先调用 end_paleoclimate,再调用 ini_paleoclimate(ngrid, nslope) 分配数组。
  3. phyetat0_mod.F90paleoclimate 为真时从物理 start/restart 字段读取古气候数组;缺字段时给 h2oice_depth/co2ice_depth 等设置缺省值。
  4. vdifc_mod.F 根据 lag_layerh2oice_depthcoef_ssdif 计算地下冰相关阻力和水通量,并更新 zdqsdif_ssi_tot
  5. phyredem.F90paleoclimate 为真时把持久 CO2 冰和古气候数组写入重启文件;newstart.F 在坡面数量改变时保存旧数组、重分配并重映射到新坡面布局。

伪代码

MODULE paleoclimate_mod
  保存 paleoclimate、lag_layer、include_waterbuoyancy 三个线程私有开关
  保存 h2oice_depth、co2ice_depth、zdqsdif_ssi_tot、coef_ssdif 四个线程私有数组

SUBROUTINE ini_paleoclimate(ngrid, nslope)
  allocate h2oice_depth(ngrid, nslope)
  allocate co2ice_depth(ngrid, nslope)
  allocate zdqsdif_ssi_tot(ngrid, nslope)
  allocate coef_ssdif(ngrid, nslope)

SUBROUTINE end_paleoclimate()
  对每个数组:
    if allocated then deallocate

参与的主题流程

主题 参与方式
古气候 / lag-layer 保存 paleoclimatelag_layer 开关和地下冰深度/扩散系数
水循环 vdifc 使用 h2oice_depthcoef_ssdifzdqsdif_ssi_tot 计算地下冰与大气/霜之间的水交换
CO2 循环 co2ice_depthperennial_co2ice restart 路径一起描述古气候 CO2 冰状态
边界层交换 include_waterbuoyancypbl_parameters_modvdif_cd_mod 用于水汽浮力修正路径

写法特点

已确认初始化与使用链

文件 位置 作用
conf_phys.F 42-43, 433-465 读取 lag_layerpaleoclimateinclude_waterbuoyancy,并强制 include_waterbuoyancy 依赖 paleoclimate
phys_state_var_init_mod.F90 65, 195-197 调用 end_paleoclimateini_paleoclimate(ngrid,nslope)
phyetat0_mod.F90 39, 902-953 paleoclimate 读取或缺省初始化 h2oice_depthco2ice_depthcoef_ssdif
phyredem.F90 208-212, 258, 389-392 paleoclimate 写出常年 CO2 冰和古气候地下冰 restart 字段
vdifc_mod.F 36-37, 315, 1090-1192, 1268, 1402-1407 读取 lag-layer 状态并累计/输出地下冰交互通量
dynphy_lonlat/phymars/newstart.F 62-63, 1852-1901 坡面数量变化时保存、重分配并重映射古气候数组
pbl_parameters_mod.F90 29, 204-208 使用 include_waterbuoyancy 控制水汽浮力修正
vdif_cd_mod.F90 23, 171-176 使用 include_waterbuoyancy 控制交换系数中的水汽浮力修正

复现要点

待确认

相关页面