WRF安装和运行的技术教程

声明1 本教程完全免费,请勿进行商业化
声明2 时间仓促,如果有错误或不足之处,欢迎批评指正

快速导航

  • 1. WRF的安装
    • 1.1 检验和安装基础包
    • 1.2 WRF安装的目录结构
    • 1.3 测试编译器,进入测试目录,下载测试包并解压
    • 1.4 进入依赖包目录,下载依赖包并解压
    • 1.5 安装各个依赖包
    • 1.6 兼容性测试,下载测试包并解压
    • 1.7 下载WPS和WRF
    • 1.8 其他的需要的数据
    • netcdf-c和netcdf-fortran的安装(可选)
    • 安装过程中可能遇到的问题
  • 2. WRF的运行
    • 2.1 WPS和WRF运行的基本流程
    • 2.2 namelist的设定
    • 运行过程中可能遇到的问题
  • 3. 前后处理工具
    • 3.1 NCL
    • 3.2 Python(+Matplotlib+Cartopy+Jupyter)(推荐)
    • 3.3 WRF Domain Wizard(推荐)
    • 3.4 CDO(推荐)

1. WRF的安装

官方安装教程:https://www2.mmm.ucar.edu/wrf/OnLineTutorial/compilation_tutorial.php
官方安装教程十分详细,但有一些细节对于初学者而言相对棘手,本文将进一步讨论WRF安装过程中需要注意的问题。

1.1 检验和安装基础包

检验指令:

which gfortran
which cpp
which gcc

which指令用于查找并显示给定命令软件(二进制文件)的绝对路径,这个指令非常实用,当一个命令有多个安装路径时,这个指令可以确定命令调用的路径。如果发现which没有返回结果,即PATH中缺失某个路径,则需要安装相应软件。当调用的路径不是你希望的路径时,需要在PATH左侧添加重新添加路径以调整路径优先级。

安装指令:

sudo apt-get install gfortran cpp gcc m4 g++

sudo是系统管理指令,可以暂时性地让普通用户获得一些超级权限。在个人你的计算机上,执行sudo命令需要当前Linux账户的密码,所以在注册时请务必记清账户密码;如果你已经是root超级用户,则你已经拥有了Linux系统全部的权限,不需要sudo便可以执行所有的命令;如果你在服务器上没有超级权限,无法执行安装命令,又缺少一些必要基础包,请联系你的管理员询问解决办法。

其他基础指令:ar head sed awk hostname sleep cat ln sort cd ls tar cp make touch cut mkdir tr expr mv uname file nm wc grep printf which gzip rm
这些指令一般Linux系统自带,如果没有则使用apt-get自行安装

1.2 WRF安装的目录结构

Build_WRF
  |-- TESTS
  |-- LIBRARIES
  |-- WPS
  |-- WRF
  |-- DATA(输入场数据,位置可自选)
  |-- GEOG(地表静态数据,位置可自选)

创建各目录

mkdir Build_WRF
cd Build_WRF
mkdir TESTS
mkdir LIBRARIES

添加目录位置变量,以简化指令的输入,这里的xxx由你自己服务器的情况而定

export DIR=/home/xxx/Build_WRF

1.3 测试编译器,进入测试目录,下载测试包并解压

cd $DIR/TESTS
wget https://www2.mmm.ucar.edu/wrf/OnLineTutorial/compile_tutorial/tar_files/Fortran_C_tests.tar
tar xvf Fortran_C_tests.tar

进行测试

gfortran TEST_1_fortran_only_fixed.f
./a.out
gfortran TEST_2_fortran_only_free.f90
./a.out
gcc TEST_3_c_only.c
./a.out
gcc -c -m64 TEST_4_fortran+c_c.c
gfortran -c -m64 TEST_4_fortran+c_f.f90
gfortran -m64 TEST_4_fortran+c_f.o TEST_4_fortran+c_c.o
./a.out
./TEST_csh.csh
./TEST_perl.pl
./TEST_sh.sh

一共有七项测试,均显示SUCCESS则表示成功。值得注意的是本文使用的编译器是GUN编译器,相应的C和Fortran编译器为gcc和gfortran。除此之外,还有一种Intel编译器,相应的C和Fortran编译器为icc和ifort。
WRF安装和运行的技术教程_第1张图片

1.4 进入依赖包目录,下载依赖包并解压

cd $DIR/LIBRARIES
wget https://www2.mmm.ucar.edu/wrf/OnLineTutorial/compile_tutorial/tar_files/netcdf-4.1.3.tar.gz
wget https://www2.mmm.ucar.edu/wrf/OnLineTutorial/compile_tutorial/tar_files/mpich-3.0.4.tar.gz
wget https://www2.mmm.ucar.edu/wrf/OnLineTutorial/compile_tutorial/tar_files/jasper-1.900.1.tar.gz
wget https://www2.mmm.ucar.edu/wrf/OnLineTutorial/compile_tutorial/tar_files/libpng-1.2.50.tar.gz
wget https://www2.mmm.ucar.edu/wrf/OnLineTutorial/compile_tutorial/tar_files/zlib-1.2.7.tar.gz
tar xvf netcdf-4.1.3.tar.gz
tar xvf mpich-3.0.4.tar.gz
tar xvf jasper-1.900.1.tar.gz
tar xvf libpng-1.2.50.tar.gz
tar xvf zlib-1.2.7.tar.gz

注意tar为Linux下的压缩打包工具,参数-x表示解压文件,参数-f指定文件名,参数-v表示显示处理过程,有时还有参数-z,表示调用gzip执行压缩或解压缩。所以有时该指令还写作tar xzvf或tar -xzvf,效果都是一样的。

1.5 安装各个依赖包

安装netcdf:

cd $DIR/LIBRARIES/netcdf-4.1.3
./configure --prefix=$DIR/LIBRARIES/netcdf --disable-dap --disable-netcdf-4 --disable-shared
make
make install

注意,./configure->make->make install是安装软件包的通用方法, --prefix参数指定安装路径,make进行源代码编译,make install将将编译好的代码移动到安装路径中,即进行安装
WRF安装和运行的技术教程_第2张图片
netcdf的make install的成功提示

添加路径:

export PATH=$DIR/LIBRARIES/netcdf/bin:$PATH
export NETCDF=$DIR/LIBRARIES/netcdf

这里 PATH=二进制文件路径:$PATH 就将相应软件的路径添加到PATH变量的左侧,从而可以让系统找到相应的指令。如果只是在命令行里使用export添加路径,这个路径只会生效一次,下次登陆时会失效。因此,这些export指令往往需要写在.bashrc中,这个文件会储存用户的个性化设置,并在Linux启动时自动加载所有指令。为了使路径永久生效,你可以将本文所有的export指令添加到.bashrc中。

输入 vi ~/.bashrc 就可以编辑该文件。这里的“.”表示隐藏文件,因此你在家目录(即/home/xxx,前面的波浪线就代表这个目录)下使用ls指令不会显示该文件,必须输入 ls -a 才可以看见。

vi是Linux下的文本编辑器,按i键可以进入编辑模式,这时你可以自由地进行编辑;按esc退出编辑模式,之后输入:q可退出,如果你已经修改了文件内容则需要输入:wq保存并退出或输入:q!强制退出不保存。修改后的.bashrc不会立即生效,还需要输入 source ~/.bashrc 使其生效,或者重启Linux。

安装mpich:

cd $DIR/LIBRARIES/mpich-3.0.4
./configure --prefix=$DIR/LIBRARIES/mpich
make
make install

添加路径:

export PATH=$DIR/LIBRARIES/mpich/bin:$PATH

安装zlib:

cd $DIR/LIBRARIES/zlib-1.2.7
./configure --prefix=$DIR/LIBRARIES/grib2
make
make install

安装libpng:

cd $DIR/LIBRARIES/libpng-1.2.50
./configure --prefix=$DIR/LIBRARIES/grib2
make
make install

安装jasper:

cd $DIR/LIBRARIES/jasper-1.900.1
./configure --prefix=$DIR/LIBRARIES/grib2
make
make install

添加路径:

export JASPERLIB=$DIR/LIBRARIES/grib2/lib
export JASPERINC=$DIR/LIBRARIES/grib2/include
export LDFLAGS=-L$DIR/LIBRARIES/grib2/lib
export CPPFLAGS=-I$DIR/LIBRARIES/grib2/include

1.6 兼容性测试,下载测试包并解压

cd $DIR/TESTS
wget https://www2.mmm.ucar.edu/wrf/OnLineTutorial/compile_tutorial/tar_files/Fortran_C_NETCDF_MPI_tests.tar
tar xvf Fortran_C_NETCDF_MPI_tests.tar

进行测试:

cp ${NETCDF}/include/netcdf.inc .
gfortran -c 01_fortran+c+netcdf_f.f
gcc -c 01_fortran+c+netcdf_c.c
gfortran 01_fortran+c+netcdf_f.o 01_fortran+c+netcdf_c.o -L${NETCDF}/lib -lnetcdff -lnetcdf
./a.out
cp ${NETCDF}/include/netcdf.inc .
mpif90 -c 02_fortran+c+netcdf+mpi_f.f
mpicc -c 02_fortran+c+netcdf+mpi_c.c
mpif90 02_fortran+c+netcdf+mpi_f.o 02_fortran+c+netcdf+mpi_c.o -L${NETCDF}/lib -lnetcdff -lnetcdf
mpirun ./a.out

一共有两项测试,分别测试刚刚安装的netcdf和mpich,均显示SUCCESS则表示成功
WRF安装和运行的技术教程_第3张图片

1.7 下载WPS和WRF

cd $DIR
git clone --recurse-submodules https://github.com/wrf-model/WRF
#或者较旧的版本(不推荐)
#git clone https://github.com/wrf-model/WRF
#或者更老的版本(不推荐)
#wget https://www2.mmm.ucar.edu/wrf/src/WRFV4.0.TAR.gz
git clone https://github.com/wrf-model/WPS

编译WRF

cd $DIR/WRF
./configure
./compile em_real

如果在$DIR/WRF/run 或 $DIR/WRF/test/em_real下成功生成四个exe文件,则表示安装成功
WRF成功

编译WPS

cd $DIR/WPS
./configure
./compile

如果在$DIR/WPS下成功生成三个exe文件,则表示安装成功。一定要注意,必须先成功编译WRF,才能编译WPS,顺序不能颠倒。
WPS成功

在WRF和WPS的./configure时会让你选择编译器和并行方式。最右侧一列为编译器,一般而言Intel编译器的效率比较高,但如果你没有,就只能选GUN了。并行方式有四种:serial(串行,即非并行)、smpar(内存共享并行)、dmpar(分布式并行)、dm+sm(同时使用dmpar和smpar),请根据你自己服务器的情况进行选择。
WRF安装和运行的技术教程_第4张图片
WRF的./configure,我的服务器上选择34

WRF安装和运行的技术教程_第5张图片
WPS的./configure,我的服务器上选择3

1.8 其他的需要的数据

要运行WPS和WRF,你还需要下载地表静态数据和驱动场数据,地表静态数据包含了地形、土壤类型等信息,分为Mandatory Static Data、Static Data for Specific Applications和Optional Static Data,如果没有特殊需要只下载Mandatory的即可,根据你的需求选择低分辨率或高分辨率;驱动场数据提供了模式的输入场,它本质上是一类再分析数据,因此有时也可以当作观测数据。不同机构提供了不同的输入场,可能会有一些细微的差别。你可以从WRF官网上下载,也可以去相应机构的官网上下载(比如本文就给出了ECMWF的ERA5数据,这也是公认的做得比较好的再分析数据)。

地表静态数据:
http://www2.mmm.ucar.edu/wrf/users/download/get_sources_wps_geog.html

输入场:
https://www2.mmm.ucar.edu/wrf/users/download/free_data.html
https://cds.climate.copernicus.eu/cdsapp#!/search?text=ERA5%20hourly%20data

netcdf-c和netcdf-fortran的安装(可选)

为了简便,上面使用的netcdf版本为4.1.3版。4.2版本以后netcdf-c和netcdf-fortran开始分开,需要分别进行安装。如果你想安装高版本的netcdf,则参考以下教程:

cd $DIR/LIBRARIES
wget https://www2.mmm.ucar.edu/wrf/OnLineTutorial/compile_tutorial/tar_files/netcdf-c-4.7.2.tar.gz
wget https://www2.mmm.ucar.edu/wrf/OnLineTutorial/compile_tutorial/tar_files/netcdf-fortran-4.5.2.tar.gz
tar xvf netcdf-c-4.7.2.tar.gz
tar xvf netcdf-fortran-4.5.2.tar.gz

安装netcdf-c:

cd $DIR/LIBRARIES/netcdf-c-4.7.2
./configure --prefix=$DIR/LIBRARIES/netcdf --disable-dap --disable-netcdf-4 --disable-shared
make
make install

添加路径:

export PATH=$DIR/LIBRARIES/netcdf/bin:$PATH
export NETCDF=$DIR/LIBRARIES/netcdf

安装netcdf-fortran:

cd $DIR/LIBRARIES/netcdf-fortran-4.5.2
./configure --prefix=$DIR/LIBRARIES/netcdf --disable-shared LIBS="-lnetcdf -lz" LDFLAGS="-L$DIR/LIBRARIES/netcdf/lib" CPPFLAGS="-I$DIR/LIBRARIES/netcdf/include"
make
make install

注意,必须先成功安装netcdf-c,才能安装netcdf-fortran,顺序不能颠倒。netcdf安装成功后,其他的mpich、zlib、libpng、jasper依赖包参照之前的教程安装。
如果你没有设定上述的一些参数,却依然可以正常安装,也不必担心,这说明你的软件包可以找到正确的路径。或者,你通过其他的一些教程安装成功,也是可以的。重点是能成功地进行安装,而不是用何种方法进行安装。

安装过程中可能遇到的问题

你在上面的安装过程中,可能遇到各种各样的问题,这里我们列举几个常见的问题以及它们的解决方法。
问题1 ./configure时权限不足 Permission denied
解决 用sudo,如:

sudo ./configure

问题2 mpich安装不成功The selected Fortran 90 compiler gfortran does not work with the selected Fortran 77 compiler gfortran.
解决 mpich的版本过低,考虑安装最新版mpich或降级gfortran(10以下)

问题3 netcdf在./configure时报错curl configure: error: curl required for byte range support. Install curl or build without --enable-byterange.
解决 根据提示,安装curl库

sudo apt-get install libcurl-dev

或者使用–disable-byterange参数

./configure --prefix=$DIR/LIBRARIES/netcdf --disable-byterange

问题4 netcdf、mpich等在./configure时使用了错误的编译器,比如你在配置过程中频繁出现conda的gcc_linux-64
解决 请设置CC、FC等:

./configure --prefix=$DIR/LIBRARIES/netcdf --disable-dap --disable-netcdf-4 --disable-shared CC=gcc CXX=g++ FC=gfortran FCFLAGS=-m64 F77=gfortran F90=gfortran FFLAGS=-m64

比如,这里的CC=gcc就指定了C编译器为默认的gcc,如果希望使用其他路径的gcc就要写为CC=xxx/gcc或调整PATH的优先顺序。所有这一些参数要和./configure写在同一行,后面安装netcdf-fortran时的CPPFLAGS、LDFLAGS也是同理,不要分行写

问题5.1 netcdf-fortran在./configure时报错configure: error: C compiler cannot create executables
问题5.2 libpng在./configure时报错configure: error: zlib not installed
解决 这两个错误都是找不到zlib库而无法链接-lz导致的。有些服务器配置比较完善,自带zlib的环境,因此不会出现该错误;而有些服务器则不行。如果出现此类错误,请遵循以下方法:

  1. 先根据本教程安装zlib
  2. 在进行netcdf-fortran的./configure时,输入:
./configure --prefix=$DIR/LIBRARIES/netcdf --disable-shared LIBS="-lnetcdf -lz" LDFLAGS="-L$DIR/LIBRARIES/netcdf/lib -L$DIR/LIBRARIES/grib2/lib" CPPFLAGS="-I$DIR/LIBRARIES/netcdf/include -I$DIR/LIBRARIES/grib2/include"
  1. 在进行libpng的./configure时,输入:
./configure --prefix=$DIR/LIBRARIES/grib2 LDFLAGS=-L$DIR/LIBRARIES/grib2/lib CPPFLAGS=-I$DIR/LIBRARIES/grib2/include

此外,还请仔细检查你的$DIR和参数设置是否正确,切勿输错
WRF安装和运行的技术教程_第6张图片
WRF安装和运行的技术教程_第7张图片
总而言之,netcdf-fortran的安装可能是问题出现最多的环节之一。如果你有什么难以解决的问题,或者有什么补充建议,欢迎在评论区下方提出。

问题6 jasper在Darwin内核安装失败
解决 请参考Mac的WRF安装教程

问题7 WRF编译时出现问题 /mnt/c/Windows/System32/cmd.exe/ifort: Not a directory.
解决 显然你没有Intel编译器,请在./configure时选择GUN编译器,如果想使用Intel编译器请自行安装
WRF安装和运行的技术教程_第8张图片

问题8 WRF编译时出现问题Error Error Error NoahMP submodule files not populating WRF directories
解决 考虑下载最新版WRF,即添加–recurse-submodules参数

git clone --recurse-submodules https://github.com/wrf-model/WRF

WRF安装和运行的技术教程_第9张图片

问题9 WRF和WPS在./configure时不断刷屏
解决 重启你的Shell,所谓Shell就是你的操作界面

当然,不同计算机的情况不同,遇到的问题更会是花样百出。安装WRF时可能出现的问题远不止这些,本文不可能全部列举出来。如果你遇到的问题在本文中没有提到,不要灰心,请仔细查看错误信息,弄清楚导致错误的原因,根据提示解决问题或者去网上搜索问题的解决方法。

2. WRF的运行

WRF的官方教程网址在这:https://www2.mmm.ucar.edu/wrf/users/docs/user_guide_v4/v4.4/contents.html
请仔细阅读该教程,尤其是第3章和第5章,其中详细地介绍了WPS和WRF的各种技术细节,本文只是简单介绍一些入门级的基础,想要进一步了解并熟悉WRF请务必阅读官方教程。

2.1 WPS和WRF运行的基本流程

WPS(WRF Preprocessing System)是WRF的前处理系统,WRF是数值计算程序,因此我们需要先运行WPS,再运行WRF,整体的流程如下所示(以ERA5输入场为例)。
运行WPS:

cd $DIR/WPS
#修改你的namelist.wps,这是你的主要工作之一
vi namelist.wps
#处理静态网格,生成geo_em*,这里的*表示通配符
./geogrid.exe
#链接变量表
ln -sf ungrib/Variable_Tables/Vtable.ERA-interim.pl Vtable
#导入输入场,会生成GRIBFILE*链接文件
./link_grib ../DATA/era5*.grib
#“解构”grib文件,生成中间文件,中间文件的前缀可自定义,默认为FILE*
./ungrib.exe
#整合中间文件,生成气象场数据met_em*
./metgrid.exe

上面提到的Vtable为变量表,不同的输入场资料使用的Vtable不同。你可以用vi浏览一下这个表的内容,可以发现每一个变量都对应一个数字,这个数字就是grib文件的变量代号,ungrib.exe正是通过这个代号来确定变量的。nc格式的文件不能进行ungrib.exe,需要转化格式。CDS官网上的ERA5 single levels和pressure levels有许多变量,如果不知道需要下载哪些变量作为输入场,也可以参考这个表。
WRF安装和运行的技术教程_第10张图片

运行WRF:

cd $DIR/WRF/test/em_real
#修改你的namelist.input,这是你的主要工作之一
vi namelist.input
#将WPS生成的met_em*链接过来
ln -s ../../../WPS/met_em* ./
#生成wrfinput*(初始条件)和wrfbdy*(边界条件)
./real.exe
#进行数值积分,这里&表示后台运行
./wrf.exe &

在rsl.error.0000中你可以查看运行过程和错误信息,如果显示wrf: SUCCESS COMPLETE WRF,那么恭喜你运行成功,并且目录下生成的wrfout*文件就是输出结果。如果你感觉运行速度太慢,可以使用并行计算,需要注意的是,wrf.exe和metgrid.exe可以使用并行计算;ungrib.exe不能使用并行计算;real.exe理论上可以使用并行,但实际测试发现它的并行会出现一些问题,因此不建议使用并行计算;geogrid.exe处理时间很短,一般不需要使用并行计算。

2.2 namelist的设定

下面我们给出namelist.wps和namelist.input一些常用参数的简介,详细的内容请参考官网教程。
如果你想设置一层嵌套网格,则需要在namelist中用两列参数值分别给出母网格和嵌套网格的信息,列与列之间用逗号分隔;多层嵌套同理;如果你不想使用嵌套,使用一列参数值即可。

namelist.wps
&share
wrf_core WRF的框架,WRF可分为ARW(用于科学研究)和NMM(用于业务预报),两种,我们使用的是WRF-ARW,这里选’ARW’即可
max_dom 网格(模拟域)总数
start_date end_date 输入场数据起止时间
interval_seconds 输入场数据间隔时间(时间分辨率),单位秒
&geogrid
parent_id 嵌套网格的母网格编号,最外层网格设为1即可
parent_grid_ratio 母网格与嵌套网格的格距比,最外层网格设为1
i_parent_start j_parent_start 嵌套网格在母网格中的起始位置,最外层网格设为1即可
s_we s_sn 东西、南北方向起始格点索引值,默认为1
e_we e_sn 东西、南北方向终止格点索引值,一般也就是你的总格点数
dx dy 东西(x)、南北(y)方向格距,单位米,不过WRF不支持矩形网格,这里这两个必须设为相同值
ref_lat ref_lon 模拟域的中心经纬度
map_proj 地图投影,常见的投影有兰勃特投影(更适用于中纬)、墨卡托投影(更适用于低纬)、极射赤面投影(更适用于高纬)、等距圆柱投影(绘图常用)等,具体请学习地图投影的相关知识,参考https://www2.mmm.ucar.edu/wrf/users/docs/user_guide_v4/v4.4/users_guide_chap3.html#_How_to_Run
truelat1 truelat2 投影的标准纬度,投影平面与地球上纬线长度相同的纬度,即投影面与地球相切或相割处的纬度
stand_lon 垂直参考经度,见后图
geog_data_path 地表静态数据的目录位置
&ungrib
out_format 中间文件的格式,这里选’WPS’即可,参考https://www2.mmm.ucar.edu/wrf/users/docs/user_guide_v4/v4.4/users_guide_chap3.html#_Writing_Meteorological_Data
prefix 中间文件前缀
&metgrid
fg_name 要读取的中间文件的前缀,供metgrid.exe识别
io_form_metgrid met_em*文件格式,默认为2(nc格式)
namelist.input
&time_control
start_year start_month start_day start_hours start_minute start_second WRF模拟的起始时间(年月日时分秒)
end_year end_month end_day end_hours end_minute end_second WRF模拟的起始时间(年月日时分秒),我们的WRF-ARW只是用于做模型的研究的,而不能做业务预报,因此该时间范围不能超出输入场的时间范围
run_days run_hours run_minutes run_seconds WRF模拟运行(日时分秒),其实只要设定了起止时间这些可以不设
interval_seconds 设为与namelist.wps相同即可
history_interval WRF输出结果的时间间隔,单位分钟
frames_per_outfile 每个WRF输出文件中有几条时间记录
restart 是否启用断点重启
restart_interval 每隔多长时间生成一个重启文件,单位分钟,设为0则不生成重启文件
iofields_filename 控制输出变量,参考https://www2.mmm.ucar.edu/wrf/users/docs/user_guide_v4/v4.4/users_guide_chap5.html#runtimeio
&domains
time_step time_step_fract_num time_step_fract_den 时间积分步长(整数分子分母),单位秒
e_we e_sn e_vert e_vert为垂直方向终止格点索引值,其他同namelist.wps
p_top_requested 模式顶气压值,单位Pa
num_metgrid_levels num_metgrid_soil_levels met_em*文件的垂直层数和土壤层数,可以用ncdump -h或ncl_filedump命令查看
max_dom dx dy grid_id parent_id i_parent_start j_parent_start grid_id为网格区域的编号,其他同namelist.wps
parent_grid_ratio parent_time_step_ratio parent_time_step_ratio为母网格与嵌套网格的时间积分步长比,最外层网格设为1
&physics
mp_physics 微物理过程方案
cu_physics cudt 积云参数化方案和积云方案调用时间间隔
ra_lw_physics ra_sw_physics radt 长短波辐射方案和辐射方案调用时间间隔
bl_pbl_physics bldt 边界层方案和边界层方案调用时间间隔
sf_sfclay_physics 近地面层方案
sf_surface_physics 陆面过程方案

WRF安装和运行的技术教程_第11张图片

stand_lon分别设为102和108时的模拟区域,可见标准经度设为多少,哪一条经线就是“竖直”的,这两张图是用WPS自带的工具绘制的,位置在$DIR/WPS/util/plotgrids_new.ncl

运行过程中可能遇到的问题

你在WPS和WRF的运行过程中,可能遇到各种各样的问题,这里我们同样列举几个常见的问题以及它们的解决方法。如果本文的教程不能解决你的问题,请去网上搜索解决方法。
有一类问题是用户设置错误导致的,比如下面两个错误,分别是边界层方案和近地面方案不匹配以及模式顶气压设置过低(模式顶过高),你只需要根据提示修改相应的参数即可。
WRF安装和运行的技术教程_第12张图片

还有一类问题属于模型自身的问题,比如下面这个SSiB陆面方案,它的设置相对复杂,容易出现错误。如果你并非想专门地深入研究该方案,就请放弃使用该方案,换一个其他的可运行的陆面方案即可。这两类问题我们不过多讨论,下面我们看几个常见的特殊错误。
WRF安装和运行的技术教程_第13张图片

问题1 运行ungrib.exe出错:
\tI was expecting a Grib1 file, but this is a Grib2 file.
\tIt is possible this is because your GRIBFILE.XXX files
\tare not all of the same type.
\tWPS can handle both file types, but a separate ungrib
\tjob must be run for each Grib type.\n
解决 检查你的输入场grib文件。你在下载ERA5数据作为土壤地表近地面输入场时,应该下载ERA5 single levels而不是ERA5-Land。

问题2 运行wrf.exe出错:not enough info for a p sfc computation
解决 你的输入场缺失某些地表气压,请仔细检查输入场数据的完整性
WRF安装和运行的技术教程_第14张图片

问题3 运行wrf.exe时,出现内存错误:
Backtrace for this error:
#0 0x2ba24472eb9a in ???
解决 可能是你的时间积分步长设置过大,导致溢出。一般而言,数值计算的时间步长和空间步长需要匹配,即前者是后者的3~6倍(s/km),比如你的格距dxdy为10000m,时间步长time_step就要设为60s。
WRF安装和运行的技术教程_第15张图片
*注:在WRF较新的版本中,会直接提示时间步长过大
WRF安装和运行的技术教程_第16张图片

问题4 运行wrf.exe出错:the domain size is too small for this many processors, or the decomposition aspect ratio is poor.
解决 使用的并行数太多,减少一些
WRF安装和运行的技术教程_第17张图片

问题5 运行wrf.exe出错:not enough eta levels to reach p_top
解决 模式层数太少,请增大e_vert值
WRF安装和运行的技术教程_第18张图片

3. 前后处理工具

3.1 NCL

NCL(NCAR Command Language)是由美国大气研究中心(NCAR)开发的专门设计用于科学资料分析、科学数据处理以及科学数据可视化的一门解释型高级语言。常用在气象数据的处理和可视化上。
NCL官方网站:https://www.ncl.ucar.edu/

3.2 Python(+Matplotlib+Cartopy+Jupyter)(推荐)

众所周知,Python是一门很火的高级程序设计语言,也是当今主流编程语言之一。Matplotlib是Python的绘图库,与Cartopy包一起可以绘制许多精美的气象分析图,尤其再结合Jupyter Notebook可以随时保存结果,功能十分强大。NCL固然方便,但其开放性和发展性依然是远不及Python的。
Matplotlib官方示例:https://matplotlib.org/stable/tutorials/index.html
Cartopy官方示例:https://scitools.org.uk/cartopy/docs/latest/gallery/index.html
WRF安装和运行的技术教程_第19张图片

NCL和Python绘制的云南地区ERA5的2m温度分布

3.3 WRF Domain Wizard(推荐)

在设置namelist.wps时,一个首要问题就是确定模拟区域。你当然可以使用WPS自带的plotgrids_new.ncl绘制模拟域,但下面的WRF Domain Wizard软件更加方便,只需要轻轻几点,就可以框选出模拟区域,并确定参数信息。
官方下载地址:https://www.esrl.noaa.gov/gsd/wrfportal/DomainWizard.html
WRF安装和运行的技术教程_第20张图片

3.4 CDO(推荐)

CDO(Climate Data Operators)是一款功能极其强大的操作十分方便的通过命令行进行气象数据处理与分析的软件。它提供了700余个单独的操作符,可进行一系列的气象数据相关的操作。利用CDO,你可以对WRF的输出结果进行合并、插值、变量提取等一系列处理,十分便捷。
官方教程:https://code.mpimet.mpg.de/projects/cdo/wiki
几个常用的CDO指令:

#双线性插值
cdo remapbil,r360x180 infile outfile
#合并时间
cdo mergetime infile(s) outfile
#提取WRF变量2m温度
cdo select,name=T2 wrfout* outfile
#提取WRF变量2m相对湿度
cdo -b F32 -expr,'RH2=(Q2*PSFC)/(380.4*exp(17.27*(T2-273.15)/(T2-35.85)))*100' -select,name=Q2,PSFC,T2 wrfout* outfile
#提取WRF变量降水
cdo -deltat -expr,'PR=RAINNC+RAINC' -select,name=RAINNC,RAINC wrfout* outfile

你可能感兴趣的:(linux,服务器)