【WRF运行第三期】服务器上运行WRF模型(官网案例-Hurricane Matthew)
【WRF运行第三期】运行WRF模型(官网案例-Hurricane Matthew)
- 官网案例-Hurricane Matthew介绍
- 0 创建DATA文件夹
- 1 WPS预处理
- 1.1 解压GRIB数据(ungrib.exe)
- 1.1.1 解压GRIB数据---GFS(Matthew案例研究数据)
- 1.1.2 解压SST数据---海温资料
- 另:报错-forrtl: severe (174): SIGSEGV, segmentation fault occurred
- 1.2 设置模式区域(geogrid.exe)
- 另:报错-./geogrid.exe: error while loading shared libraries: libnetcdff.so.7: cannot open shared object file: No such file or directory
- 另:报错-./geogrid.exe: error while loading shared libraries: libnetcdff.so.18: cannot open shared object file: No such file or directory
- 1.3 将数据插值到网格点上(metgrid.exe)
- 2 运行WRF(real.exe & wrf.exe)
- 3 ARWpost处理数据文件
- 参考
官网案例-Hurricane Matthew介绍
Single Domain Case - Hurricane Matthew
2016年10月,飓风马修在海地、古巴和巴哈马登陆,然后与美国东海岸平行,造成了广泛的破坏。

本案例研究的时间段为2016-10-06 - 2016-10-08。
我们将要设置的域如下所示。

0 创建DATA文件夹
在Build_WRF下创建一个DATA文件夹,用于存放要用的数据。
cd Build_WRF
# 1.创建一个DATA目录用于存放数据(一般为fnl数据,放在Build_WRF目录下)。
mkdir DATA
# 2.进入 DATA
cd DATA
1 WPS预处理
在模拟之前先确定模拟域(即模拟范围),并进行数据预处理(插值陆面数据,比如地形,土壤等数据;插值气象数据到模拟域)。
1.1 解压GRIB数据(ungrib.exe)
1.1.1 解压GRIB数据—GFS(Matthew案例研究数据)
步骤1-2: 下载并解压数据
# 1.下载官网案例数据(matthew) 【此处数据可替换自己所需的数据】
wget https://www2.mmm.ucar.edu/wrf/TUTORIAL_DATA/matthew_1deg.tar.gz
# 2.解压数据包
# 得到matthew文件夹
tar -xf matthew_1deg.tar.gz
终端窗口如下:

步骤3-4: 读取并查看数据
# 【非必要步骤】
# 3.用下面的命令读取数据内容(当前命令位置在DATA文件夹下)
# 注意 两个文件路径 g2print.exe、fnl_20161006_00_00.grib2
../WPS/util/g2print.exe ../DATA/matthew/fnl_20161006_00_00.grib2 >& g2print.log
../WPS-4.1/util/g2print.exe ../DATA/matthew/fnl_20161006_00_00.grib2 >& g2print.log# 4.用下面的命令查看数据内容
nano g2print.log
说明: nano命令可以打开指定文件进行编辑,默认情况下它会自动断行,即在一行中输入过长的内容时自动拆分成几行
另: 按下Ctrl + O来保存文件,然后按下Ctrl + X退出nano编辑器。
g2print.log文件【文件位置:/Build_WRF/DATA/g2print.log】

数据说明:GFS(全球预报系统)是NCEP的模式产品
- 类型:GRIB2数据
- 分辨率:全球数据;每6小时输出一次;27个压力层(1000-10hPa;包括表层)
- 时间段:2016-10-06-00至2016-10-08-00(时间频率6小时)
步骤5-7:
# 5.进入WPS文件(准备链接数据)
cd ~/Build_WRF/WPS/
cd ~/wrf/WPS-4.1# 6.链接GFS Vtable
ln -sf ungrib/Variable_Tables/Vtable.GFS Vtable# 7.通过脚本link_grib.csh链接grib数据,需要将最开始下载的matthew文件下的所有fnl***.grib2文件(注意文件地址)进行链接:
./link_grib.csh ../DATA/matthew/fnl
得到:会产生一些链接:GRIBFILE.AAA~GRIBFILE.AAI
文件位置:/Build_WRF/WPS/

步骤8: 切换WPS目录且编辑namelist.wps
文件位置:~/Build_WRF/WPS/namelist.wps
注意:下面三步都有文件生成,具体名称与使用的动态核心(ARM/NMM)有关。
修改文件内容如下:

修改完成后保存并退出。
步骤9: 解压GRIB数据(ungrib.exe)
在WPS目录下运行:
# 9.解码资料
./ungrib.exe
得到:生成中间文件FILE:YYYY-MM-DD_HH
终端界面如下:(显示解码成功)

# 【非必要步骤】
# 了解中间文件:2016-10-06_00
./util/rd_intermediate.exe FILE:2016-10-06_00
1.1.2 解压SST数据—海温资料
步骤1-2: 下载并解压数据
# 进入数据文件夹DATA
cd /home/wanzhou/Build_WRF/DATA
# 1.下载官网案例数据(matthew_sst) 【此处数据可替换自己所需的数据】
wget https://www2.mmm.ucar.edu/wrf/TUTORIAL_DATA/matthew_sst.tar.gz
# 2.解压数据包
# 得到matthew_sst文件夹
tar -xf matthew_sst.tar.gz
终端界面如下:

步骤3-5:链接数据
# 3.进入WPS文件(准备链接数据)
cd ~/Build_WRF/WPS/
cd /home/wanzhou/wrf/WPS-4.1# 4.链接GFS Vtable
ln -sf ungrib/Variable_Tables/Vtable.SST Vtable# 5.通过脚本link_grib.csh链接grib数据
./link_grib.csh ../DATA/matthew_sst/rtg_sst_grb
终端界面如下:

步骤6:切换WPS目录且编辑namelist.wps
文件位置:~/Build_WRF/WPS/namelist.wps
# 6.编辑namelist.wps
nano namelist.wps
# 需要修改的内容
prefix = 'SST',
得到:

步骤7: 解码资料
# 7.解码资料
./ungrib.exe
得到:(说明成功啦)

另:报错-forrtl: severe (174): SIGSEGV, segmentation fault occurred

报错原因:运行程序较大,而Linux系统初始的堆栈大小(stack size)太小的缘故。
解决方案可参见另一博客-WPS ./ungrib.exe报错:forrtl: severe (174): SIGSEGV, segmentation fault occurred
只需要在命令行窗口中输入:
ulimit -s unlimited
1.2 设置模式区域(geogrid.exe)
geogrid.exe:用以确定模拟区域,并将陆面数据插值到模拟区域。
步骤1: 切换WPS目录且编辑namelist.wps
文件位置:~/Build_WRF/WPS/namelist.wps
cd /home/wanzhou/wrf/WPS-4.1
# 编辑namelist.wps(注意:本例中没有进行嵌套,忽略第二行的数值)
nano namelist.wps# 需要修改的内容
max_dom = 1
parent_id = 1,
parent_grid_ratio = 1,
i_parent_start = 1,
j_parent_start = 1,
e_we = 91,
e_sn = 100,
geog_data_res = 'default',
dx = 27000,
dy = 27000,
map_proj = 'mercator',
ref_lat = 28.00,
ref_lon = -75.00,
truelat1 = 30.0,
truelat2 = 60.0,
stand_lon = -75.0,
geog_data_path = 'Your WPS_GEOG data location'
# 注意最后一行位置
得到:

步骤2: 绘制所设区域,查看是否合理
# 绘制所设区域,查看是否合理
ncl util/plotgrids.ncl
NCL版本不同导致无法查看。NCL下载及安装可参见另一博客-【WRF工具】服务器上使用conda安装NCL。

步骤3: 生成静态数据
# 生成静态数据
./geogrid.exe
生成文件geo_nmm.d01.nc。终端界面如下:
另:报错-./geogrid.exe: error while loading shared libraries: libnetcdff.so.7: cannot open shared object file: No such file or directory
生成静态数据时,如报错(./geogrid.exe: error while loading shared libraries: libnetcdff.so.7: cannot open shared object file: No such file or directory),终端界面如下:
相关解答-WPS运行geogrid.exe时出错。
(RESOLVED) Geogrid Error: error while loading shared libraries: libnetcdf.so.7
解决方案:
查看netcdf地址:
echo $NETCDF
终端界面如下:

export LD_LIBRARY_PATH=$DIR/netcdf/lib:$LD_LIBRARY_PATH
export PATH=$DIR/netcdf/lib:$PATH

输入以下命令:
find /home/wanzhou -name libnetcdff.so.7
find /home/wanzhou -name libnetcdff.so.18
find /home -name libnetcdff.so.18
终端窗口如下:

常规思路,将缺失的文件拷贝至nedcdf库中,操作命令如下:
cd /home/wanzhou/miniconda3/envs/ncl_stable/lib
cp libnetcdff.so.7 /home/wanzhou/wrf/LIBRARIES/netcdf/lib
另:报错-./geogrid.exe: error while loading shared libraries: libnetcdff.so.18: cannot open shared object file: No such file or directory
解决上个问题后,继而报错:思路就是缺啥文件补上啥,在补充数个文件后,终于成功运行啦!!!

确保 geo_em.d01.nc 文件已经生成。

如果未能成功生成此文件,可直接在官网下载此文件,Setup the Model domain (geogrid.exe)。
步骤4: 查看数据
#【非必要】
# 安装ncview
sudo apt install ncview
# 查看nc文件
ncview geo_em.d01.nc
1.3 将数据插值到网格点上(metgrid.exe)
在WPS目录下运行:
# 插值
./metgrid.exe
生成文件:

以下文件将被创建:
met_em.d01.2016-10-06_00:00:00.nc
met_em.d01.2016-10-06_06:00:00.nc
met_em.d01.2016-10-06_12:00:00.nc
met_em.d01.2016-10-06_18:00:00.nc
met_em.d01.2016-10-07_00:00:00.nc
met_em.d01.2016-10-07_06:00:00.nc
met_em.d01.2016-10-07_12:00:00.nc
met_em.d01.2016-10-07_18:00:00.nc
met_em.d01.2016-10-08_00:00:00.nc
如果未能成功生成此文件,可直接在官网下载此文件,Interpolate the input data onto our model domain (metgrid.exe)。
2 运行WRF(real.exe & wrf.exe)
步骤1: 切换至em_real目录
WRF的操作在em_real目录(运行真实案例)
cd ~/wrf/WRF-4.1.3/test/em_real/

步骤2: 链接WPS中生成的met_em文件到metgrid.exe
ln -sf ~/wrf/WPS-4.1/met_em* .
ln -sf ~/wrf/WPS-4.1/met_em.d01.2016-10* .
步骤3: 修改WRF(/run)中的namelist.input文件
注意 1:由于我们只对区域 1感兴趣,因此可以忽略其他列的所有值。
在 namelist.input 文件中添加以下更改。
run_days = 0,
run_hours = 48,
run_minutes = 0,
run_seconds = 0,
start_year = 2016,
start_month = 10,
start_day = 06,
start_hour = 00,
end_year = 2016,
end_month = 10,
end_day = 08,
end_hour = 00,
interval_seconds = 21600
input_from_file = .true.,
history_interval = 180,
frames_per_outfile = 1,
restart = .false.,
restart_interval = 1440,
time_step = 150,
max_dom = 1,
e_we = 91,
e_sn = 100,
e_vert = 45,
num_metgrid_levels = 32
dx = 27000,
dy = 27000,
修改后文件内容如下:


步骤4: 运行“real.exe”程序(确保程序运行正确)
注意:此操作将覆盖您在以前运行中生成的“wrfinput_d01”和“wrbdy_d01”文件,如果您希望保留这些文件,请将它们保存到其他位置。
mpirun -np 1 ./real.exe
查看以下两个文件是否被创建:
wrfinput_d01
wrfbdy_d01
步骤5: 运行wrf.exe(确保程序运行正常)
mpirun -np 2 ./wrf.exe
注意: 代码里的2是指2核运行
此处已经完成,生成的wrf_out文件可以在修改后缀之后直接用python和NCL读取,读取方式类似于NC文件。

检查是否创建了以下文件:
wrfout_d01_2016-10-06_00:00:00
wrfout_d01_2016-10-06_03:00:00
wrfout_d01_2016-10-06_06:00:00
wrfout_d01_2016-10-06_09:00:00
wrfout_d01_2016-10-06_12:00:00
wrfout_d01_2016-10-06_15:00:00
wrfout_d01_2016-10-06_18:00:00
wrfout_d01_2016-10-06_21:00:00
wrfout_d01_2016-10-07_00:00:00
wrfout_d01_2016-10-07_03:00:00
wrfout_d01_2016-10-07_06:00:00
wrfout_d01_2016-10-07_09:00:00
wrfout_d01_2016-10-07_12:00:00
wrfout_d01_2016-10-07_15:00:00
wrfout_d01_2016-10-07_18:00:00
wrfout_d01_2016-10-07_21:00:00
wrfout_d01_2016-10-08_00:00:00
wrfrst_d01_2016-10-07_00:00:00
wrfrst_d01_2016-10-08_00:00:00
3 ARWpost处理数据文件
ARWpost安装及编译可参见另一博客-【WRF运行第二期(Ubuntu)】ARWpost安装及错误总结。
利用ARWpost处理数据文件代码如下:
cd ~/Build_WRF/ARWpost/
./ARWpost.exe
生成的ctl和dat文件可以用grads处理
参考
1、WRF官网-Single Domain Case - Hurricane Matthew
2、CSDN博客-WRF模型运行教程(ububtu系统)–III.运行WRF模型(官网案例)
3、CSDN博客-WRF模式的运行(三)
相关文章:
【WRF运行第三期】服务器上运行WRF模型(官网案例-Hurricane Matthew)
【WRF运行第三期】运行WRF模型(官网案例-Hurricane Matthew) 官网案例-Hurricane Matthew介绍0 创建DATA文件夹1 WPS预处理1.1 解压GRIB数据(ungrib.exe)1.1.1 解压GRIB数据---GFS(Matthew案例研究数据)1.1…...
基于springboot的书店图书销售管理系统的设计与实现 (含源码+sql+视频导入教程)
👉文末查看项目功能视频演示获取源码sql脚本视频导入教程视频 1 、功能描述 基于springboot的书店图书销售管理系统拥有三个角色 管理员:用户管理、角色管理、权限管理、店铺管理等商家:图书管理、上架图书、访问量统计、销售总额统计、订单…...
Spring MVC 基本配置步骤 总结
1.简介 本文记录Spring MVC基本项目拉起配置步骤。 2.步骤 在pom.xml中导入依赖: <dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>6.0.6</version><scope>…...
HCIP--以太网交换安全(一)
以太网交换安全概述:以太网交换安全是一系列技术和策略的集合,旨在保护以太网交换机免受各种网络攻击和威胁。 端口隔离 一、端口隔离概述: 作用:可以实现同一个VLAN内端口的隔离 优势: 端口隔离功能为用户提供了更…...
PyQt5中关于QLineEdit的空输入报错的简单处理
PyQt5中关于QLineEdit的空输入报错的简单处理 前言分析原因解决办法总结 前言 在PyQt5的界面中对于数据的输入,最常用的就是QLineEdit控件,该控件作为基本的数据输入控件已经能满足我们的简单使用。在使用过程,出现闪退情况,发现…...
【前端】ES12:ES12新特性
文章目录 1 逻辑赋值操作符2 数字分隔符3 replaceAll4 Promise.any5 WeakRef6 FinalizationRegistry 1 逻辑赋值操作符 逻辑赋值操作符 ??、&&、 ||。 let a true let b false //a && b //false a || b ; //true console.log(a)let obj {name:"ker…...
语音识别(非实时)
1.环境 python :3.10.14 2.完整代码 import whisper #whisper import wave # 使用wave库可读、写wav类型的音频文件 import pyaudio # 使用pyaudio库可以进行录音,播放,生成wav文件 def record(time): # 录音程序# 定义数据流块CHUNK …...
【计算机网络】--URL统一资源定位符
一个网站地址实例 scheme://host.domain:port/path/filename scheme——定义因特网服务的类型,常见的类型是http host——定义域主机(http的默认主机是www) domain———定义因特网的域名,例如,jinyun.fun …...
在成都建“圈”五年,鲲鹏让智能化新风吹遍巴蜀大地
科技圈里流行着“互联网四大中心”的说法,即南边的深圳、东边的杭州、北边的北京和西边的成都。 深圳、杭州、北京几乎没有太大的争议,这里是国内著名的互联网公司聚集地,有着国内排行前三的互联网企业总部,单单一个北京西二旗就…...
Unity图形用户界面!*★,°*:.☆( ̄▽ ̄)/$:*.°★* 。(万字解析)
Unity 3D GUI 简介 游戏开发过程中,开发人员往往会通过制作大量的图形用户界面( Graphical User Interface,GUI )来增强游戏与玩家的交互性。 Unity 3D 中的图形系统分为 OnGUI、NGUI、UGUI等,这些类型的图形系统内容…...
【JAVA报错已解决】Java.lang.NullPointerException
🎬 鸽芷咕:个人主页 🔥 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想,就是为了理想的生活! 专栏介绍 在软件开发和日常使用中,BUG是不可避免的。本专栏致力于为广大开发者和技术爱好者提供一个关于BUG解决的经…...
JSON 教程
JSON 教程 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </head> …...
HBase 的基本架构 详解
HBase 是一个分布式的、面向列的数据库,构建在 HDFS(Hadoop Distributed File System)之上,提供高效的随机读写操作。为了全面理解 HBase 的基础架构,需要从逻辑架构、物理存储、组件之间的交互、数据管理和底层设计出…...
crypt.h:No such file or directory报错处理
crypt.h:No such file or directory 报错处理 前言:本文初编辑于2024年9月27日 CSDN主页:https://blog.csdn.net/rvdgdsva 博客园主页:https://www.cnblogs.com/hassle 博客园本文链接: 大!萌࿰…...
网络消费维权的9个常见法律问题
一、忘记付尾款,定金能否退还? 不能。消费者在网络提交订单后,合同即成立。合同成立后,消费者的义务为按时付款。若消费者在支付定金后未能支付尾款,即未能履行付款义务,会导致合同无法履行,构…...
detectron2是怎么建立模型的?以SparseInst代码为例
看SparseInst论文发现论文里有些地方没讲清楚;遂找SparseInst源码来看模型结构 我选择从推理代码来找模型结构: 经探索,在SparseInst代码里,推理需要执行代码 python demo.py --config-file configs/sparse_inst_r50_base.yaml …...
kafka监控平台Kafdrop:使用记录
背景 AI的发展真是太方便了,让它给我推荐一款轻量级,没有学习曲线的kafka监控平台,它就给我推荐这一款。用了一下果然没有一点学习曲线。 目前已经满足了我的需求,可视化界面,topic、消息、消费者group信息以及消费情…...
的使用和内联函数
今天我们来了解一下C中的&和内联函数 引用标识符& C觉得C语言部分的指针有些麻烦,容易混乱,所以C创造了一个标识符&,表示是谁的别名。跟指针对比一下:int* a1&b1;int &a2b2;这样看,显然a1存放的…...
征程6 上基于 DEB 工具实现包管理
1.引言 在开发、调测过程中,开发人员需要将系统软件、应用软件部署到 Soc 板端,以用于运行调试。传统的部署方式是通过解压复制或者调用部署脚本。这样的部署方式需要有着方式不统一、维护投入大的缺点。 在 linux 系统上,大多采用包管理的…...
【git】一文详解: git rebase到底有啥问题
引子 我反复看到这样的评论:“git rebase 像屎一样”。人们似乎对此有很强烈的感受,我真的很惊讶,因为我没有遇到太多使用 rebase 的问题,而且我一直在使用它。 使用 rebase 的成本有多大?在实际使用中它给你带来了什…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...
Lombok 的 @Data 注解失效,未生成 getter/setter 方法引发的HTTP 406 错误
HTTP 状态码 406 (Not Acceptable) 和 500 (Internal Server Error) 是两类完全不同的错误,它们的含义、原因和解决方法都有显著区别。以下是详细对比: 1. HTTP 406 (Not Acceptable) 含义: 客户端请求的内容类型与服务器支持的内容类型不匹…...
rknn优化教程(二)
文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK,开始写第二篇的内容了。这篇博客主要能写一下: 如何给一些三方库按照xmake方式进行封装,供调用如何按…...
将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?
Otsu 是一种自动阈值化方法,用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理,能够自动确定一个阈值,将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...
04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
JUC笔记(上)-复习 涉及死锁 volatile synchronized CAS 原子操作
一、上下文切换 即使单核CPU也可以进行多线程执行代码,CPU会给每个线程分配CPU时间片来实现这个机制。时间片非常短,所以CPU会不断地切换线程执行,从而让我们感觉多个线程是同时执行的。时间片一般是十几毫秒(ms)。通过时间片分配算法执行。…...
在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...
Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)
在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...
Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信
文章目录 Linux C语言网络编程详细入门教程:如何一步步实现TCP服务端与客户端通信前言一、网络通信基础概念二、服务端与客户端的完整流程图解三、每一步的详细讲解和代码示例1. 创建Socket(服务端和客户端都要)2. 绑定本地地址和端口&#x…...
