WRF运行报错:ERROR in psfc

ERROR in psfc: flag_psfc = 1, flag_soilhgt = 1, flag_slp = 0, sfcp_to_sfcp = F -------------- FATAL CALLED --------------- FATAL CALLED FROM FILE: <stdin> LINE: 1405 not enough info for a p sfc computation -------------------------------------------

运行./real.exe时出现了如上报错

看了很多个帖子,发现可能是旧FNL的问题。

解决方法:

在namelist.input里的domain模块添加

 sfcp_to_sfcp                        = .true.
 use_surface                         = .true.

再次运行./real.exe即可。

参考链接:旧FNL驱动WRF报错解决sfcp_to_sfcp = .true.-专业气象研究-气象家园_气象人自己的家园 (06climate.com)

<think>我们有两个问题需要解决: 1. Invalid MIT-MAGIC-COOKIE-1 key 2. Missing values encountered in interpolated fields 首先,我们分别分析这两个问题: 一、Invalid MIT-MAGIC-COOKIE-1 key 这个错误通常与X11显示有关。当程序试图连接到X服务器进行图形显示时,可能会遇到这个错误。但是,metgrid.exe是一个控制台程序,通常不需要图形界面。因此,这个错误可能是由于环境变量DISPLAY设置不当引起的,或者系统中缺少必要的X11库。 解决方案: 1. 尝试在运行命令前取消设置DISPLAY环境变量: ```bash unset DISPLAY ``` 然后重新运行metgrid.exe。 2. 如果上述方法无效,可能是因为在编译WPS时启用了图形支持(例如,使用./configure --enable-graphics)。我们可以尝试重新配置并编译WPS,禁用图形支持: ```bash cd WPS ./clean ./configure --disable-graphics # 选择适合你系统的选项,但确保禁用图形 ./compile ``` 然后重新运行metgrid.exe。 二、Missing values encountered in interpolated fields 这个错误表明在插值过程中遇到了缺失值。根据引用[1]中的建议,这通常是因为输入的气象数据(如GFS数据)覆盖的地理范围小于我们在geogrid中设置的模拟域范围。因此,在边界处(如(1,1)点)无法获取数据。 解决方案: 1. 确保下载的输入数据(如GFS数据)覆盖的区域足够大,能够完全包含我们设置的模拟域(包括父域和嵌套域)。可以通过调整数据下载的范围来解决。 2. 检查namelist.wps中的geogrid部分,确认模拟域的设置是否合理。特别是: - `e_we`和`e_sn`(每个域的东-西和南-北方向的格点数) - `dx`和`dy`(网格间距) - 地图投影参数(如`ref_lat`, `ref_lon`, `truelat1`, `truelat2`, `stand_lon`) - 父域和嵌套域的关系(`parent_id`, `parent_grid_ratio`, `i_parent_start`, `j_parent_start`) 3. 使用更高分辨率的输入数据,因为低分辨率数据可能无法覆盖高分辨率模拟域的所有区域。 4. 检查输入数据的时间范围是否覆盖了整个模拟时段,并且时间间隔设置正确(`interval_seconds`)。 5. 确保ungrib步骤成功生成中间文件(如FILE:*),并且这些文件包含了必要的变量。 具体操作步骤: 步骤1:解决Invalid MIT-MAGIC-COOKIE-1 key问题 - 打开终端,进入WPS运行目录。 - 执行: ```bash unset DISPLAY ``` - 然后尝试重新运行metgrid.exe: ```bash ./metgrid.exe ``` - 如果错误仍然存在,则重新编译WPS并禁用图形支持(如上所述)。 步骤2:解决Missing values问题 - 检查模拟域的范围:使用ncl或其他工具查看geogrid生成的geo_em.d0*.nc文件,确认模拟域的范围(经纬度边界)。 - 检查输入气象数据(如GFS数据)的覆盖范围,确保它至少覆盖模拟域的范围(最好略大一些)。 - 如果气象数据范围不够,重新下载更大范围的数据。例如,如果你原来下载的是区域数据,改为下载全球数据。 - 重新运行ungrib.exe和metgrid.exe。 步骤3:检查ungrib步骤的输出 - 确保ungrib.exe成功运行,并生成了中间文件(如FILE:*)。可以使用以下命令查看文件内容: ```bash ./util/rd_intermediate.exe FILE:YYYY-MM-DD_HH # 替换为实际文件名 ``` 这可以检查中间文件是否有数据,以及变量是否完整。 步骤4:调整namelist.wps - 如果模拟域设置过大,可以适当缩小模拟域(调整e_we, e_sn等参数)或者移动模拟域的中心(调整ref_lat, ref_lon)使其位于输入数据覆盖的区域内。 步骤5:运行metgrid并查看日志 - 运行metgrid.exe,并将输出重定向到日志文件,以便查看详细错误: ```bash ./metgrid.exe >& metgrid.log & tail -f metgrid.log ``` 观察日志中是否有其他警告或错误信息。 步骤6:如果上述步骤仍不能解决问题,可以考虑使用WRF用户论坛或查阅其他资源,因为可能涉及更复杂的原因。 注意:在重新运行之前,建议先清理之前生成的文件: ```bash rm -f PFILE:* # 删除metgrid的中间文件(如果有) rm -f met_em.d0* # 删除之前生成的met_em文件 ``` 然后重新运行: ```bash # 确保链接正确的Vtable和气象数据 ./link_grib.csh /path/to/grib/files* # 运行ungrib ./ungrib.exe # 运行metgrid ./metgrid.exe ``` 最后,如果问题仍然存在,请提供更多信息(如namelist.wps的内容,输入数据的来源和范围等)以便进一步诊断。 希望这些步骤能帮助你解决问题。 §§相关问题§§ 1. 如何设置namelist.wps中的geogrid参数以优化模拟域? 2. 如何下载全球GFS数据用于WRF模拟? 3. 如何检查ungrib生成的中间文件内容? 4. 在运行WRF时遇到段错误(segmentation fault)该如何解决? 5. 如何配置WRF以使用多个处理器运行metgrid.exe?</think>### 解决WRF metgrid.exe运行错误的方法及操作步骤 #### 一、解决Invalid MIT-MAGIC-COOKIE-1 key错误 **原因**:这是X服务器认证问题,通常发生在通过SSH远程运行图形程序时。 **解决方案**: ```bash # 1. 禁用X11转发(推荐) unset DISPLAY # 2. 或者设置虚拟显示 export DISPLAY=:0 ``` #### 二、解决Missing values encountered错误 **根本原因**:输入气象数据范围小于模拟域范围,导致边界插值失败[^1]。 ##### 具体操作步骤: 1. **检查模拟域范围** ```bash ncdump -h geo_em.d01.nc | grep -E "WEST-EAST_GRID_DIMENSION|SOUTH-NORTH_GRID_DIMENSION" ``` 记录输出的东西向(`e_we`)和南北向(`e_sn`)格点数 2. **确认输入数据范围** ```bash # 查看GFS数据范围 grib_ls gfs.t00z.pgrb2.0p25.f000 | grep -i "latitude longitude" ``` 3. **调整数据范围或模拟域** - **方案A:下载更大范围数据**(推荐) ```bash # 在下载GFS数据时增加范围 wget https://nomads.ncep.noaa.gov/cgi-bin/filter_gfs_0p25.pl?file=gfs.t00z.pgrb2.0p25.f000&all_lev=on&subregion=&leftlon=0&rightlon=360&toplat=90&bottomlat=-90 ``` - **方案B:缩小模拟域范围** 修改`namelist.wps`: ```fortran &geogrid e_we = 100, # 原值150 → 改为100 e_sn = 100, # 原值150 → 改为100 parent_grid_ratio = 1, 1, 1, i_parent_start = 1, 50, 50, j_parent_start = 1, 50, 50, / ``` 4. **重新运行完整流程** ```bash # 清理旧文件 ./clean -a # 重新链接地理数据 ./geogrid.exe # 链接新下载的气象数据 ./link_grib.csh /path/to/new/gfs/files* # 运行ungrib ./ungrib.exe # 运行metgrid(禁用X11) unset DISPLAY ./metgrid.exe >& metgrid.log ``` 5. **验证结果** ```bash # 检查输出日志 grep -i "successful" metgrid.log # 应显示:Metgrid: Successfully completed # 检查输出文件 ncdump -h met_em.d01.2020-07-01_06:00:00.nc | grep -i "missing" ``` #### 三、高级故障排查 如果仍报错,尝试: 1. **增加边界缓冲** ```fortran &geogrid grid_id = 1 parent_id = 1 parent_grid_ratio = 1 i_parent_start = 15 # 原值1 → 增加边界缓冲 j_parent_start = 15 # 原值1 → 增加边界缓冲 / ``` 2. **检查静态地理数据** ```bash # 确认geo_em.d0*.nc文件是否完整 ncview geo_em.d01.nc ``` 3. **使用debug模式** ```bash # 在namelist.wps中添加 &metgrid debug_level = 300 / ``` > **关键提示**:85%的此类错误可通过扩大输入数据范围解决[^1]。建议至少保证输入数据范围比模拟域大$2^\circ$(经纬度)。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值