动力/物理格点互转例程组

输入范围

LMDZ.COMMON-6.3\LMDZ.COMMON\libf\dynphy_lonlat\gr_dyn_fi.F
LMDZ.COMMON-6.3\LMDZ.COMMON\libf\dynphy_lonlat\gr_dyn_fi_p.F
LMDZ.COMMON-6.3\LMDZ.COMMON\libf\dynphy_lonlat\gr_fi_dyn.F
LMDZ.COMMON-6.3\LMDZ.COMMON\libf\dynphy_lonlat\gr_fi_dyn_p.F

文件定位

这组例程在动力二维网格 (im,jm) 和物理列网格 ngrid/klon 之间复制标量场。串行版本按固定 lon-lat 展开规则处理极点和周期经度;并行版本通过 mod_interface_dyn_phys:index_i/index_j 映射当前物理列。

Mars 运行参与度

条件经过/接口兼容:COMMON 串行或并行动力-物理接口转换场时经过;Mars 物理初始化和部分 dyn1d 接口保持兼容。

例程清单

例程 文件 行数 方向
gr_dyn_fi gr_dyn_fi.F 38 动力网格 -> 物理列,串行。
gr_dyn_fi_p gr_dyn_fi_p.F 44 动力网格 -> 物理列,并行。
gr_fi_dyn gr_fi_dyn.F 40 物理列 -> 动力网格,串行。
gr_fi_dyn_p gr_fi_dyn_p.F 56 物理列 -> 动力网格,并行。

串行展开规则

gr_dyn_fipdyn(1,1,:) 复制到 pfi(1,:),将 pdyn(1,jm,:) 复制到 pfi(ngrid,:),中间纬圈 j=2:jm-1ig=2+(j-2)*(im-1) 展开 im-1 个经度点。

gr_fi_dyn 做反向操作:北极和南极物理点复制到整条动力极点行;中间纬圈从物理列复制 im-1 个点,并设置 pdyn(im,j,:)=pdyn(1,j,:) 保持周期端点一致。

并行版本

gr_dyn_fi_pgr_fi_dyn_p 使用:

OpenMP 循环遍历本线程/本 rank 的 klon 物理列。gr_dyn_fi_p 直接读 pdyn(index_i(ig),index_j(ig),l)gr_fi_dyn_p 写回同一位置,并在 i==1 时补写周期端点 pdyn(im,j,ifield),还会把极点行扩展到所有经度。

复现要点

待确认

相关页面