photolysis.F90

路径

LMDZ.MARS\libf\aeronomars\photolysis.F90

所属目录/模块

libf\aeronomars

文件定位

photolysis.F90 定义 photolysis_module,只暴露 photolysis 一个例程。它是 photochemistry_modjonline=.false. 时使用的离线光解率插值器:从 chemistrydata 读入并广播的 jmars.20140930 查找表中,按温度、太阳天顶角、CO2 空气柱、O3 柱量比和尘埃光学厚度做 5 维线性/对数插值,生成 v_phot(nlayer,nb_phot_max) 的基础光解率槽位。

本文件不读取查找表文件,也不决定是否走离线光解;查表数据由 chemistrydata_mod::read_phototable 负责,调用选择由 photochemistry_modjonline=false 分支负责。

定义的符号

符号 类型 行号 作用
photolysis_module module 1-310 离线光解查找表插值模块
photolysis subroutine 9-306 1:lswitch-1 层插值 jphot,生成基础光解率 v_phot

依赖的模块

use 模块 only 列表 用途 待确认
comcstfi_h g 用重力常数把 pressure difference 和平均摩尔质量换成 CO2/O3 柱量
chemistrydata_mod nd,nz,nozo,nsza,ntemp,ntau 查找表各维度参数
chemistrydata_mod szatab,tautab,colairtab,table_ozo,jphot SZA、尘埃、空气柱、O3 柱和光解率查找表;由 read_phototable 填充

调用的关键例程

被调用例程 所在模块/文件 调用位置 作用
无外部例程调用 - - 本例程只用 Fortran intrinsic min/max/log 和数组运算完成插值

输入

输入 来源 类型/维度 单位 含义
nlayer photochemistry_mod integer 垂直层数
nb_phot_max photochemistry_mod integer 反应数 输出 v_phot 第二维容量
lswitch photochemistry_mod integer 层索引 只计算 1:lswitch-1 的低层光化学段
press(nlayer) photochemistry_mod real hPa 层压;用于柱量和 1.9 hPa 参考温度插值
temp(nlayer) photochemistry_mod real K 层温度
sza photochemistry_mod real degree 太阳天顶角;本文件 sza<=95 才插值,夜间置零
tauref photochemistry_mod real - 已换算到 7 hPa 口径的尘埃光学厚度
zmmean(nlayer) photochemistry_mod real g mole^-1 平均摩尔质量,用于柱量换算
dist_sol photochemistry_mod real AU 日火距离,用 (1.52/dist_sol)^2 修正光解率
rmco2(nlayer) photochemistry_mod real VMR CO2 体积混合比
rmo3(nlayer) photochemistry_mod real VMR O3 体积混合比
jphot 等查找表 chemistrydata_mod module arrays s^-1 等 离线光解查找表数据

输出

输出 去向 类型/维度 单位 含义
v_phot(nlayer,nb_phot_max) photochemistry_mod real(kind=8) s^-1 基础光解率;进入 reactionrates/fill_matrix 的一阶反应槽位

共享状态与副作用

核心逻辑

  1. 日夜判断:只有 sza<=95. 时进入查表插值;更大天顶角直接令 j(:,:)=0.
  2. 固定温度表:本文件硬编码 1.9 hPa 参考温度表 226.2, 206.2, 186.2, 169.8 K,对应 ntemp=4
  3. SZA 与尘埃索引:在 szatab 中找包围 sza 的两个点,在 tautab 中找包围 tauref 的两个点;tauref 被夹在 tautab(1)tautab(ntau) 之间。
  4. CO2/O3 柱量
    • 顶层 lswitch-1 的 CO2 空气柱用 6.022e22*rmco2*press*100/(zmmean*g) 估算。
    • 向下循环 l=lswitch-2..1,用相邻层平均 rmco2/rmo3 和压差 dp=(press(l)-press(l+1))*100 累加 CO2 与 O3 柱量。
    • CO2 柱量上限为 colairtab(1)
  5. O3 柱量比:用 colo3min=col*7.171e-10 定义 0.1 micron-atm 的理论最小柱量,ratio_o3=colo3/colo3min,并夹在 1.table_ozo(nozo)*10.
  6. 参考温度:在压力剖面中寻找 1.9 hPa 所在层间,用线性权重插值得 tref;随后夹在 table_temp(4)..table_temp(1),并用对数温度比计算温度插值权重。
  7. 逐层 5 维插值:对每个 l=1:lswitch-1,分别在 colairtabtable_ozo 上定位索引,用 poids(2,2,2,2,2) 形成温度、SZA、空气柱、O3、尘埃五维角点权重,累加 32 个 jphot 角点。
  8. 日火距离修正:每个 j(l,ij)(1.52/dist_sol)**2
  9. 映射到 v_phot:按 jmars.20140930 的 13 个查表通道填入 v_phot;H2 和 N2 光解槽位没有查表数据,分别置 0。

伪代码

photolysis(...):
  if sza <= 95:
    find SZA interpolation bracket in szatab
    clamp tauref to tautab and find dust bracket
    build CO2 column and O3 column from top (lswitch-1) downward
    ratio_o3 = clamp(colo3 / (col * 7.171e-10), 1, table_ozo(nozo)*10)
    interpolate tref at 1.9 hPa and find table_temp bracket

    for l = 1..lswitch-1:
      find CO2-column and O3-ratio brackets
      build 32 weights over temp, sza, column, ozone, tau
      for ij = 1..nd:
        j(l,ij) = weighted sum of jphot corners
        j(l,ij) *= (1.52 / dist_sol)^2
  else:
    j = 0

  v_phot = 0
  for l = 1..lswitch-1:
    copy j lookup channels 1..9, 10..11 into v_phot slots
    set v_phot(:,10) = 0 for missing H2 lookup
    set v_phot(:,13) = 0 for missing N2 lookup

参与的主题流程

主题 参与方式
离线光解 jonline=false 时由 photochemistry_mod 调用,消费 chemistrydatajphot
光化学反应网络 提供基础 13 个一阶光解槽位中的 11 个有效查表速率,供 photochemistry 后续矩阵积分
尘埃/臭氧影响 插值维度显式包含 7 hPa 尘埃光学厚度和 O3 柱量比

写法特点

复现要点

待确认

相关页面