WRFChem mozbc 运行报错 next_filenm: failed to read

1. CAM-Chem数据下载

下载地址https://www.acom.ucar.edu/cam-chem/cam-chem.shtml 

选择需要的经纬度和时间 注意:时间要比模拟时间早/晚1-2天,选择的区域范围要大于你的模拟区域

等待邮件下载即可

2. mozbc 运行

打开你自己的.inp文件

&control
do_bc     = .true.
do_ic     = .true.
domain    = 1 ## 按照namelist.input domian数进行设定
dir_wrf   = '../WRF/' ## wrfinput存放位置
dir_moz = './cam_data/' ## 边界层数据cam-chem或其他数据的存放位置
fn_moz = 'camchem-20240607021255393928.nc' ## 下载的cam-chem数据名称
moz_var_suffix = ''
def_missing_var = .true.
spc_map = 'o3->O3', 'n2o -> N2O', 'no -> NO',
          'no2 -> NO2', 'nh3 -> NH3', 'hno3 -> HNO3', 'hno4 -> HO2NO2',
          'n2o5 -> N2O5', 'h2o2 -> H2O2',
          'ch4 -> CH4', 'co -> CO', 'ch3ooh -> CH3OOH',
          'hcho -> CH2O', 'ch3oh -> CH3OH', 'c2h4 -> C2H4',
          'ald -> CH3CHO', 'acet -> CH3COCH3', 'mgly -> CH3COCHO',
          'pan -> PAN', 'mpan -> MPAN', 'macr -> MACR',
          'mvk -> MVK', 'c2h6 -> C2H6', 'c3h6 -> C3H6', 'c3h8 -> C3H8',
          'c2h5oh -> C2H5OH', 'c10h16 -> MTERP',
          'isopr -> ISOP','acetol -> HYAC', 'mek -> MEK',
          'bigene -> BIGENE', 'bigalk -> BIGALK',
          'tol -> TOLUENE', 'benzene -> BENZENE', 'xylenes -> XYLENES',
          'cres -> CRESOL', 'dms -> DMS', 'so2 -> SO2',

运行 ./mozbc <yours_mozbc.inp>& test,log

出现以下报错

3. 解决问题

多方查找发现是cam-chem数据时间下载的问题,但是一直没有找到合适的下载时间,于是尝试修改cam-chem中的时间

3.1 查看wrfbdy时间和cam-chem时间

查看wrfbdy时间 ncdump -v Times wrfbdy_d01

查看cam-chem时间属性 ncdump -v time,time_bnds,date,datesec camchem-20240606230822105693.nc

发现cam-chem时间属性数据顺序有些不对 所以尝试用ncl代码进行数据顺序的修改

begin
  ; 打开 NetCDF 文件进行读取和写入
  f = addfile("camchem.nc", "w")

  ; 读取原始变量数据
  date_data = f->date
  datesec_data = f->datesec
  time_data = f->time

  ; 打印原始变量数据
  print("原始 date 数据: " + date_data)
  print("原始 datesec 数据: " + datesec_data)
  print("原始 time 数据: " + time_data)

  ; 新的 date 数据
  new_date_data = (/20161230, 20161230, 20161230, 20161230, \
                    20161231, 20161231, 20161231, 20161231, \
                    20170101, 20170101, 20170101, 20170101, \
                    20170102, 20170102, 20170102, 20170102, \
                    20170103, 20170103, 20170103, 20170103, \
                    20170104, 20170104, 20170104, 20170104, \
                    20170105, 20170105, 20170105, 20170105, \
                    20170106, 20170106, 20170106, 20170106, \
                    20170107/)

  ; 新的 time 数据
  new_time_data = (/6148, 6148.25, 6148.5, 6148.75, \
  ; 新的 time 数据
  new_time_data = (/6148, 6148.25, 6148.5, 6148.75, \
                    6149, 6149.25, 6149.5, 6149.75, \
                    6150, 6150.25, 6150.5, 6150.75, \
                    6151, 6151.25, 6151.5, 6151.75, \
                    6152, 6152.25, 6152.5, 6152.75, \
                    6153, 6153.25, 6153.5, 6153.75, \
                    6154, 6154.25, 6154.5, 6154.75, \
                    6155, 6155.25, 6155.5, 6155.75, \
                    6156/)

  ; 新的 datesec 数据
  new_datesec_data = (/0, 21600, 43200, 64800, \
                       0, 21600, 43200, 64800, \
                       0, 21600, 43200, 64800, \
                       0, 21600, 43200, 64800, \
                       0, 21600, 43200, 64800, \
                       0, 21600, 43200, 64800, \
                       0, 21600, 43200, 64800, \
                       0, 21600, 43200, 64800, \
                       0/)

  ; 打印新的变量数据
  print("新的 date 数据: " + new_date_data)
  print("新的 datesec 数据: " + new_datesec_data)
  print("新的 time 数据: " + new_time_data)
  print("新的 time 数据: " + new_time_data)

  ; 写入新的数据回原文件
  f->date = new_date_data
  f->datesec = new_datesec_data
  f->time = new_time_data

  ; 打印更新后的数据
  print("更新后的 date 数据: " + new_date_data)
  print("更新后的 datesec 数据: " + new_datesec_data)
  print("更新后的 time 数据: " + new_time_data)

end

再次查看time的结果

time顺序已经调整好

重新运行mozbc

3. 参考链接

https://bbs.06climate.com/forum.php?mod=viewthread&tid=104546&highlight=mozbc

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值