例程索引
本页有两层入口:先列 routines/ 目录下的例程级专题页,再从 symbol-index 摘录所有 subroutine / function 记录,方便从导航栏直接反查具体例程。
例程专题页
| 页面 | 说明 |
|---|---|
| co2condens-scavenging.md | co2condens 中 CO2 凝结清除尘埃/水冰的局部路径。 |
| co2condens.md | CO2 地表/大气凝结主例程。 |
| dust_coagulation_main.md | 尘埃凝并主例程和 Smoluchowski 半隐式离散。 |
| initracer-co2-tracers.md | initracer 中 CO2/CO2 ice/CCNCO2 tracer 识别和一致性检查。 |
| physiq-co2-cycle-callpoints.md | physiq 中 CO2 云、CO2 凝结和 tendency 注入调用点。 |
| physiq-water-cycle-callpoints.md | physiq 中水云、沉降和水循环 tendency 注入调用点。 |
| vdifc-water-surface-exchange.md | vdifc 中水汽地表交换、地下冰/吸附水和坡面通量路径。 |
例程与函数反查表
本表共收录 314 条 subroutine / function 记录。内容摘录自 symbol-index,相关页面链接保持指向对应文件页、主题页或例程专题页。
| 例程/函数 | 类型 | 源码位置 | 说明 | 相关页面 |
|---|---|---|---|---|
conf_phys |
subroutine | libf/phymars/conf_phys.F |
读取 callphys.def/radia.def 风格配置,设置物理开关、气溶胶 scatterer 名称和长波参数,并执行配置依赖校验。 |
conf_phys, callkeys_mod |
ini_scatterers |
subroutine | libf/phymars/dimradmars_mod.F90 |
按 naerkind 分配 aerosol 和气溶胶光学查找表,并清空 name_iaer 等待 conf_phys 填充。 |
dimradmars_mod, conf_phys |
callradite |
subroutine | libf/phymars/callradite_mod.F |
识别并校验 scatterer,准备气溶胶粒径/光学厚度,按子域调用 lwmain 和 swmain,输出 LTE 层辐射加热率和地表/顶层通量。 |
callradite_mod, physiq_mod, radiation |
lwmain |
subroutine | libf/phymars/lwmain_mod.F |
调用 lwb/lwu/lwxd/lwxn/lwxb/lwflux/lwi,输出长波冷却率、地表下行长波通量、顶层 OLR 和 netrad。 |
lwmain_mod, lwb, lwu, lwflux, lwi |
SWMAIN / swmain |
subroutine | libf/phymars/swmain_mod.F |
在 nlaylte 层内按两太阳谱段调用 SWR_FOUQUART 或 SWR_TOON,输出短波上下行通量和短波加热率。 |
swmain_mod, swr_fouquart, swr_toon |
init_time |
subroutine | libf/phymars/time_phylmdz_mod.F90 |
写入运行起止日、初始时刻、sol 长度和物理时间步,并用 nint(daysec/dtphys) 派生 steps_per_sol。 |
time_phylmdz_mod, phys_state_var_init_mod |
writediagfi |
subroutine | libf/phymars/writediagfi.F |
传统 diagfi.nc 写入后端,按 dim=0/1/2/3 创建并追加诊断变量。 |
writediagfi, write_output_mod |
writediagmicrofi |
subroutine | libf/phymars/writediagmicrofi.F |
传统微物理子步诊断写入后端,按 dim=0/1/2/3 创建并追加带 microtime 维的变量。 |
writediagmicrofi, writediagfi |
wstats |
subroutine | libf/phymars/wstats_mod.F90 |
按 istime=12 个日内时刻槽位累加诊断字段和平方和。 |
wstats_mod, physiq-water-cycle-callpoints, physiq-co2-cycle-callpoints |
mkstats |
subroutine | libf/phymars/wstats_mod.F90 |
运行结束时把 stats.nc 中的累加量原地转换为均值和标准差。 |
wstats_mod |
initialize_xios_output |
subroutine | libf/phymars/xios_output_mod.F90 |
设置 XIOS 轴、domain、calendar、起始时间并关闭定义阶段。 | xios_output_mod, xios-config |
update_xios_timestep |
subroutine | libf/phymars/xios_output_mod.F90 |
设置当前 XIOS context,递增 time_it 并推进 calendar。 |
xios_output_mod |
xios_is_active_field |
function | libf/phymars/xios_output_mod.F90 |
查询 XIOS field 是否激活并广播结果;当前 write_output_mod 中活跃性检查被注释。 |
xios_output_mod, write_output_mod |
convadj |
subroutine | libf/phymars/convadj.F |
在 physiq 的 calladj 分支中混合不稳定层段,返回风、焓和 tracer 对流调整 tendency。 |
convadj |
mucorr |
subroutine | libf/phymars/mucorr.F |
根据太阳赤纬和纬度计算日平均等效太阳角 mu0 与日照比例 fract;physiq 在 diurnal=.false. 时调用。 |
mucorr, radiation |
orbite |
subroutine | libf/phymars/orbite.F |
用 zls/pls、planete_h 轨道参数和倾角计算 dist_sol 与 declin;physiq 在 callrad 分支调用。 |
orbite, radiation |
lsp2solp |
subroutine | libf/phymars/planete_h.F90 |
由近日点太阳经度反推近日点 sol,并同步重算 e_elips。 |
planete_h |
iniorbit |
subroutine | libf/phymars/planete_h.F90 |
根据 aphelie/periheli/year_day/peri_day 计算 e_elips/p_elips/lsperi,供 solarlong 和 orbite 读取。 |
planete_h, orbite |
solarlong |
subroutine | libf/phymars/solarlong.F |
由 sol 日期、近日点日期和椭圆轨道参数计算弧度制太阳经度 Ls。 |
solarlong, orbite |
NIR_leedat |
subroutine | libf/phymars/nirdata.F90 |
从 datadir/NIRcorrection_feb2011.dat 读取 42 层修正表,并在非 MESOSCALE 路径广播表数组。 |
nirdata |
MZESC110 |
subroutine | libf/phymars/nlte_calc.F |
在 CTS 网格上计算 110 跃迁 escape probability 光学厚度 taustar11_cts。 |
nlte_calc, nlte_aux |
MZTUD110 / MZCUD110 |
subroutine | libf/phymars/nlte_calc.F |
计算 110 主带 tau/tauinf 并转换为 Curtis matrix c110 和边界向量 vc110。 |
nlte_calc |
MZMC121 / MZTUD121 / MZCUD121 |
subroutine | libf/phymars/nlte_calc.F |
计算并合成 121 热带三个子带的 Curtis matrix c121 和边界向量 vc121。 |
nlte_calc |
MZESC121 / MZESC121sub |
subroutine | libf/phymars/nlte_calc.F |
计算并归一化 121 热带三个子带的 escape probability taustar12。 |
nlte_calc |
MZTVC121 / MZTVC121sub |
subroutine | libf/phymars/nlte_calc.F |
计算并合成 121 热带边界向量 vc121。 |
nlte_calc |
nlte_setup |
subroutine | libf/phymars/nlte_setup.F |
读取 NLTEDAT 谱线、Tstar/VC 和历史谱线表,初始化 NLTE 共享表状态。 |
nlte_setup, nlte_commons_h |
LeeHISTOGRMS |
subroutine | libf/phymars/nlte_setup.F |
逐个设置 hid26-1..4.dat 历史谱线表路径,并调用 rhist_03 读入缓存。 |
nlte_setup, nlte_aux |
GETK_dlvr11 |
subroutine | libf/phymars/nlte_setup.F |
按温度计算 k19/k20/k21/k33 碰撞速率族,供 nlte_tcool_mod.F 的 NLTE cooling-time 计算使用。 |
nlte_setup |
nlte_tcool |
subroutine | libf/phymars/nlte_tcool_mod.F |
从 GCM 压强、温度、高度和 CO2/N2/CO/O 剖面计算 NLTE CO2 15 微米冷却率,输出 K/day。 | nlte_tcool_mod |
NLTEdlvr11_ZGRID |
subroutine | libf/phymars/nlte_tcool_mod.F |
根据 Pbottom_atm/Ptop_atm 构造 NLTE 主网格、细网格、CTS 网格和 CTS 细网格,并写入 nlte_commons_h。 |
nlte_tcool_mod |
NLTEdlvr11_CZALU |
subroutine | libf/phymars/nlte_tcool_mod.F |
组装并求解 CO2 同位素振动态耦合矩阵,生成 hr110/hr210/hr310/hr410/hr121 冷却率。 |
nlte_tcool_mod |
NLTEdlvr11_FB626CTS |
subroutine | libf/phymars/nlte_tcool_mod.F |
在 CTS 延伸网格上计算 626 组分高层 hr110CTS,用于与主网格冷却率拼接。 |
nlte_tcool_mod |
hrkday_convert |
function | libf/phymars/nlte_tcool_mod.F |
使用 daysec、n_avog、平均热容和平均分子量把体积冷却功率换算为 K/day 因子。 |
nlte_tcool_mod |
ERRORS |
subroutine | libf/phymars/nlte_tcool_mod.F |
打印 NLTE 错误编号对应的诊断并调用 abort_physic("nlte_tcool",...) 终止;也被 nlte_calc.F 复用。 |
nlte_tcool_mod, nlte_calc |
nltecool |
subroutine | libf/phymars/nltecool.F |
从 GCM 压强、温度和可选动态 tracer 成分计算 NLTE CO2 15 微米温度倾向,输出 K/s。 | nltecool |
interp1 / interp3 |
subroutine | libf/phymars/nltecool.F |
将本文件内置 escape function 与 VMR 压强表线性插值到 GCM 层压强。 | nltecool |
nlthermeq |
subroutine | libf/phymars/nlthermeq.F |
根据 pminte、callnlte 和当前压强剖面确定 LTE 辐射计算到的层索引 nlaylte。 |
nlthermeq, nlteparams_h, blendrad |
planckdp |
function | libf/phymars/nlte_aux.F |
NLTE cooling-time 路径使用的双精度 Planck 辅助函数。 | nlte_aux |
rhist_03 |
subroutine | libf/phymars/nlte_aux.F |
读取 NLTE 历史谱线表 hisfile,检查 nbox_max,并在非 MESOSCALE 路径广播缓存数组。 |
nlte_aux |
gethist_03 |
subroutine | libf/phymars/nlte_aux.F |
把已缓存的历史谱线表恢复为当前 thist/no/sk1/xls1/xld1 工作数组。 |
nlte_aux |
interstrhunt / intershphunt |
subroutine | libf/phymars/nlte_aux.F |
按温度历史表插值 NLTE 谱线强度、self Lorentz 线宽和 Doppler 线宽。 | nlte_aux |
intzhunt / intzhunt_cts |
subroutine | libf/phymars/nlte_aux.F |
在高度网格上插值 CO2、压力、混合比和温度等 NLTE 状态量。 | nlte_aux |
LUdec |
subroutine | libf/phymars/nlte_aux.F |
调用 LU 分解和回代,求解 NLTE cooling-time 相关矩阵方程。 | nlte_aux |
flusv |
subroutine | libf/phymars/flusv.F |
组装并求解双流红外散射边值问题,返回层界向上/向下通量;lwdiff 当前以 nsf=0 调用。 |
flusv |
sys3v |
subroutine | libf/phymars/flusv.F |
flusv 内部使用的向量化三对角线性系统求解器。 |
flusv |
lwb |
subroutine | libf/phymars/lwb.F |
按谱带多项式系数计算 bsurf/btop/blev/blay/dblay/dbsublay,供 lwmain 后续 lwflux 和 lwi 使用。 |
lwb |
lwdiff |
subroutine | libf/phymars/lwdiff.F |
对 iir=3:nir 带外谱段构造双倍扩散子层,调用 flusv 并把上下行通量回填给 lwflux。 |
lwdiff, flusv |
lwflux |
subroutine | libf/phymars/lwflux.F |
合并 CO2 带内净交换率与 lwdiff 带外扩散通量,输出 netrad、coolrate、fluxground 和 fluxtop。 |
lwflux, lwdiff |
lwi |
subroutine | libf/phymars/lwi.F |
用 netrad、dblay、dp 和 CO2 净交换率表组装三对角系统,求解半隐式长波冷却率 newcoolrate。 |
lwi |
lwtt |
subroutine | libf/phymars/lwtt.F |
用 Voigt 等效吸收量、Padé 近似和 Horner 算法计算 CO2 长波透过率 tr。 |
lwtt |
ini_yomlw_h |
subroutine | libf/phymars/yomlw_h.F90 |
分配 xi/xi_ground/xi_emis 并初始化 xp/at/bt/ga/gb/cst_voigt 固定系数表。 |
yomlw_h, phys_state_var_init_mod |
end_yomlw_h |
subroutine | libf/phymars/yomlw_h.F90 |
释放长波交换率缓存数组,供物理状态重初始化前调用。 | yomlw_h, phys_state_var_init_mod |
lwu |
subroutine | libf/phymars/lwu.F |
生成 CO2 累积吸收量 co2_u/co2_up、气溶胶透过率 aer_t 和总单散射参数 tautotal/omegtotal/gtotal。 |
lwu |
lwxb |
subroutine | libf/phymars/lwxb.F |
计算地面/空间边界相关传输函数差分,并把边界净交换率写入 yomlw_h::xi。 |
lwxb, lwtt |
lwxd |
subroutine | libf/phymars/lwxd.F |
计算非相邻真实层对的传输函数差分,并把远距离净交换率写入 yomlw_h::xi。 |
lwxd, lwtt |
lwxn |
subroutine | libf/phymars/lwxn.F |
用可配置子层积分计算相邻层净交换率,并写入 yomlw_h::xi 与 xi_ground。 |
lwxn, lwtt |
aeroptproperties |
subroutine | libf/phymars/aeroptproperties.F |
由 callradite 在 aeropacity 前调用,输出 QVISsQREF3d/omegaVIS3d/gVIS3d、QIRsQREF3d/omegaIR3d/gIR3d 与 QREFvis3d/QREFir3d。 |
aeroptproperties, aeropacity_mod |
aeropacity |
subroutine | libf/phymars/aeropacity_mod.F |
由 callradite 调用,按 iaervar 取场景柱厚度,逐种气溶胶逐层算可见光光学厚度 aerosol/柱厚度 tau/taucloudtes,产出 dso 诊断并调 compute_dustscaling。 |
aeropacity_mod, calcstormfract_mod |
compute_dtau |
subroutine | libf/phymars/compute_dtau_mod.F90 |
按每日 t_scenario_sol 更新 dtau,并用 coeff_injection/(daysec*(tf-ti)) 计算地表尘埃注入速率 dustliftday。 |
compute_dtau_mod |
read_dust_scenario |
subroutine | libf/phymars/read_dust_scenario_mod.F90 |
按 zday、GCM 经纬度和 IRtoVIScoef 输出参考气压处的可见光场景柱厚度 tau_pref_scenario。 |
read_dust_scenario_mod, compute_dtau_mod, dust_rad_adjust_mod |
compute_dust_rad_adjust |
subroutine | libf/phymars/dust_rad_adjust_mod.F90 |
读取次日场景柱厚度,按 tau_pref_scenario_next*pplev/odpref/taudust 生成目标比并在两日间线性插值。 |
dust_rad_adjust_mod, dust_scaling_mod |
compute_dustscaling |
subroutine | libf/phymars/dust_scaling_mod.F90 |
由 aeropacity 调用,计算 taudust、更新 tauscaling 或 dust_rad_adjust 并就地缩放 aerosol。 |
dust_scaling_mod, aeropacity_mod |
dust_windstress_lift |
subroutine | libf/phymars/dust_windstress_lift.F90 |
在 windstress_lift_scheme=0 下用摩擦速度阈值和 White(1979) 水平通量计算 dqslift,CO2 冰覆盖时不注入。 |
dust_windstress_lift |
dustdevil |
subroutine | libf/phymars/dustdevil.F90 |
由 physiq 在 callddevil 下调用,用固定 wind=15 的感热通量估 devila,生成 pdqs_dev 和边界层内 pdqdev。 |
dustdevil, dust_param_mod |
geticecover |
subroutine | libf/phymars/geticecover.F90 |
按 Ls、经度、纬度逐点返回 0/1 极冠覆盖;physiq 的 tituscap 分支调用它覆盖 qsurf_tmp(:,igcm_co2)。 |
geticecover |
growthrate |
subroutine | libf/phymars/growthrate.F |
计算热阻、扩散阻、Knudsen 修正和水汽扩散系数,输出 res 供 improvedclouds 隐式冰增长公式使用。 |
growthrate |
nuclea |
subroutine | libf/phymars/nuclea.F |
按水汽分压、温度、饱和比和各尘核 bin 数量计算水冰成核率 nucrate,由 improvedclouds 用于 dust->CCN 转换。 |
nuclea, improvedclouds_mod |
def_var |
subroutine | libf/phymars/def_var.F90 |
传统 NetCDF 变量定义辅助例程;调用 NF_REDEF、NF_DEF_VAR、NF_PUT_ATT_TEXT 和 NF_ENDDEF 创建 NF_FLOAT 变量并写 title/units 属性。 |
def_var, writediagsoil |
Init_dimphy |
subroutine | libf/phymars/dimphy.F90 |
用调用方传入的 klon0/klev0 初始化本地列数和垂直层数派生维度;1D testphys 路径调用 init_dimphy(1,nlayer)。 |
dimphy |
watercloud |
subroutine | libf/phymars/watercloud_mod.F |
水冰云形成主例程;按 microphys 分派 simpleclouds/improvedclouds,汇总 tendency、半径和沉降参数。 |
watercloud_mod, water-cycle |
ini_watercloud_mod |
subroutine | libf/phymars/watercloud_mod.F |
分配 zdqcloud / zdqscloud。 |
watercloud_mod |
end_watercloud_mod |
subroutine | libf/phymars/watercloud_mod.F |
释放 zdqcloud / zdqscloud。 |
watercloud_mod |
simpleclouds |
subroutine | libf/phymars/simpleclouds_mod.F |
microphys=.false. 时由 watercloud 调用;做瞬时饱和调整,无显式成核动力学。 |
simpleclouds_mod, watercloud_mod |
improvedclouds |
subroutine | libf/phymars/improvedclouds_mod.F90 |
水冰成核、冰增长/升华、尘核释放、HDO 分馏主例程。 | improvedclouds_mod |
adapt_imicro |
subroutine | libf/phymars/improvedclouds_mod.F90 |
按可凝结量估算水云微物理自适应子步数。 | improvedclouds_mod |
watersat |
subroutine | libf/phymars/watersat_mod.F90 |
给定温度和压力计算水饱和质量混合比。 | water-saturation-helpers |
tcondwater |
subroutine | libf/phymars/tcondwater.F90 |
给定压力和水质量混合比反推水凝结温度。 | water-saturation-helpers |
soilwater |
subroutine | libf/phymars/soilwater.F90 |
地下水汽、地下冰和吸附水的一维吸附-扩散-相变求解器;由 vdifc 水汽段调用。 |
soilwater, vdifc-water-surface-exchange, water-cycle |
waterice_tifeedback |
subroutine | libf/phymars/waterice_tifeedback_mod.F90 |
由地表水冰量或孔隙冰填充率计算新的土壤热惯量廓线。 | waterice_tifeedback_mod |
hdo_surfex |
subroutine | libf/phymars/hdo_surfex_mod.F |
基于 H2O 通量和同位素分馏计算 HDO 地表通量;由 vdifc 调用。 |
hdo_surfex_mod, vdifc-water-surface-exchange |
iniwrite |
subroutine | libf/phymars/iniwrite.F |
初始化传统 diagfi / diagmicrofi NetCDF 文件的维度、坐标变量、控制参数和固定字段。 |
iniwrite, def_var |
interp_line |
subroutine | libf/phymars/interp_line.F |
在有序源数据点之间进行线性插值,超出范围时使用最近边界值;由 soil_settings 和 lect_start_archive 调用。 |
interp_line, soil_settings |
open_startphy |
subroutine | libf/phymars/iostart.F90 |
打开 startfi.nc 初始场文件。 |
iostart |
close_startphy |
subroutine | libf/phymars/iostart.F90 |
关闭 startfi.nc 文件。 |
iostart |
open_restartphy |
subroutine | libf/phymars/iostart.F90 |
创建或打开 restartfi.nc 重启文件。 |
iostart |
close_restartphy |
subroutine | libf/phymars/iostart.F90 |
关闭 restartfi.nc 文件。 |
iostart |
atke_compute_km_kh |
subroutine | libf/phymars/lmdz_atke_exchange_coeff.F90 |
计算湍流 Km/Kh 交换系数和 TKE 演化。 | lmdz_atke_exchange_coeff |
atke_vdiff_tke |
subroutine | libf/phymars/lmdz_atke_exchange_coeff.F90 |
TKE 的垂直扩散(隐式三对角求解)。 | lmdz_atke_exchange_coeff |
atke_ini |
subroutine | libf/phymars/lmdz_atke_turbulence_ini.F90 |
读取 ATKE 配置键、缓存行星常数和黏性系数,并派生稳定度函数参数。 | lmdz_atke_turbulence_ini |
call_atke |
subroutine | libf/phymars/lmdz_call_atke.F90 |
ATKE 主调用例程,协调核心计算和可选的显式风切变预测。 | lmdz_call_atke |
atke_explicit_prediction |
subroutine | libf/phymars/lmdz_call_atke.F90 |
显式风切变预测,用于前向-后向时间步进。 | lmdz_call_atke |
co2cloud |
subroutine | libf/phymars/co2cloud_mod.F90 |
CO2 云形成主例程;调用 improvedCO2clouds,在内部处理 CO2 cloud tracer 沉降与非负保护。 |
co2cloud_mod, physiq-co2-cycle-callpoints |
improvedCO2clouds |
subroutine | libf/phymars/improvedco2clouds_mod.F90 |
CO2 冰成核、增长/升华和 CCN 释放主例程。 | improvedco2clouds_mod |
tcondco2 |
subroutine | libf/phymars/tcondco2.F90 |
给定压力和 CO2 质量混合比反推 CO2 凝结温度。 | co2-saturation-helpers, co2-cycle |
co2condens |
subroutine | libf/phymars/co2condens_mod.F |
CO2 地表/大气凝结主调度;处理表压变化、地表 CO2 冰和 sigma 层校正。 | co2condens, co2-cycle |
scavenging_by_co2 |
subroutine | libf/phymars/co2condens_mod.F |
CO2 凝结清除尘埃/水冰的 section 例程。 | co2condens-scavenging, co2condens |
vl1d |
subroutine | libf/phymars/co2condens_mod.F |
co2condens 内部 Van Leer 1D 垂直输送算子。 |
co2condens |
co2snow |
subroutine | libf/phymars/co2snow.F |
根据 CO2 雪沉积修正地表红外发射率。 | co2snow, co2condens |
albedocaps |
subroutine | libf/phymars/albedocaps.F90 |
根据裸地、多年 CO2 冰和当前 CO2 霜状态设置 psolaralb 与 emisref。 |
albedocaps, co2condens |
read_TES_icecap_albedo |
subroutine | libf/phymars/albedocaps.F90 |
读取南/北半球 TES 极冠反照率 NetCDF 表并广播。 | albedocaps |
TES_icecap_albedo |
subroutine | libf/phymars/albedocaps.F90 |
按 Ls、经度、纬度对 TES 极冠反照率表插值,并施加半球系数与上限。 | albedocaps |
density_co2_ice |
function | libf/phymars/density_co2_ice.F90 |
用温度计算 CO2 冰密度。 | density_co2_ice, co2-cycle |
nucleaco2 |
subroutine | libf/phymars/nucleaco2.F90 |
计算 CO2 冰异质成核率;尘埃、流星尘、水冰核路径均会调用。 | nucleaco2, improvedco2clouds_mod |
massflowrateco2 |
function | libf/phymars/massflowrateco2.F90 |
计算单个 CO2 冰粒质量增长/升华通量。 | massflowrateco2, improvedco2clouds_mod |
callsedim |
subroutine | libf/phymars/callsedim_mod.F |
按 tracer 类型调度重力沉降;水冰沉降通过此路径进入 newsedim。 |
callsedim_mod, dust-cycle, water-cycle |
newsedim |
subroutine | libf/phymars/newsedim_mod.F |
计算 Stokes + Cunningham 下落速度,调用 vlz_fi 完成垂直输运。 |
newsedim_mod, callsedim_mod |
vlz_fi |
subroutine | libf/phymars/vlz_fi.F |
已知界面输运质量 w 后,更新 tracer 混合比并返回通量 wq。 |
vlz_fi, newsedim_mod |
updaterice_micro |
subroutine | libf/phymars/updaterad.F90 |
水冰微物理活跃时,由冰/CCN 质量数浓度更新水冰半径和云密度。 | updaterad, improvedclouds_mod |
updaterice_microco2 |
subroutine | libf/phymars/updaterad.F90 |
CO2 冰微物理半径与云密度反演。 | updaterad, co2cloud_mod |
updaterice_typ |
subroutine | libf/phymars/updaterad.F90 |
微物理关闭时,用典型廓线推算水冰半径。 | updaterad, simpleclouds_mod |
updaterdust |
subroutine | libf/phymars/updaterad.F90 |
由尘埃质量/数浓度更新尘埃几何平均半径。 | updaterad, dust-cycle |
updaterccn |
subroutine | libf/phymars/updaterad.F90 |
水云微物理用 CCN 质量平均半径反演。 | updaterad, improvedclouds_mod |
updaterccnCO2 |
subroutine | libf/phymars/updaterad.F90 |
CO2 云微物理用 CCN 半径反演。 | updaterad, improvedco2clouds_mod |
updatereffrad |
subroutine | libf/phymars/updatereffrad_mod.F |
由 callradite 调用,更新尘埃、水冰、CO2 冰等气溶胶的辐射有效半径和有效方差。 |
updatereffrad_mod, aeroptproperties |
dust_coagulation_main |
subroutine | libf/phymars/dust_coagulation_mod.F90 |
尘埃凝并主例程;已有例程页。 | dust_coagulation_main, dust_coagulation_mod |
calcstormfract |
subroutine | libf/phymars/calcstormfract_mod.F90 |
根据 stormdust_mass 垂直廓线计算 totstormfract,供辐射和 rocket dust storm 输运使用。 |
calcstormfract_mod, rocketduststorm_mod |
call_dayperi |
subroutine | libf/phymars/call_dayperi.F |
根据近日点太阳经度、偏心率和火星年长度计算 peri_day。 |
call_dayperi, testphys1d-config |
disvert_noterre |
subroutine | libf/phymars/dyn1d/disvert_noterre.F -> LMDZ.COMMON/libf/dyn3d_common/disvert_noterre.F |
非地球垂直离散构造例程;读取 esasig.def 或 z2sig.def,按 hybrid 生成 ap/bp/aps/bps/presnivs/pseudoalt。 |
disvert_noterre |
sig_hybrid |
subroutine | libf/phymars/dyn1d/disvert_noterre.F -> LMDZ.COMMON/libf/dyn3d_common/disvert_noterre.F |
从目标 sigma 位置反解 hybrid newsig 的辅助迭代例程。 |
disvert_noterre |
infotrac_init |
subroutine | libf/phymars/dyn1d/infotrac.F90 -> LMDZ.COMMON/libf/dyn3d_common/infotrac.F90 |
公共 3D tracer 初始化例程;读取 traceur.def/modern planetary 格式并构造 tname/ttext/iadv/niadv。 |
infotrac |
init_testphys1d |
subroutine | libf/phymars/dyn1d/init_testphys1d_mod.F90 |
读取配置、tracer、restart/profile,初始化时间、垂直坐标、几何、坡面、地表、土壤、化学和水 profile 控制状态。 | init_testphys1d_mod, testphys1d-config |
init_interface_dyn_phys |
subroutine | libf/phymars/dyn1d/mod_interface_dyn_phys.F90 -> LMDZ.COMMON/libf/dynphy_lonlat/mod_interface_dyn_phys.F90 |
初始化 index_i/index_j;非 CPP_PARA 时为空例程。 |
mod_interface_dyn_phys, init_testphys1d_mod |
init_parallel |
subroutine | libf/phymars/dyn1d/parallel_lmdz.F90 -> LMDZ.COMMON/libf/dyn3dpar/parallel_lmdz.F90 |
初始化 COMM_LMDZ 上的 rank/size、纬向带分配、输出文件、极点标志和 OpenMP chunk;testphys1d 直接调用。 |
parallel_lmdz, mod_const_mpi |
exchange_hallo |
subroutine | libf/phymars/dyn1d/parallel_lmdz.F90 -> LMDZ.COMMON/libf/dyn3dpar/parallel_lmdz.F90 |
按 up/down halo 行数和极点标志在相邻 MPI rank 之间非阻塞交换边界行。 |
parallel_lmdz |
profile_temp |
subroutine | libf/phymars/dyn1d/profile_temp_mod.F90 |
按 ichoice/tref/isin/pic/largeur/hauteur 生成温度廓线,可读取 profile_temp 文件并写出 profile_temp.out。 |
profile_temp_mod, init_testphys1d_mod |
read_profile |
subroutine | libf/phymars/dyn1d/read_profile_mod.F90 |
读取 profile_<tracer> 文件并填充 qsurf/q,缺文件时处理 CO2、HDO 和 dust 默认初始化。 |
read_profile_mod, init_testphys1d_mod |
writerestart1D |
subroutine | libf/phymars/dyn1d/writerestart1D_mod.F90 |
覆盖写出 restart1D.txt,记录 ps、逐 tracer profile、u/v 和 teta。 |
writerestart1D_mod, testphys1d |
calldrag_noro |
subroutine | libf/phymars/calldrag_noro_mod.F90 |
按 zstd 阈值筛选格点,分子域调用 drag_noro 并返回地形 GW tendency。 |
calldrag_noro_mod, testphys1d-config |
drag_noro |
subroutine | libf/phymars/drag_noro_mod.F90 |
翻转垂直层序并调用 ORODRAG,把返回的温度/风 tendency 转为每步增量并累加低层 stress。 |
drag_noro_mod, calldrag_noro_mod |
SUGWD |
subroutine | libf/phymars/sugwd.F90 |
根据半层 sigma 坐标初始化 yoegwd_h 中的 NKTOPG、drag 系数、Richardson 数阈值和安全下限。 |
sugwd, orosetup, gwstress_mod, gwprofil_mod |
ini_surfdat_h |
subroutine | libf/phymars/surfdat_h.F90 |
按 ngrid,nq,nslope 分配完整地表共享数组。 |
surfdat_h |
end_surfdat_h |
subroutine | libf/phymars/surfdat_h.F90 |
释放完整地表共享数组。 | surfdat_h |
ini_surfdat_h_slope_var |
subroutine | libf/phymars/surfdat_h.F90 |
只分配依赖坡面维度的地表数组。 | surfdat_h |
end_surfdat_h_slope_var |
subroutine | libf/phymars/surfdat_h.F90 |
只释放依赖坡面维度的地表数组。 | surfdat_h |
surfini |
subroutine | libf/phymars/surfini_mod.F90 |
初始化 watercaptag/dryness 并按配置定位水冰帽。 |
surfini_mod |
locate_watercaptag |
subroutine | libf/phymars/surfini_mod.F90 |
用手工经纬度边界为任意分辨率定位水冰帽。 | surfini_mod |
SWR_FOUQUART |
subroutine | libf/phymars/swr_fouquart.F |
合成 aerosol/Rayleigh 光学参数并计算短波上下通量。 | swr_fouquart, cvmgt |
SWR_TOON |
subroutine | libf/phymars/swr_toon.F |
合成 aerosol/Rayleigh 光学参数并调用 GFLUXV 计算短波通量。 |
swr_toon, cvmgt |
GFLUXV |
subroutine | libf/phymars/swr_toon.F |
单列 delta-Eddington / Meador-Weaver two-stream 通量求解器。 | swr_toon |
swrayleigh |
subroutine | libf/phymars/swrayleigh.F |
用 CRAY 多项式和修正太阳天顶角余弦计算 prayl;当前 Mars 压力缩放行被注释。 |
swrayleigh, swr_fouquart, swr_toon |
tabfi |
subroutine | libf/phymars/tabfi.F |
从 controle 数组或默认路径初始化物理常数、轨道量和地表参数,并调用 iniorbit。 |
tabfi, planete_h |
ORODRAG |
subroutine | libf/phymars/orodrag_mod.F90 |
调用 OROSETUP/GWSTRESS/GWPROFIL 后,把 ZTAU stress profile 和阻塞层 wake drag 转换为 U/V/T tendency。 |
orodrag_mod, gwstress_mod, gwprofil_mod |
OROSETUP |
subroutine | libf/phymars/orosetup.F90 |
计算 ORODRAG 所需的地形高度层索引、低层风、稳定度、密度、方向投影和阻塞层参数。 |
orosetup, orodrag_mod |
GWPROFIL |
subroutine | libf/phymars/gwprofil_mod.F90 |
在 ORODRAG 内根据临界层、波破碎判据和阻塞层插值改写 ZTAU 半层应力廓线。 |
gwprofil_mod |
GWSTRESS |
subroutine | libf/phymars/gwstress_mod.F90 |
在 ORODRAG 内按方程 (17) 计算底层半层 ZTAU(:,nlayer+1) 的地形重力波应力。 |
gwstress_mod |
NONORO_GWD_MIX |
subroutine | libf/phymars/nonoro_gwd_mix_mod.F90 |
计算非地形重力波诱导的温度、纬向风和 tracer 混合 tendency;当前源码将经向风混合输出置零。 | nonoro_gwd_mix_mod |
ini_nonoro_gwd_mix / end_nonoro_gwd_mix |
subroutine | libf/phymars/nonoro_gwd_mix_mod.F90 |
分配和释放 nonoro_gwd_mix_mod 的保存数组。 |
nonoro_gwd_mix_mod |
NONORO_GWD_RAN |
subroutine | libf/phymars/nonoro_gwd_ran_mod.F90 |
构造离散随机非地形 GW、推进 EP flux,并返回 U/V 动量拖曳 tendency。 | nonoro_gwd_ran_mod |
ini_nonoro_gwd_ran / end_nonoro_gwd_ran |
subroutine | libf/phymars/nonoro_gwd_ran_mod.F90 |
分配和释放 nonoro_gwd_ran_mod 的保存数组。 |
nonoro_gwd_ran_mod |
calltherm_interface |
subroutine | libf/phymars/calltherm_interface_mod.F90 |
在 calltherm 开启时准备热羽流输入、执行子步长、返回热羽流 tendency 和 wstar/hfmax。 |
calltherm_interface_mod, config-system |
thermcell_main_mars |
subroutine | libf/phymars/thermcell_main_mars.F90 |
在热羽流子步长内计算源层、羽流高度、质量通量、温度/CO2 tendency 和诊断通量。 | thermcell_main_mars, thermcell_dqup, comtherm_h |
thermcell_dqup |
subroutine | libf/phymars/thermcell_dqup.F90 |
按热羽流质量通量、夹卷和退卷通量计算标量 dq/dt。 |
thermcell_dqup, comtherm_h |
check_physics_fields |
subroutine | libf/phymars/check_fields.F90 |
检查温度、风、表面压力和 tracer,发现 NaN/越界值后中止。 | check_fields, tracer_mod |
check_temperature |
subroutine | libf/phymars/check_fields.F90 |
检查温度 NaN 和 50-350 K 默认范围。 | check_fields |
check_winds |
subroutine | libf/phymars/check_fields.F90 |
检查 u/v NaN 和 500 m/s 默认绝对值上限。 |
check_fields |
check_ps |
subroutine | libf/phymars/check_fields.F90 |
检查表面压力 NaN 和 80-2000 Pa 默认范围。 | check_fields |
check_tracers |
subroutine | libf/phymars/check_fields.F90 |
检查 tracer NaN,并对负 tracer 混合比打印警告。 | check_fields, tracer_mod |
ini_conc_mod |
subroutine | libf/phymars/conc_mod.F90 |
按 ngrid,nlayer 分配 mmean/Akknew/cpnew/rnew。 |
conc_mod |
end_conc_mod |
subroutine | libf/phymars/conc_mod.F90 |
释放已分配的 mmean/Akknew/cpnew/rnew。 |
conc_mod |
init_r_cp_mu |
subroutine | libf/phymars/conc_mod.F90 |
用 comcstfi_h:r/cpp/mugaz 初始化常数背景 rnew/cpnew/mmean。 |
conc_mod, comcstfi_h |
update_r_cp_mu_ak |
subroutine | libf/phymars/conc_mod.F90 |
在 photochem 或 callthermos 路径中,按 tracer 组成更新 mmean/rnew/cpnew/Akknew。 |
conc_mod, tracer_mod |
conduction |
subroutine | libf/aeronomars/conduction.F |
按 conc_mod::Akknew/cpnew/rnew 与温度依赖热导率 k=Akk*T**skk(skk=0.69)求解热传导倾向 zdtconduc,由 thermosphere_mod 在 callconduct 下调用。 |
conduction, conc_mod, callkeys_mod |
molvis |
subroutine | libf/aeronomars/molvis.F |
对单个风速分量求解垂直分子黏性扩散;thermosphere_mod 在 callmolvis 下分别用于 pu 和 pv。 |
molvis |
param_read |
subroutine | libf/aeronomars/param_read.F |
master-only 读取 coln.dat、j*、varflujo.dat、efdis_inter.dat,写入柱积分、光吸收和解离/电离效率表并广播;当前源码未找到活跃调用点。 |
param_read |
param_read_e107 |
subroutine | libf/aeronomars/param_read_e107.F |
读取 EUVDAT/param_v6、E107 拟合/年表和 CO2/O2/N2/CO 电离分支比,写入并广播 param_v4_h 热层参数。 |
param_read_e107, datafile_mod |
fill_data_thermos |
subroutine | libf/aeronomars/param_v4_h.F90 |
填入内置吸收截面、36 个代表波长 freccen 和 195/295 K CO2 截面表;由 physiq_mod 热层初始化段调用。 |
param_v4_h, physiq_mod |
allocate_param_thermos |
subroutine | libf/aeronomars/param_v4_h.F90 |
按 nlayer 分配 jfotsout/jdistot/jion 和热层化学 P*/L*/tmin* 缓存;由 physiq_mod 调用。 |
param_v4_h, physiq_mod |
calchim |
subroutine | libf/aeronomars/calchim_mod.F90 |
firstcall 识别化学 tracer 和初始化光解/热层速率;逐列调用 photochemistry、perosat、可选 chemthermos/deposition,并把更新后的 mole fraction 转回 dqchim。 |
calchim_mod, photochemistry_mod, perosat, chemistrydata, chemthermos_readini, deposition, iono_h |
ini_calchim_mod |
subroutine | libf/aeronomars/calchim_mod.F90 |
按 ngrid,nlayer,nq 分配并清零 zdqchim(ngrid,nlayer,nq) 与 zdqschim(ngrid,nq)。 |
calchim_mod, phys_state_var_init_mod |
end_calchim_mod |
subroutine | libf/aeronomars/calchim_mod.F90 |
释放已分配的 zdqchim/zdqschim 化学倾向缓存。 |
calchim_mod, phys_state_var_init_mod |
read_phototable |
subroutine | libf/aeronomars/chemistrydata.F90 |
从 datadir(默认 jmars.20140930,phototable 键可覆盖)读取光解查找表,master 读后 bcast;由 calchim_mod firstcall 在 photochem .and. .not. jonline 下调用。 |
chemistrydata, datafile_mod |
photolysis |
subroutine | libf/aeronomars/photolysis.F90 |
jonline=false 时由 photochemistry 调用;按温度、SZA、CO2 柱、O3 柱和尘埃 5 维插值 jphot,输出基础 v_phot。 |
photolysis, photochemistry_mod, chemistrydata |
init_photolysis |
subroutine | libf/aeronomars/photolysis_mod.F90 |
在线光解初始化入口;建立低分辨率波长网格,读取太阳通量、截面、量子产额和反照率。 | photolysis_mod, calchim_mod |
photolysis_online |
subroutine | libf/aeronomars/photolysis_online.F |
jonline=true 时由 photochemistry 调用;逐波长做两流辐射传输,累加 15 个光解率到 v_phot。 |
photolysis_online, photochemistry_mod, photolysis_mod |
surfacearea |
subroutine | libf/aeronomars/surfacearea.F |
按微物理/简单云两种方案计算尘/冰颗粒总表面积密度 surfdust/surfice(m2/m3),由 physiq_mod 在 photochem 路径中调用。 |
surfacearea, physiq_mod, calchim_mod |
thermosphere |
subroutine | libf/aeronomars/thermosphere_mod.F |
physiq_mod 在 callthermos 下调用;依次执行 EUV 加热、热传导、黏性扩散和分子扩散,累加 tendency 并输出 H/H₂/D 逃逸通量。 |
thermosphere_mod, physiq_mod |
avg_horiz |
subroutine | libf/dynphy_lonlat/phymars/avg_horiz_mod.F |
将源网格地表数据按空间搜索分箱平均到目标 GCM 网格;由 datareadnc 调用。 |
avg_horiz_mod |
caldyn0 |
subroutine | libf/dynphy_lonlat/phymars/caldyn0.F |
lon-lat GCM 动力倾向计算;依次调 13 个 EXTERNAL 子过程(covcont/pression/psextbar/massdair/massbar/flumass/convmass/vitvert/tourpot/enercin/bernoui/sortvarc0 等),由 newstart 调用。 |
caldyn0 |
call_physiq |
subroutine | libf/dynphy_lonlat/phymars/callphysiq_mod.F90 |
校验 planet_type 后将动力核心状态数组转发给 physiq,回写风/温度/示踪剂/地表气压 tendency。 |
callphysiq_mod |
datareadnc |
subroutine | libf/dynphy_lonlat/phymars/datareadnc.F |
从 surface.nc 读取地表数据(z0/反照率/热惯量/MOLA 地形/亚网格参数),经 interp_horiz/avg_horiz/mvc_horiz 插值到 GCM 网格,由 newstart 调用。 |
datareadnc |
defrun_new |
subroutine | libf/dynphy_lonlat/phymars/defrun_new.F |
从 run.def 读取 30+ 运行参数(时间步进/耗散/zoom/海绵层/物理频率等)写入公共模块变量,由 newstart 和 start2archive 调用。 |
defrun_new |
grid_noro1 |
subroutine | libf/dynphy_lonlat/phymars/grid_noro1.F |
从 USN 高分辨率高程数据计算亚网格地形参数(zmea/zstd/zsig/zgam/zthe),由 datareadnc 调用。 |
grid_noro1 |
ini_archive |
subroutine | libf/dynphy_lonlat/phymars/ini_archive.F |
写入 start_archive NetCDF 文件头部:11 个维度、坐标/垂直系数/土壤/地表/坡面等静态变量和 100 元素控制参数表,由 start2archive 调用。 |
ini_archive |
iniphysiq |
subroutine | libf/dynphy_lonlat/phymars/iniphysiq_mod.F90 |
物理初始化入口;调用 inigeomphy/phys_state_var_init/ini_fillgeom/conf_phys,由 newstart/nogcm/start2archive 调用。 |
iniphysiq_mod |
interp_vert |
subroutine | libf/dynphy_lonlat/phymars/interp_vert.F |
垂直坐标线性插值;将变量从旧混合 σ-p 垂直层插值到新垂直层,由 lect_start_archive 调用。 |
interp_vert |
leapfrog_nogcm |
subroutine | libf/dynphy_lonlat/phymars/leapfrog_nogcm.F |
独立物理模式时间积分主循环;Matsuno + leapfrog 步进,牛顿松弛替代动力核心,由 nogcm 调用。 |
leapfrog_nogcm |
globaverage2d |
function | libf/dynphy_lonlat/phymars/leapfrog_nogcm.F |
面积加权全局二维平均(内部辅助函数)。 | leapfrog_nogcm |
lect_start_archive |
subroutine | libf/dynphy_lonlat/phymars/lect_start_archive.F |
读取 start_archive NetCDF 并通过 interp_vert/interp_horiz/interp_line 重映射到当前网格,由 newstart 调用。 |
lect_start_archive |
mvc_horiz |
subroutine | libf/dynphy_lonlat/phymars/mvc_horiz_mod.F |
最大值复合水平插值;将高分辨率源数据取亚网格最大值映射到 GCM 目标网格,由 datareadnc 调用。 |
mvc_horiz_mod |
load_MONS_data |
subroutine | libf/dynphy_lonlat/phymars/newstart.F |
读取 datadir/results_MONS_lat_lon_H_depth.txt,补南极缺测并插值 MONS 地下冰数据到 GCM 网格;由 newstart 的 mons_ice 分支调用。 |
newstart, datafile_mod |
readhead_NC |
subroutine | libf/dynphy_lonlat/phymars/readhead_NC.F |
NetCDF 头信息读取器;读取 controle、经纬度、面积、phisinit、aps/bps,设置动力常数、几何数组和垂直坐标状态,由 xvik 调用。 |
readhead_NC |
scal_wind |
subroutine | libf/dynphy_lonlat/phymars/scal_wind.F |
将 xus/xvs 相邻平均到 u/v 风点;由 lect_start_archive 在 start_archive 风场读取后调用。 |
scal_wind, lect_start_archive |
subslope_mola |
subroutine | libf/dynphy_lonlat/phymars/subslope_mola.F90 |
读取 MOLA 坡面统计并输出 subslope_dist(ngridmx,nslope);由 newstart 的坡面数量修改分支调用。 |
subslope_mola, newstart |
mola |
subroutine | libf/dynphy_lonlat/phymars/subslope_mola.F90 |
读取 datadir/mola64.nc 的 alt 高程,并调用 getslopes_mola32 生成坡度倾角和坡向。 |
subslope_mola, datafile_mod |
getslopes_mola32 |
subroutine | libf/dynphy_lonlat/phymars/subslope_mola.F90 |
用 MOLA 高程中心差分计算坡度倾角 theta_mola 和坡向 psi_mola。 |
subslope_mola |
slopes_stat |
subroutine | libf/dynphy_lonlat/phymars/subslope_mola.F90 |
对单个 GCM 网格框内的 MOLA 点按 def_slope 分箱,得到坡面比例。 |
subslope_mola |
wind_scal |
subroutine | libf/dynphy_lonlat/phymars/wind_scal.F |
将 u/v 自然风或通量相邻平均回标量格点;由 start2archive 写 archive 风场前调用。 |
wind_scal, start2archive |
write_archive |
subroutine | libf/dynphy_lonlat/phymars/write_archive.F |
start_archive 变量追加器;按 dim 和变量名选择 NetCDF 维度,创建缺失变量并写入指定 Time 记录。 |
write_archive, start2archive |
sol2ls |
subroutine | libf/dynphy_lonlat/phymars/xvik.F |
将 sol 日期转换为太阳经度 Ls,供 xvik 输出和谐波重建使用。 |
xvik |
ls2sol |
function | libf/dynphy_lonlat/phymars/xvik.F |
将太阳经度 Ls 反算为 sol,用于 Time_unit==2 的日平均分组。 |
xvik |
DiscreetFourierHn |
subroutine | libf/dynphy_lonlat/phymars/xvik.F |
计算离散压力序列的 Fourier 谐波系数,供 xvik 写年度谐波拟合。 |
xvik |
photochemistry |
subroutine | libf/aeronomars/photochemistry_mod.F90 |
calchim 逐列调用;计算光解/光电离/反应速率,按自适应隐式矩阵法更新 zycol,输出 jo3/jh2o/em_no/em_o2/iter。 |
photochemistry_mod, calchim_mod |
chemthermos |
subroutine | libf/aeronomars/chemthermos.F90 |
.not.unichim 时由 calchim_mod 逐列调用;按 chemthermod 构造热层数密度矩阵,调 jthermcalc_e107 与 paramfoto_compact,只写回 lswitch:nlayer。 |
chemthermos, chemthermos_readini, reaction-rates |
chemthermos_readini |
subroutine | libf/aeronomars/chemthermos_readini.F |
由 calchim_mod firstcall(.not.unichim)调用,读 61 个 Arrhenius 参数到 rcoef(61,3),缺失则 abort_physic。 |
chemthermos_readini, reaction-rates |
paramfoto_compact |
subroutine | libf/aeronomars/paramfoto_compact.F |
由 chemthermos 调用,逐层计算 phdisrate/getch/lifetimes/prodsandlosses,用隐式积分和光化学平衡近似更新热层 rm 数密度。 |
paramfoto_compact, reaction-rates |
phdisrate |
subroutine | libf/aeronomars/paramfoto_compact.F |
把 jfotsout/fluxtop/efdis*/efion* 转成 jdistot/jdistot_b/jion;主例程和 photochemistry_mod 离子光化学路径都会调用。 |
paramfoto_compact, param_read_e107 |
getch |
subroutine | libf/aeronomars/paramfoto_compact.F |
消费 rcoef(61,3) 生成 ch2..ch87,中性反应用 tcte,离子/电子反应用插值电子温度。 |
paramfoto_compact, reaction-rates |
prodsandlosses |
subroutine | libf/aeronomars/paramfoto_compact.F |
清零并填充热层化学 P*/L* 逐反应矩阵与 *tot 总源汇,供隐式积分和 chemthermos 诊断读取。 |
paramfoto_compact |
implicito |
subroutine | libf/aeronomars/paramfoto_compact.F |
用 (c_input+Prod*dt)/(1+Loss*dt) 更新非平衡物种,负输出时停止,低浓度抬底到 1.d-30。 |
paramfoto_compact |
perosat |
subroutine | libf/aeronomars/perosat.F |
光化学后处理 H2O2 超饱和:计算饱和摩尔分数、向下层转移超出量、写 pdqcloud/pdqscloud。 |
perosat, calchim_mod |
deposition |
subroutine | libf/aeronomars/deposition.F |
由 calchim_mod 在 if (depos) 下逐列调用;当前不修改 zycol(更新注释),仅 ig==ig_vl1 打印诊断。 |
deposition, conc_mod |
euvheat |
subroutine | libf/aeronomars/euvheat.F90 |
由 thermosphere_mod 在 calleuv 下调用;校验 tracer、构造数密度矩阵、调 hrtherm 得 jtot,并换算为 pdteuv 后由调用方累加到 pdt。 |
euvheat, hrtherm, callkeys_mod |
hrtherm |
subroutine | libf/aeronomars/hrtherm.F |
由 euvheat 逐列调用;打包数密度、调 jthermcalc_e107 填 jfotsout、按区间×物种加权求和得 jtot;夜间 zenit>140° 置 0。 |
hrtherm |
inichim_newstart |
subroutine | libf/aeronomars/inichim_newstart.F90 |
按 noms 重建 tracer 索引和 mmol,读取 atmosfera_LMD_* VMR 廓线,按 log pressure 调 intrplf 插值并写入 pq/qsurf。 |
inichim_newstart, intrplf, testphys1d-config |
intrplf |
subroutine | libf/aeronomars/intrplf.F |
自包含一维线性插值;由 inichim_newstart 插值初始成分廓线。 |
intrplf |
jthermcalc |
subroutine | libf/aeronomars/jthermcalc.F |
按 36 个光谱区间对 13 种物种柱密度做 interfast 查表插值,写 param_v4_h::jfotsout;夜间 zenit>140° 直接返回;当前源码未发现直接调用点。 |
jthermcalc |
jthermcalc_e107 |
subroutine | libf/aeronomars/jthermcalc_e107_mod.F |
E107 增强版光吸收系数计算;比基础版多 zday 参数,TOA 值用 4 阶 E10.7 多项式,末尾做 (1.52/dist_sol)² 修正;由 hrtherm/chemthermos 调用。 |
jthermcalc_e107_mod, hrtherm, chemthermos |
column |
subroutine | libf/aeronomars/jthermcalc_util.F |
计算 13 种物种柱密度(cm⁻²),含球面大气光学路径(espesor_optico_A);由 jthermcalc/jthermcalc_e107 调用。 |
jthermcalc_util, jthermcalc, jthermcalc_e107_mod |
interfast |
subroutine | libf/aeronomars/jthermcalc_util.F |
柱密度查找表快速线性插值,返回权重 wm/wp 和索引 nm;由 jthermcalc/jthermcalc_e107 多次调用。 |
jthermcalc_util |
espesor_optico_A |
subroutine | libf/aeronomars/jthermcalc_util.F |
球面大气几何光学路径厚度计算;三区间 SZA 处理(<60° 平面近似 / 60°–90° 弦长 / >90° 五区域);由 column 内部调用。 |
jthermcalc_util |
grid_R8 |
function | libf/aeronomars/jthermcalc_util.F |
单调递增网格索引查找;越界钳位并警告;由 espesor_optico_A 内部调用。 |
jthermcalc_util |
flujo |
subroutine | libf/aeronomars/jthermcalc_util.F |
遗留太阳通量 11 年周期修正(fluxtop 正弦修正 + 日火距离);当前无调用方。 |
jthermcalc_util |
allocate_param_iono |
subroutine | libf/aeronomars/iono_h.F90 |
按 nlayer,nreact 分配 iono_h 数组;由 physiq_mod 调用。 |
iono_h, physiq_mod |
temp_elect |
function | libf/aeronomars/iono_h.F90 |
按高度算电子温度(Viking 表插值 / MAVEN tanh 公式);由 calchim_mod 调用。注意 photochemistry_mod 另有同名局部数组遮蔽。 |
iono_h |
moldiff |
subroutine | libf/aeronomars/moldiff.F |
Dickinson & Ridley 1972 α 矩阵 + LU 求逆 + 隐式三对角 14 物种分子扩散求解器;含 Jeans H/H₂ 逃逸和 O 质量守恒,仅 z>65km;已被 moldiff_red/moldiff_MPF 取代,无调用方。 |
moldiff, moldiffcoeff |
tridag_sp |
subroutine | libf/aeronomars/moldiff.F |
Thomas 算法三对角求解器;由 moldiff 内部逐物种调用。 |
moldiff |
LUBKSB_SP |
subroutine | libf/aeronomars/moldiff.F |
Numerical Recipes LU 回代;由 moldiff 求 α 逆矩阵时调用。 |
moldiff |
LUDCMP_SP |
subroutine | libf/aeronomars/moldiff.F |
Numerical Recipes LU 分解 + 部分主元选取;奇异矩阵时 ierr=1 返回。 |
moldiff |
moldiff_MPF |
subroutine | libf/aeronomars/moldiff_MPF.F90 |
Wilke 多组分扩散 + Krasnopolsky 涡流扩散 + Jeans H/H₂/D 逃逸 + 可选质量守恒修正;由 thermosphere_mod 在 moldiff_scheme==2(默认)下调用。 |
moldiff_MPF, moldiffcoeff_red |
tridagbloc |
subroutine | libf/aeronomars/moldiff_MPF.F90 |
块三对角求解器;由 moldiff_MPF 时间分裂循环中隐式求解调用(定义但当前未被活跃调用)。 |
moldiff_MPF |
moldiff_red |
subroutine | libf/aeronomars/moldiff_red.F90 |
二元 dij 简化公式逐物种隐式三对角扩散 + Jeans H/H₂/D 逃逸;由 thermosphere_mod 在 moldiff_scheme==1(非默认)下调用。 |
moldiff_red, moldiffcoeff_red |
moldiffcoeff |
subroutine | libf/aeronomars/moldiffcoeff.F |
由 moldiff 调用;firstcall 缺任一必需 tracer 即 stop 并在通过后设置 GCM 索引,用 H2-X/H-O 基础系数按 sqrt(mmol) 缩放填对称 dij(对角 1.0);每次调用覆写 coeffs.dat。 |
moldiffcoeff, tracer_mod |
moldiffcoeff_red |
subroutine | libf/aeronomars/moldiffcoeff_red.F |
由 moldiff_red/moldiff_MPF 调用;gcmind 由调用方传入,h2/h/o 按 noms 名查,同 Nair 1994 算 dij;coeffs.dat 默认不写。 |
moldiffcoeff_red, moldiffcoeff |
init_comcstfi_h |
subroutine | libf/phymars/comcstfi_h.F90 |
初始化 rad/cpp/g/r 并计算 rcp=r/cpp。 |
comcstfi_h |
ini_comgeomfi_h |
subroutine | libf/phymars/comgeomfi_h.F90 |
按 ngrid 分配 sinlat/coslat/sinlon/coslon 几何缓存数组。 |
comgeomfi_h |
end_comgeomfi_h |
subroutine | libf/phymars/comgeomfi_h.F90 |
释放已分配的经纬度三角函数缓存数组。 | comgeomfi_h |
ini_fillgeom |
subroutine | libf/phymars/comgeomfi_h.F90 |
从调用方传入的弧度制纬度/经度填充 sinlat/coslat/sinlon/coslon。 |
comgeomfi_h, testphys1d-config |
allocate_comm_wrf |
subroutine | libf/phymars/comm_wrf.F90 |
按 ngrid,nlayer 分配 WRF 输出诊断缓存数组。 |
comm_wrf |
deallocate_comm_wrf |
subroutine | libf/phymars/comm_wrf.F90 |
无条件释放所有 WRF 输出诊断缓存数组。 | comm_wrf |
ini_comsaison_h |
subroutine | libf/phymars/comsaison_h.F90 |
按 ngrid 分配 mu0/fract/local_time 数组。 |
comsaison_h |
end_comsaison_h |
subroutine | libf/phymars/comsaison_h.F90 |
释放已分配的 mu0/fract/local_time 数组。 |
comsaison_h |
solang |
subroutine | libf/phymars/solang.F |
按格点经纬度、太阳赤纬和时角计算 mu0 与 0/1 日照标志 fract。 |
solang, mucorr |
initracer |
subroutine | libf/phymars/initracer.F90 |
按 noms(:) 识别 tracer 名称,写入 igcm_* 索引、mmol/radius/rho_q/alpha_*,并检查 dust/water/HDO/CO2/NLTE/chemistry 开关依赖。 |
initracer, initracer-co2-tracers, co2-cycle-config, water-cycle-config |
write_output |
subroutine | libf/phymars/write_output_mod.F90 |
XIOS/传统诊断输出封装接口;文件专页已记录泛型分派、output_diagfi 和土壤字段分流。 |
write_output_mod, xios-config, water-cycle, co2-cycle |
initiate |
subroutine | util/concatnc.F90 |
创建并初始化 concat.nc 的坐标维度和 Time 变量。 |
concatnc |
init2 |
subroutine | util/concatnc.F90 |
复制首个输入文件中的垂直坐标、面积和地形静态辅助变量。 | concatnc |
change_time_axis |
subroutine | util/concatnc.F90 |
将输出 sol 时间轴转换为 Ls,或在 adls 模式下新增 Ls 变量。 |
concatnc |
sol2ls |
subroutine | util/concatnc.F90 |
concatnc 内部 sol 到太阳经度 Ls 的换算例程。 |
concatnc |
missing_value |
subroutine | util/concatnc.F90 |
将输入变量的 valid_range 和 missing_value 属性复制到输出变量。 |
concatnc |
extraction |
subroutine | util/extract.F90 |
extract 的四维插值核心,按 time、altitude、latitude、longitude 顺序插值。 |
extract |
extract::ls2sol |
subroutine | util/extract.F90 |
extract 内部 Ls 到 sol 的换算例程,用于把 Ls/LT 查询转换到输入文件 Time 坐标。 |
extract |
interp_horiz |
subroutine | util/hrecast.F90 |
基于新旧格盒交叠面积执行水平重分配,并对极点行做面积平均。 | hrecast |
iniinterp_h |
subroutine | util/hrecast.F90 |
预计算新旧水平格盒交集索引、交集面积和新格盒面积。 | hrecast |
read_optpropfile |
subroutine | util/aeropt_mod.F90 |
从 ASCII 光学性质文件读取 nwvl/nsize/wvl/radiusdyn/Qext/omeg。 |
aeropt_mod |
interp_wvl_reff |
subroutine | util/aeropt_mod.F90 |
对 Qext/omeg 按有效半径和波长做线性插值。 |
aeropt_mod |
end_aeropt_mod |
subroutine | util/aeropt_mod.F90 |
释放光学性质表缓存数组。 | aeropt_mod |
create_logfile |
subroutine | util/aeropt_mod.F90 |
创建或覆盖 aeroptical 运行日志文件。 |
aeropt_mod |
aeroptical::status_check |
subroutine | util/aeroptical.F90 |
NetCDF 状态检查;错误时打印 nf90_strerror 并停止。 |
aeroptical |
aeroptical::inidims |
subroutine | util/aeroptical.F90 |
复制输入坐标和可选 controle,并定义输出 NetCDF 维度。 |
aeroptical |
aeroptical::init2 |
subroutine | util/aeroptical.F90 |
复制垂直/静态辅助字段,并按多种路径计算 delta_z。 |
aeroptical |
check_co2cycle::sol2ls |
subroutine | util/check_co2cycle.F90 |
将 sol 转换为太阳经度 Ls,并处理跨年 Ls 累加。 | check_co2cycle |
check_co2cycle::ls2sol |
function | util/check_co2cycle.F90 |
将 Ls 转回 sol,供 Ls-only 输出文件做日平均分组。 | check_co2cycle |
DiscreetFourierHn |
subroutine | util/check_co2cycle.F90 |
对离散压力序列计算 Fourier 谐波系数。 | check_co2cycle |
RUNAVE |
subroutine | util/xvik/fit_Iceinertia_MONSicedepth.F |
在周期 sol 坐标上对模拟压力和敏感度导数做滑动平均。 | fit_Iceinertia_MONSicedepth |
p_coord_interp |
subroutine | util/zrecast.F90 |
将变量插值到压力坐标。 | zrecast |
z_coord_interp |
subroutine | util/zrecast.F90 |
将变量插值到 areoid 高度或半径坐标。 | zrecast |
zs_coord_interp |
subroutine | util/zrecast.F90 |
将变量插值到本地地表以上高度坐标。 | zrecast |
geoid |
subroutine | util/zrecast.F90 |
计算给定经纬度的 areoid 半径。 | zrecast |
extraction |
subroutine | util/simu_MCS.F90 |
在 GCM 4D 场上做四维线性插值。 | simu_MCS |
ls2sol |
subroutine | util/simu_MCS.F90 |
太阳经度 Ls 到 sol 的换算。 | simu_MCS |
gen_sol_list |
subroutine | util/simu_MCS.F90 |
生成 sol × 当地时采样点列表。 | simu_MCS |
LTmod |
function | util/simu_MCS.F90 |
夜间当地时连续化函数。 | simu_MCS |
aerave |
subroutine | libf/phymars/aerave.F |
将气溶胶光学性质从高分辨率光谱通过普朗克加权平均到 GCM 辐射带。 | aerave |
blackl |
subroutine | libf/phymars/aerave.F |
普朗克黑体辐射函数计算。 | aerave |
suaer |
subroutine | libf/phymars/suaer.F90 |
读取 optprop_* 表并填充 dimradmars_mod 离散 VIS/IR 光学查找表。 |
suaer, aerave |
ini_comslope_h |
subroutine | libf/phymars/comslope_mod.F90 |
初始化分配坡面数组。 | comslope_mod |
end_comslope_h |
subroutine | libf/phymars/comslope_mod.F90 |
释放坡面数组。 | comslope_mod |
compute_meshgridavg |
subroutine | libf/phymars/comslope_mod.F90 |
计算坡面属性的网格平均值(反照率、发射率、温度、tracer)。 | comslope_mod |
ini_comsoil_h |
subroutine | libf/phymars/comsoil_h.F90 |
分配所有土壤数组。 | comsoil_h |
end_comsoil_h |
subroutine | libf/phymars/comsoil_h.F90 |
释放所有土壤数组。 | comsoil_h |
iniwritesoil |
subroutine | libf/phymars/iniwritesoil.F90 |
为 diagsoil.nc 创建维度和固定字段(area、th_inertia),由 writediagsoil 首次调用时触发。 |
iniwritesoil |
writediagsoil |
subroutine | libf/phymars/writediagsoil.F90 |
按采样间隔向 diagsoil.nc 追加土壤剖面、地表场或标量诊断,并在首次调用时触发 iniwritesoil。 |
writediagsoil, iniwritesoil |
nirco2abs |
subroutine | libf/phymars/nirco2abs.F |
计算大气 CO2 在近红外波段吸收太阳辐射产生的加热率,含 NLTE 修正。 | nirco2abs |
interpnir |
subroutine | libf/phymars/nirco2abs.F |
压力坐标线性插值(用于 NLTE 修正查找表)。 | nirco2abs |
get_nq_from_tracer_file |
subroutine | libf/phymars/parse_tracer_file.F90 |
从 tracer.def 读取 tracer 总数。 |
parse_tracer_file |
get_names_from_tracer_file |
subroutine | libf/phymars/parse_tracer_file.F90 |
从已解析的 tracers 数组提取所有 tracer 名称。 |
parse_tracer_file |
get_children_from_tracer_file |
subroutine | libf/phymars/parse_tracer_file.F90 |
统计每个 tracer 的子 tracer 数量(parent 字段匹配)。 | parse_tracer_file |
get_nq_from_traceur_file |
subroutine | libf/phymars/parse_traceur_file.F90 |
从 traceur.def 第一行读取 tracer 总数,并广播给所有进程。 |
parse_traceur_file |
get_names_from_traceur_file |
subroutine | libf/phymars/parse_traceur_file.F90 |
读取旧格式 tracer 名称、parent 字段和每个 tracer 的子 tracer 数量。 | parse_traceur_file, tracer_mod |
phyetat0 |
subroutine | libf/phymars/phyetat0_mod.F90 |
从 startfi.nc 或 no-startfi 缺省路径初始化物理地表、土壤、坡面、tracer、古气候和 restart 记忆状态。 |
phyetat0_mod |
ini_tab_controle_dyn_xios |
subroutine | libf/phymars/phyetat0_mod.F90 |
把网格大小、行星常数、物理时间步和初始时刻写入 tab_cntrl_mod。 |
phyetat0_mod |
physdem0 |
subroutine | libf/phymars/phyredem.F90 |
创建物理文件并写控制表、网格、静态地表、坡面和水冰标签字段。 | phyredem |
physdem1 |
subroutine | libf/phymars/phyredem.F90 |
先写 Time,再写 time-dependent 表面、土壤、tracer、尘埃、GW、古气候和质量修正 restart 字段。 |
phyredem |
phys_state_var_init |
subroutine | libf/phymars/phys_state_var_init_mod.F90 |
从 startfi.nc 或默认路径确定 nslope,初始化物理常数/时间状态,并按当前维度释放和分配多个共享模块数组。 |
phys_state_var_init_mod |
blendrad |
subroutine | libf/phymars/blendrad.F |
用 sigmoid alpha 在 LTE/NLTE 之间平滑过渡,合并四路辐射倾向为净加热率 dtrad。 | blendrad |
pbl_parameters |
subroutine | libf/phymars/pbl_parameters_mod.F90 |
计算摩擦速度/温度、Monin-Obukhov 内插、热通量/速度方差廓线;纯诊断不影响物理倾向。 | pbl_parameters_mod |
ini_paleoclimate / end_paleoclimate |
subroutine | libf/phymars/paleoclimate_mod.F90 |
按 ngrid,nslope 分配或释放古气候共享数组。 |
paleoclimate_mod |
getslopes |
subroutine | libf/phymars/slope_mod.F90 |
从地形势场计算坡面倾角和方位(仅串行模式)。 | slope_mod |
param_slope |
subroutine | libf/phymars/slope_mod.F90 |
用 Spiga & Forget (2008) 方法计算坡面上的太阳总辐照度(直接+散射+反射)。 | slope_mod |
ini_slope_mod |
subroutine | libf/phymars/slope_mod.F90 |
分配 theta_sl 和 psi_sl 数组。 |
slope_mod |
end_slope_mod |
subroutine | libf/phymars/slope_mod.F90 |
释放 theta_sl 和 psi_sl 数组。 |
slope_mod |
soil |
subroutine | libf/phymars/soil.F |
隐式三对角矩阵求解土壤各层温度,输出地表热容量和扩散热通量。 | soil |
soil_settings |
subroutine | libf/phymars/soil_settings.F |
从 startfi.nc 读取土壤层深度、热惯量、温度和 tracer,层数不匹配时垂直插值。 |
soil_settings |
tracer_mass_fixer_dyn |
subroutine | libf/phymars/tracer_mass_fixer_dyn_mod.F90 |
计算 8 个主要大气成分的质量修正因子,返回 tendency 以修正动力传输的质量非守恒。 | tracer_mass_fixer_dyn_mod |
compute_tracer_mass_global |
subroutine | libf/phymars/tracer_mass_fixer_dyn_mod.F90 |
计算指定 tracer 的全球总质量(柱密度积分 + 全球求和)。 | tracer_mass_fixer_dyn_mod |
ini_tracer_mod |
subroutine | libf/phymars/tracer_mod.F90 |
解析 traceur.def/tracer.def 配置文件,分配 tracer 数组,检查 CO2 tracer 存在性。 | tracer_mod |
end_tracer_mod |
subroutine | libf/phymars/tracer_mod.F90 |
释放多数 allocatable tracer 数组;源码未释放 nqchildren,页面已标为待确认遗漏。 |
tracer_mod |
vdif_cd |
subroutine | libf/phymars/vdif_cd_mod.F90 |
计算地表动量/热量拖曳系数 Cd/Ch;callrichsl 选择简单对数公式或 Colaïtis 迭代,迭代内由 callatke 选择 ATKE 或 Dyer/England 稳定性函数。 |
vdif_cd_mod |
vdif_kc |
subroutine | libf/phymars/vdif_kc.F |
在 vdifc fallback 路径中更新 q2、动量扩散 km 与标量扩散 kn,并可用 CO2 tracer 修正稳定度。 |
vdif_kc |
vdifc |
subroutine | libf/phymars/vdifc_mod.F |
由 physiq 的 calldifv 分支调用,输出 U/V/热力/tracer 垂直扩散倾向以及地表温度、水冰、watercap 和尘埃/HDO 通量。 |
vdifc_mod, physiq_mod, vdifc-water-surface-exchange |
make_tsub |
subroutine | libf/phymars/vdifc_mod.F |
为 vdifc 的 H2O 地表交换段按地表温度变化和霜/永久冰盖状态选择自适应子时间步数。 |
vdifc_mod, vdifc-water-surface-exchange |
compute_Tice |
subroutine | libf/phymars/vdifc_mod.F |
按地下冰深度在土壤层温度间插值得到地下冰温度,供 lag-layer 地下冰通量使用。 | vdifc_mod, vdifc-water-surface-exchange |
yamada4 |
subroutine | libf/phymars/yamada4.F |
按 iflag_pbl 分支更新 q2/km/kn/kq,由 vdifc 的 callyamada4 路径调用。 |
yamada4, vdifc_mod |
vdif_q2 |
subroutine | libf/phymars/yamada4.F |
对 q2 做压力坐标隐式垂直扩散;当前只在 iflag_pbl==9 分支调用。 |
yamada4 |