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