WRF修改geo_em变量

WRF修改geo_em变量

在使用WRF模型进行数值模拟时,有时需要修改geo_em.d01.nc文件中的变量来满足特定的研究需求。本文介绍如何修改geo_em.d01.nc中的变量,并保持其他信息不变。

背景

WRF模型的地理静态数据文件(geo_em*.nc)包含了模型运行所需的地形、土地利用、土壤类型等重要信息。有时为了进行敏感性实验或理想化试验,需要修改这些变量。

方法步骤

1. 找到读取函数

首先,找到编译WRF过程中自带的读取nc文件的Fortran函数:read_wrf_nc.f90

可以使用Linux命令查找:

find / -name 'read_wrf_nc.f90'

2. 修改源代码

找到文件后,修改这个文件,拉到代码最下面,你会看到USER_CODE这个子函数:

modify_geo.png

在if条件语句下,更改希望修改的变量。比如这里将原始文件中变量名为”LANDMASK”的数据,全部修改为0:

if (trim(varname) == 'LANDMASK') then
    ! 将所有LANDMASK值设为0
    do j = 1, ny
        do i = 1, nx
            data_array(i,j) = 0.0
        end do
    end do
    write(*,*) 'LANDMASK has been modified to 0'
end if

3. 编译程序

保存修改后,重新将其编译为.exe格式进行调用,这里使用gfortran:

gfortran read_wrf_nc.f90 -o read_wrf_nc.exe

4. 执行修改

将现在的geo_em.d01.nc复制到和该函数相同的目录下,使用命令:

./read_wrf_nc -EditData LANDMASK geo_em.d01.nc

5. 验证结果

运行完成后,得到的geo_em.d01.nc中的LANDMASK这个变量已经全部是0了:

image.png

数学原理

在修改地理静态数据时,需要注意数据的一致性。例如,如果修改了地形高度$h(x,y)$,那么相关的物理量也需要相应调整。

地表气压与地形高度的关系可以用气压高度公式表示:

\[p(z) = p_0 \exp\left(-\frac{z}{H}\right)\]

其中:

  • $p(z)$ 是高度z处的气压
  • $p_0$ 是海平面气压
  • $H$ 是大气标高(约7-8km)

注意事项

  1. 备份原始文件:在修改之前,务必备份原始的geo_em文件
  2. 变量一致性:修改某个变量时,要确保与其他相关变量的一致性
  3. 物理合理性:修改后的值应该在物理上合理
  4. 测试验证:修改后要进行模型测试,确保能正常运行

扩展应用

这种方法不仅适用于LANDMASK,还可以用于修改其他地理静态变量:

  • HGT_M: 地形高度
  • SOILCTOP: 土壤类型
  • LU_INDEX: 土地利用类型
  • XLAT_M, XLONG_M: 经纬度坐标

总结

通过修改WRF自带的读取函数,我们可以灵活地调整geo_em文件中的变量,这为进行各种敏感性实验和理想化研究提供了便利。但在使用时要注意保持数据的物理一致性和合理性。


参考资料:

  • WRF User’s Guide
  • WRF-ARW Technical Note

目录

统计

实时访问统计

--
总访问量
--
今日访问
--
在线用户

当前会话

访问时长: 00:00
页面浏览: 1
设备类型: Desktop
最后更新: --