WRF问题集锦

1. linux问题

1.1 miniconda问题

(1)许可证问题

问题:Connecting to repo.anaconda.com (repo.anaconda.com)|104.16.32.241|:443... connected. ERROR: cannot verify repo.anaconda.com's certificate, issued by ‘CN=E1,O=Let's Encrypt,C=US’:

解决:wget --no-check-certificate https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh

1.2 内存问题

(1)并行运行多个wrf的时候,最大32核心却只能运行18核心,并且出现进程被Killed

解决:①扩大linux的物理内存

②当物理内存不能增加时,扩大linux中的swap交换内存,可以参考本人这篇文章https://blog.youkuaiyun.com/m0_60013472/article/details/139262302

2.WRF安装问题

2.1WPS安装问题

(1)找不到WRF

问题:No compiled WRF code found

解决:①先检查WRF是否安装好

②输入export WRF_DIR=../WRF/(WRF安装路径)

(2)相关依赖包有问题

问题:没有出现ungrib.exe并且报错fatal error: jasper/jasper.h: No such file or directory

解决:安装libjasper-dev库

sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main" #更新源
sudo apt install libjasper-dev #安装库 

2.1 WRF安装问题 

(1)已经configure成功,在./compile em_real时却提示没有configure

问题:You must run the 'configure' script before running the 'compile' script!

Exiting...

解决:可能是编译器问题,WRF默认是gcc编译器,如果是intel编译器需要改代码,在./configure成功后输入以下命令:

vi configure.wrf,找到以下内容

DM_FC = mpif90 -f90=&(SFC)

DM_CC = mpicc -cc=&(SCC)

修改为以下代码,再./compile em_real

DM_FC = mpiifort

DM_CC = mpiicc

3.WRF运行问题

3.1WPS运行问题

(1)在运行metgrid.exe报错:The mandatory field TT was not found in any input data

解决:检查ungrid运行是否少输出时间,其实就是namelist.wps时间设置出错

3.2 WRF运行问题

3.2.1 ./real问题

(1)运行real报错:mismatch_landmask_ivgtyp

解决:静态的物理变量没有更新,将namelist.input中的surface_input_source = 3 改为1 ,即可运行,如果没有,手动添加

surface_input_source                = 1,

选1是指土地利用类型和土壤类型数据的来源格式是WPS/geogrid,但在实际土地利用类型中会重新计算得到;

选2是其他模式产生的grib格式数据;

选3完全来自前处理WPS/geogrid。

(2)地理数据替换问题

问题: error in the grid%tsk,识别地理数据错误,但是WPS中顺利生成met文件
 i,j=           1           1
 grid%landmask=   0.00000000    
 grid%tsk, grid%sst, grid%tmn=   88.4474258       0.00000000       88.4474258    
-------------- FATAL CALLED ---------------
FATAL CALLED FROM FILE:  <stdin>  LINE:    3012
grid%tsk unreasonable
解决:仔细检查自己地理数据的index部分,确保经纬度(研究范围左下角,来源于gis)、分辨率和相关土地利用数字正确,采用gdal转化的数据设置wordsize=1

归根还是geogrid.exe没有生成好的结果,可以ncview查看

(3)不同网格的地理数据类型冲突

----------------- ERROR -------------------
namelist    : NUM_LAND_CAT =         21
input files : NUM_LAND_CAT =         33 (from geogrid selections).
d03 2022-08-25_00:00:00 ---- ERROR: Mismatch between namelist and wrf input files for dimension NUM_LAND_CAT
NOTE:       1 namelist vs input data inconsistencies found.
-------------- FATAL CALLED ---------------

解决:检查WPS中的namelist.wps中的geog_data_res的路径调用,default默认调用modis,usgs_lake默认调用usgs,要保证所有的网格区域使用统一的地理数据类型,要么都是modis,要么都是usgs;或者修改相应地理数据的index的最大土地利用

(4)地理数据层数冲突

d01 2022-08-08_00:00:00  NetCDF error in ext_ncd_get_dom_ti.code INTEGER, line 83 Element JULDAY
d01 2022-08-08_00:00:00 mminlu = 'USGS'
d01 2022-08-08_00:00:00  input_wrf.F: SIZE MISMATCH:  namelist num_metgrid_levels    =    32
d01 2022-08-08_00:00:00  input_wrf.F: SIZE MISMATCH:  input file BOTTOM-TOP_GRID_DIMENSION  =           34
d01 2022-08-08_00:00:00 ---- ERROR: Mismatch between namelist and input file dimensions
NOTE:       1 namelist vs input data inconsistencies found.
-------------- FATAL CALLED ---------------
FATAL CALLED FROM FILE:  <stdin>  LINE:    1301
NOTE:  Please check and reset these options
-------------------------------------------

解决:把namelist.input中的num_metgrid_levels 改成32或34,与输入的met文件的层数保持一致,同样的参数,运行不同的时间段,比如2016年和2022年,就可能出现这个问题

3.2.2 ./wrf.exe问题

(1) 运行wrf报错:WOULD GO OFF TOP: KF_ETA_PARA I,J,DPTHMX,DPMIN 12 9 NaN 5000.00000

解决:积分过程应该是出现离散了,sf_surface_physics 不能设置为0

(2)并行运算中断但是也没报错

可能原因:一个linux中打开了过多wrf运行,导致内存不足,每个linux最多运行2个wrf

输入以下代码查看是否会输出cfl错误,如果有,则需要把时间步长调小一点,比如4*网格大小

grep -rn "cfl"  rsl.*

(3)提示太多土地类型

错误:ghg_input available only for these radiation schemes: CAM, RRTM, RRTMG, RRTMG_fast 

FATAL CALLED FROM FILE:  <stdin>  LINE:    2419
Warning: too many input landuse types

问题检查:检查顺序为1-2-3  

①查看是否为WRF4.5及以后版本,如果是,建议换成4.3及以下版本

②检查namelist.wps中多层嵌套是否采用同一套分类体系,比如要么都是usgs33类,要么都是modis21类,不能混用                         

③检查自己制作的地理数据的index文件,其中最大的层数是否设置错误

(4)并行运算核数过多

问题:生产了多个rsl文件,报错:wrf main: calling open_r_dataset for wrfinput NetCDF error: No such file or directory NetCDF error in wrf_io.F90, line 1077

解决:查看自己并行运算的核数是否超过了虚拟机支持的核数以及超过电脑所支持的核数(逻辑处理器数量),减少并行核数或扩大虚拟机的linux最大核数

(5)URBPARM参数输入格式问题

问题:

问题1:
#11  0x607f743eb247 in ???
#12  0x607f73d8fdd1 in ???
#13  0x607f72e1326e in ???
#14  0x607f72e125f4 in ???
#15  0x7d5ad8a29d8f in __libc_start_call_main
    at ../sysdeps/nptl/libc_start_call_main.h:58
#16  0x7d5ad8a29e3f in __libc_start_main_impl
    at ../csu/libc-start.c:392
#17  0x607f72e12634 in ???
#18  0xffffffffffffffff in ???

问题2:
At line 2398 of file module_sf_urban.f90

Fortran runtime error: Bad integer for item 1 in list input列表输入中有一个无效的整数

解决:检查URBPARM.TBL文件,是否存在格式问题,只能是整数,比如:SW_COND:  Air conditioning switch, 1=ON,要么1要么0;以及所有数字行的结尾没有任何符号

(6)namelist.input缺少部分参数

问题:-------------- FATAL CALLED ---------------
FATAL CALLED FROM FILE:  <stdin>  LINE:    2573
NOTE:       1 namelist settings are wrong. Please check and reset these options

解决:在 &domains下添加以下三行,时间步长一般为第一层网格分辨率*6

time_step                                    = 45,
 time_step_fract_num                 = 0,
 time_step_fract_den                  = 1,

(7)城市冠层高度高于第一个模型级别

FATAL CALLED FROM FILE:<stdin> LINE:      779
ZDC + Z0C + 2m is larger than the 1st WRF level - Stop in subroutine urban - change ZDC and Z0C

解决:修改namelist.input文件的 “eta_levels” 的参数,确保第一个模型层的高度低于建筑的高度。

4.地理数据制作问题

(1)在wps/geogrid/src中运行./a.out报错

问题:说明文件存在问题,首先检查文件传输过程是否损坏

line 35 of file asciitowps,f90(unit =10,file ='/home/workstation/WBP/WPSeogrid/src/test.txt')

gfortran runtime error: End of file

损坏的文件重新上传(本工作室的文件上传到centos时,选择tar.gz压缩包,并且拖拽复制进centos,如果报错点击重试

5.后处理图像问题

(1)生成的图像与实际的遥感的地理位置不正确,发生偏移

解决:检查图像对应的嵌套域的地理数据,①检查index文件,看经纬度是否与该地理数据在GIS中的左下角经纬度相同;看分辨率是否与原导出的遥感数据相同②检查地理数据,看地理数据的坐标系是否为WGS-1984,不是就需要修正

(2)图像彩图处理问题

fatal:CvtStringToCmap:Unable to convert string "pureblack" to ColorMap
warning:Error retrieving resource vcLevelPalette from args - Ignoring Arg
解决:修改fres@cnLevelSpacingF  = 1     ;-- contour level spacing,代表每个色块之间的值间隔,可以调大或调小以适应不同参数

### 解决 FATAL 错误和时间步长过大的方法 当遇到 `FATAL` 错误提示 "points exceeded CFL=2" 时,这表明模型的时间步长设置过大,违反了Courant–Friedrichs–Lewy (CFL) 条件[^1]。该条件用于确保数值解的稳定性,在天气预报模式中尤其重要。 为了修正此问题并防止进一步的错误发生: #### 调整 namelist.input 文件中的 dt 参数 在 WRF 模型配置文件 `namelist.input` 中有一个名为 `dt` 的参数控制着模拟的时间步长。减小这个值可以有效降低 CFL 数超过临界阈值的风险。建议尝试将当前设定减少约 20%-50%,具体取决于实际应用场景的需求[^2]。 ```bash &time_control ... dt = 90, ! 原始值可能是更大的数,比如 180 秒 ... / ``` #### 修改 dx 和 dy 网格间距 如果可能的话,增加水平分辨率(即减小网格尺寸),也可以帮助缓解 CFL 违规的情况。不过需要注意的是这样做会显著提升计算资源需求以及运行所需时间。 #### 使用更高级别的物理方案 有时采用更加复杂的物理过程描述方式能够更好地捕捉快速变化的现象而不触发 CFL 局限。例如启用显式的浅对流参数化可能会有所帮助。 #### 验证输入数据质量 确保初始场和其他外部强迫资料的质量良好也很关键。低品质的数据可能导致极端值出现从而引起不稳定现象。 ```python import numpy as np def check_data_quality(data_array): """检查给定数组是否存在异常大或小的值""" mean_val = np.mean(data_array) std_dev = np.std(data_array) upper_limit = mean_val + 3 * std_dev lower_limit = mean_val - 3 * std_dev outliers = data_array[(data_array > upper_limit) | (data_array < lower_limit)] return len(outliers), outliers.tolist() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值