param_read.F

路径

LMDZ.MARS\libf\aeronomars\param_read.F

所属目录 / 模块

libf\aeronomars

文件定位

param_read.F 定义 param_read_mod,提供旧版 EUV 参数表读取例程 param_read。它只在 is_master 进程上从 datadir/EUVDAT/param_v5/ 读取光吸收截面、柱含量表、太阳通量周期参数、解离效率和电离效率,然后把结果写入 param_v4_h 的共享数组,并在 master 读完后通过 bcast 广播给其他进程。

该文件不直接计算光化学倾向;它的职责是把离线表格转成 param_v4_h::c1_16/c17_24/.../jabsifotsintpar/efdis*/efion*/fluxtop/ct*/p* 等全局参数,供热层 EUV 和光解相关例程复用。源码树中未发现 call param_read 的直接调用;当前已确认的热层路径主要调用 param_read_e107,因此本页按源码字面行为记录 param_read 本身,而不推断它在默认运行中的启用条件。

定义的符号

符号 类型 行号 作用
param_read_mod module 1(end module 433) 包装 param_read 参数读取例程
param_read subroutine 7(end subroutine 431) EUVDAT/param_v5 读取旧版 EUV/光解参数表并广播到 param_v4_h
ierr local integer 34 只用于 coln.dat 打开失败检测
nada local real 35 读取 varflujo.dat 第 6 列的占位值

依赖的模块

use 模块 only 列表 用途 待确认
param_v4_h jfotsout, crscabsi2, c1_16, c17_24, c25_29, c30_31, c32, c33, c34, c35, c36, co2crsc195, co2crsc295, t0, jabsifotsintpar, ninter, nz2, efdisco2, efdiso2, efdish2o, efdish2o2, efdish2, efdiso3, efdiso, efdisn, efdish, efdisno, efdisn2, efdisno2, efdisco, efionco2, efionn2, efionco, efiono3p, efionn, efionno, efionh, fluxtop, ct1, ct2, p1, p2 目标共享参数数组;本例程主要写入柱含量、光吸收表、解离/电离效率和太阳通量周期参数 jfotsout/crscabsi2/co2crsc195/co2crsc295 在本例程未写入
datafile_mod datadir 构造 EUVDAT/param_v5 数据文件路径 -
mod_phys_lmdz_para is_master 限定只有 master 进程执行文件 I/O -
mod_phys_lmdz_transfert_para bcast 把 master 读入的数组广播到其他进程 部分已写数组未见广播,见“待确认”

调用的关键例程

被调用例程 所在模块 / 文件 调用位置 作用
bcast mod_phys_lmdz_transfert_para 393-426 广播读入或设置后的 param_v4_h 数组

输入

输入 来源 类型/维度 单位 含义
datadir datafile_mod / callphys.defdatadir character path - 数据目录根路径,例程拼接 EUVDAT/param_v5/*.dat
nz2 param_v4_h integer - 表格垂直层数;读取循环按 nz2,1,-1 反向填数组
ninter param_v4_h integer - EUV 光谱区间数;控制效率数组和 fluxtop 初始化
coln.dat datadir/EUVDAT/param_v5 ASCII table mixed 柱含量分组 c1_16/c17_24/c25_29/c30_31/c32..c36
j*.dat datadir/EUVDAT/param_v5 ASCII tables mixed 各物种/通道的 jabsifotsintpar(i,species,interval) 光吸收参数
varflujo.dat datadir/EUVDAT/param_v5 ASCII table - 11 年太阳通量变化参数 ct1/p1/ct2/p2
efdis_inter.dat datadir/EUVDAT/param_v5 ASCII table - CO2、O2、NO 在部分区间的解离效率

输出

输出 去向 类型/维度 单位 含义
c1_16, c17_24, c25_29, c30_31, c32..c36 param_v4_h real arrays over nz2 mixed coln.dat 中的柱含量或区间聚合列
jabsifotsintpar param_v4_h real (nz2, species, interval) mixed 各物种/光谱区间的光吸收参数表
t0 param_v4_h real (nz2) K 固定设为 195.
fluxtop param_v4_h real (ninter) - 先全部设为 1.,作为顶端太阳通量缩放初值
ct1, p1, ct2, p2 param_v4_h real arrays, 读取前 24 行 - varflujo.dat 给出的太阳周期参数
efdis* param_v4_h real arrays over ninter fraction CO2/O2/H2O/H2O2/H2/O3/O/N/H/NO/N2/NO2/CO 解离效率
efion* param_v4_h real arrays over ninter and channels fraction CO2/N2/CO/O(3P)/N/NO/H 电离效率或通道拆分

共享状态与副作用

核心逻辑

  1. 只有 is_master 为真时进入读表分支。
  2. 打开 coln.dat,若失败则打印数据目录获取方式和 callphys.defdatadir 的修复提示,然后 STOP
  3. 打开 26 个 j*.dat 光吸收参数文件,按 unit 分组跳过两行表头。
  4. 反向遍历 i=nz2,1,-1,先读 coln.dat 到柱含量数组,再把 j1/j2/.../j13 系列表按物种编号和区间范围填入 jabsifotsintpar
  5. 关闭光吸收表 unit,设置 t0(:)=195.fluxtop(:)=1.
  6. 读取 varflujo.dat 的 24 行太阳周期参数到 ct1/p1/ct2/p2
  7. 清零解离和电离效率数组;再读取 efdis_inter.dat 设置 CO2/O2/NO,硬编码 N2、CO、H2O、H2O2、O3、NO2、H2 等区间效率。
  8. 按固定区间和分支比例设置 CO2、N2、CO、O(3P)、N、NO、H 的电离效率通道。
  9. 离开 master 分支后广播一组 param_v4_h 数组。

伪代码

param_read():
  if is_master:
    open datadir/EUVDAT/param_v5/coln.dat with iostat
    if missing:
      print datadir help
      STOP

    open j2_an, j3_an, j1_an, ..., j13_cn tables
    skip two header lines on each table

    for i = nz2 downto 1:
      read column groups from coln.dat into c1_16/c17_24/.../c36
    for each opened j table:
      for i = nz2 downto 1:
        read the table into the corresponding species/channel and interval slice
    close j-table units

    t0(:) = 195.
    fluxtop(:) = 1.

    read 24 rows of varflujo.dat into ct1,p1,ct2,p2

    zero efdis* and efion* arrays
    read efdis_inter.dat for inter = 8..28
    set high-interval CO2/O2/NO efficiencies to 1
    hard-code remaining dissociation and ionization channel efficiencies

  bcast column groups, t0, jabsifotsintpar
  bcast selected efdis*/efion* arrays and solar-cycle parameters

参与的主题流程

主题 参与方式
热层 EUV 参数初始化 提供 jabsifotsintparfluxtopct1/p1/ct2/p2 等共享参数;下游热层光吸收计算通过 param_v4_h 消费这些量
光化学/光解表数据 EUVDAT/param_v5 离线表格转为按物种和光谱区间索引的数组
并行参数同步 master 读表后依靠 bcast 把大部分共享数组分发到其他进程

写法特点

复现要点

待确认

相关页面