【WRF运行第三期】服务器上运行WRF模型(官网案例-Hurricane Matthew)

news2024/11/16 19:28:50

【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

解决上个问题后,继而报错:

步骤4: 查看数据

#【非必要】
# 安装ncview
sudo apt install ncview
# 查看nc文件
ncview geo_em.d01.nc

1.3 将数据插值到网格点上(metgrid.exe)

在WPS目录下运行:

# 插值
./metgrid.exe

生成文件:

2 运行WRF(real.exe & wrf.exe)

步骤1: 切换至em_real目录
WRF的操作在em_real目录(运行真实案例)

cd ~/Build_WRF/WRF/test/em_real/

步骤2: 链接WPS到WRF

ln -sf ~/Build_WRF/WPS/met_em* .
mpirun -np 1 ./real.exe
ls -alh wrfbdy_d01 wrfinput_d01
# 修改WRF中的namelist.input
nano 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,
# 初始化模式:
./real.exe 
# 检查是否生成下面两个文件:
wrfinput_d01
wrfbdy_d01

步骤3: 运行WRF

mpirun -np 2 ./wrf.exe

注意: 代码里的2是指2核运行
此处已经完成,生成的wrf_out文件可以在修改后缀之后直接用python和NCL读取,读取方式类似于NC文件。

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模型(官网案例)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2159893.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Bytebase 2.22.3 - 一键回滚 PostgreSQL DML 变更

🚀 新功能 支持一键回滚 PostgreSQL DML 变更。 🎄 改进 优化 DML 事前备份和回滚体验: 引导用户创建 bbdataarchive 数据库。如果没有 bbdataarchive 数据库,无法开启备份功。用户现在可以在创建工单之后开启或关闭备份功能&a…

PyCharm远程连接AutoDL服务器实现程序调试

本文详细介绍了如何在Pycharm中配置SSH和SFTP,以便于在AOTUDL服务器上进行代码修改、调试。步骤包括新建工程、配置SFTP连接、设置Rootpath和Mapping,以及实现自动上传和下载文件的功能。远程服务器编辑调试只是试用于专业版本的pycharm,我的…

【LLM学习之路】9月22日 第九天 自然语言处理

【LLM学习之路】9月22日 第九天 直接看Transformer 第一章 自然语言处理 自然语言处理发展史 只要看的足够多,未必需要理解语言 统计语言模型发展史 统计语言模型: 判断一个句子是否合理,就计算这个句子会出现的概率 缺点是句子越长越…

微软推迟在MDM设备上启用OOBE强制更新 因为IT管理员反馈称缺乏控制

微软很久之前就计划在 Windows 10/11 OOBE 期间强制下载更新,即若检测到系统本身属于旧版本例如并未安装最新累积更新,则在 OOBE 期间强制下载最新累积更新并自动安装。这种更新方式已经在面向消费者的设备上启用,而上周微软则是在适用于企业…

盘点那些功能强大的思维导图在线工具,你用过几个

如果我们日常遇到比较繁杂的信息需要梳理,那我比较推荐使用思维导图在线工具进行梳理。这些工具可以通过图形化的方式展示各种信息之间的关系。这篇文章我将要介绍几款好用的思维导图工具帮我们更好的组织思维。 1.福晰思维导图 链接一下:https://www.…

GPIO与MIO控制LED——ZYNQ学习笔记2

一、GPIO简介 ZYNQ 分为 PS 和 PL 两部分,那么器件的引脚( Pin)资源同样也分成了两部分。 ZYNQ PS 中的外设可以通过 MIO( multiplexed I/O,多路复用 I/O)模块连接到 PS 端的引脚上,也可以通过 …

HTML讲解(三)通用部分

目录 1.空格标记 2.特殊文字的标记 3.注释语句 4.对文字字体的设置 5.修改文字形态 6.换行标记 7.居中标记 8.水平线标记 9.设置滚动弹幕 1.空格标记 在HTML中,我们想打印空格并不能直接敲一个空格键,因为如果是敲空格键,那无论你敲…

【JUC并发编程系列】深入理解Java并发机制:Volatile从底层原理解析到高级应用技巧(六、Volatile关键字、JMM、重排序、双重检验锁)

文章目录 【JUC并发编程系列】深入理解Java并发机制:Volatile从底层原理解析到高级应用技巧(六、Volatile关键字、JMM、重排序、双重检验锁)1. Volatile的特性2. Volatile的用法3. CPU多核硬件架构剖析4. JMM内存模型4.1 主要特性4.2 JMM 的工作原理4.3 实现机制 5.…

Leetcode面试经典150题-39.组合总数进阶:40.组合总和II

本题是扩展题,真实考过,看这个题之前先看一下39题 Leetcode面试经典150题-39.组合总数-CSDN博客 给定一个候选人编号的集合 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。 candidates 中的每个数…

Docker:解决开发运维问题的开源容器化平台

云计算de小白 Docker是一个开源的容器化平台,可以将应用程序及其依赖的环境打包成轻量级、可移植的容器。 Docker为什么这么受欢迎呢?原因很简单:Docker可以解决不同环境一致运行的问题,而且占用资源少,速度快。 所以好的东西…

链式队列操作

文章目录 🍊自我介绍🍊概述🍊链式队列代码linkstack.clinkstack.hmain.c 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以:点赞关注评论收藏(一键四连)哦~ 🍊自我介绍 Hello,大家好&…

OmniPeek 空口抓包软件安装指导

OmniPeek 空口抓包软件安装指导 1 双击omnp75安装包---Unzip解压缩 生成install包 2 进入install文件夹点击setup开始进入安装界面 3 点击install Omnipeek 4 点击next,勾选手动安装

云原生虚拟化kubevirt安装

kubevirt 介绍 Kubevirt 是 Redhat 开源的一套以容器方式运行虚拟机的项目,通过 kubernetes 云原生方式来管理虚拟机生命周期。它通过使用自定义资源(CRD)和其它 Kubernetes 功能来无缝扩展现有的集群,以提供一组可用于管理虚拟机…

9.23作业

仿照string类&#xff0c;自己手动实现 My_string 代码如下 MyString.h #ifndef MYSTRING_H #define MYSTRING_H #include <iostream> #include <cstring>using namespace std;class My_string { private:char *ptr; //指向字符数组的指针int size; …

socket.io-client实现实前后端时通信功能

这里我使用的后端 基于node.js的koa框架 前端使用的是vite {"name": "hou","version": "1.0.0","description": "","main": "app.js","scripts": {"test": "echo …

Pointnet++改进59:全网首发MogaBlock(2024最新模块)|用于在纯基于卷积神经网络的模型中进行判别视觉表示学习,具有良好的复杂性和性能权衡

简介:1.该教程提供大量的首发改进的方式,降低上手难度,多种结构改进,助力寻找创新点!2.本篇文章对Pointnet++特征提取模块进行改进,加入MogaBlock,提升性能。3.专栏持续更新,紧随最新的研究内容。 目录 1.理论介绍 2.修改步骤 2.1 步骤一 2.2 步骤二 2.3 步骤三 1.…

GreenPlum与PostgreSQL数据库

*** Greenplum*** 是一款开源数据仓库。基于开源的PostgreSQL改造&#xff0c;主要用来处理大规模数据分析任务&#xff0c;相比Hadoop&#xff0c;Greenplum更适合做大数据的存储、计算和分析引擎 它本质上是多个PostgreSQL面向磁盘的数据库实例一起工作形成的一个紧密结合的数…

微软宣布弃用面向企业的WSUS更新服务 仍然保留该服务但不再添加任何新功能

Windows Server Update Services 是微软面向企业推出的一项更新服务&#xff0c;该服务已经存在很多年&#xff0c;允许 IT 管理员控制内网设备的更新节奏。今年早些时候微软宣布将在 2025 年 4 月 18 日开始弃用 WSUS 驱动程序同步功能&#xff0c;因为大约只有 1/3 的 IT 管理…

生成PPT时支持上传本地的PPT模板了!

制作 PPT 时想要使用特定的 PPT 模板&#xff1f; 现在&#xff0c;歌者 PPT 的「自定义模板功能」已全面升级&#xff01;你可以轻松上传自己的本地 PPT 模板&#xff0c;无论是公司统一风格的模板&#xff0c;还是带有个人设计风格的模板&#xff0c;都能无缝导入歌者 PPT。…

单链表:学生信息管理系统

一、头文件 #ifndef __LINK_H__ #define __LINK_H__ #include <myhead.h> #define MAX 30 // 建立学生结构体 typedef struct student {int id; //学号char name[20]; //姓名float score; //分数 }stu;typedef struct node {union{int len;stu data;};struct node * nex…