0、环境
WRF v3.9.1.1
CMAQ v5.4
……
遇到问题再更新
1、WPS
2、OBSGRID
3、WRF
1)运行WRF时终止,单个日志文件报错2 OBS ARE NOT IN CHRONOLOGICAL ORDER NEW YEAR?
①问题详情
日志文件详情:
vi rsl.error.20240413有
出现报错:
“2 OBS ARE NOT IN CHRONOLOGICAL ORDER
NEW YEAR?”
当 timeob < rtlast 时,observation 日期时刻均早于当前 fdda 进行的时刻,fdda 找不到可用于 nudging 的适当日期的 observation ,故终止运行。
问题所在:OBSGRID生成,经run_cat_obs_file_d01.csh or d02.csh整合后的OBS_DOMAIN文件日期部分缺失。
发生原因:OBS_DOMAIN1??文件命名超出99,需更改文件名位数。
其他特征:运行obsgrid.exe时,除了会生成OBS_DOMAIN101、103……文件外,还会额外生成一个“ OBS_DOMAIN1** ”这样带星花*的文件。
残缺的OBS_DOMAIN文件展示:
vim OBS_DOMAIN101有
namelist设置时间为2024041300至2024042100,metoa文件正常生成,单个OBS_DOMAIN文件正常生成,但运行run_cat_obs_file_d01.csh后得到的整合OBS_DOMAIN101 & 201文件日期仅至202404190415。
终止后的wrfout文件展示:
拖入panoply有
终止前的最后一个wrfout文件仅包含0-3时的数据,从4时开始缺失。
②解决方法
进入/OBSGRID/src/;
将原有的driver.F90文件备份为.bak文件;
cp driver.F90 driver.F90.bak
修改driver.F90文件中关于OBS_DOMAIN文件名的3处设置;
更改前:obs_nudge_file,'("OBS_DOMAIN",i1,i2.2)'
更改后:obs_nudge_file,'("OBS_DOMAIN",i1,i3.3)'
源文件使用Fortran 90编写,修改后意为写入3位的integer,空出的位数用0补齐。
Fortran write函数格式使用参考:(笔记)Fortran中的write()函数_fortran write-CSDN博客
修改后在/OBSGRID/src/下重新编译;
返回/OBSGRID/运行obsgrid.exe发现OBS_DOMAIN命名位数增加;
运行run_cat_obs_files.csh之前需要修改读取格式;
运行后生成的汇总文件仍为OBS_DOMAIN?01,检查文件内容是否正确,修改完毕。
③相关延伸
若需要修改OBSGRID输出文件路径,可在/OBSGRID/src/中修改相应文件。
1、修改metoa文件输出路径:在main.F90文件中修改filename_out定义长度和WRITE后的文件名。
2、发现错误,正在修改中,请勿参考此条修改信息。
错误特征:产生“OBS_DOMAINxxx.nc”文件,尚不明确.nc文件是如何产生的,以及其具有什么作用,但其的生成伴随着OBS_DOMAIN文件曾大,运行WRF nudging报错:
FIO-F-231/formatted read/internal file/error on data conversion.
In source file module_date_time.f90, at line number 195.
似乎意味着找不到对应格式的日期。
修改OBS_DOMAIN文件输出路径:在driver.F90文件中修改obs_nudge_file定义长度,修改3处WRITE之后的文件名(以绝对路径来命名)。
注:若出现 FORTRAN “Symbol has no implicit type"错误,可参考https://blog.csdn.net/mikaeniks/article/details/37564927添加续行符。
3、修改wrf_sfdda文件输出路径:在proc_final_analysis.F90文件中修改sfcfile定义长度和绝对路径。
4、完成对.F文件的修改后,需要在/src/目录下重新编译。
make clean
make
检查输出文件路径及命名是否正确,完成修改。