用WRF模型进行气象模拟入门(1)

您所在的位置:网站首页 天气预测数学模型怎么做 用WRF模型进行气象模拟入门(1)

用WRF模型进行气象模拟入门(1)

2024-07-12 20:30| 来源: 网络整理| 查看: 265

WRF全称Weather Research and Forecasting Model, 是一个天气研究与预报模型.可以用来进行精细尺度的天气模拟与预报。本文将从一个初学者的角度从零开始介绍WRF的使用方法。打算写一个系列,这篇先写WRF程序的编译安装。

注意:不同版本的WRF之间会有细微差异,本文使用的 WRF 版本是 3.6.1

1.简介

WRF模拟系统主要包含WPS和WRF两部分模块:

WPS模块全称为WRF Pre-processing System,即WRF预处理系统,用来为WRF模型准备输入数据;如果只是做理想实验(idealized modeling),就不需要用WPS处理真实数据。但是理想实验不在本文介绍范围内,本文介绍的是进行真实数据模拟的操作。

WRF模块就是数值求解的模块,它有两个版本:ARW(Advanced Research WRF) 和 NMM(Nonhydrostatic Mesoscale Model)。大多数研究者主要用的都是ARW版本,本文所有的介绍也都基于ARW版本。

除了WPS与WRF两大核心模块外,WRF系统还有很多附加模块:比如用于数据同化的WRF-DA,用于化学传输的WRF-chem,用于林火模拟的WRF-fire。本文不会涉及到这些高级功能。

2.准备工作 2.1准备*nux系统

安装WRF需要在Linux/Unix操作系统中进行,Linux/Unix 操作系统的安装过程不在本文介绍范围内。推荐阅读《鸟哥的Linux私房菜》

安装好 Linux/Unix 操作系统后,就需要安装 WRF 依赖的软件库。

接下来的操作会假设读者具备基本的Linux操作与代码编译安装知识。

(注意:各个WRF版本的依赖库安装不一致,本文介绍的是最新版本 WRF 3.6.1 的安装过程)

2.2 zlib库准备

第一个要安装的是 zlib 库,官网是http://www.zlib.net,当然也可以通过Linux各种发行版的包管理器(pacman, apt-get, yum 等)直接安装

2.3 hdf5库准备

接下来要安装 HDF5 库,官网是 http://www.hdfgroup.org/HDF5, 下载 HDF5-1.8.13 版本的代码即可,

将代码解压,进入代码目录,按照如下命令配置

./configure --prefix=/PATH/TO/HDF5 --with-zlib=/PATH/TO/ZLIB/

其中/PATH/TO/ZLIB/替换成 zlib的安装位置,如果是通过包管理器安装的,就可以不用写 –with-zlib=/PATH/TO/ZLIB/ 选项。

还有 /PATH/TO/HDF5要替换成 hdf5 即将安装的位置。

./configure命令执行完无错误之后,再执行命令

make install

即可顺利编译安装。

2.4 netcdf-c 与 netcdf-fortran 的安装

netcdf 代码下载地址为 http://www.unidata.ucar.edu/downloads/netcdf/index.jsp

最新版的netcdf 把c和fortran的代码拆分出来了,但是WRF的编译依赖于netcdf-fortran,而netcdf-fortran的安装依赖与netcdf-c,因此这两个库都需要安装。

较老版本的WRF安装教程仍然旧版本的netcdf描述操作过程,这些操作在新版本的WRF编译中可能会出错,所以看各个教程时一定要注意教程里使用的WRF和netcdf版本。本文叙述的netcdf版本为 netcdf-4.3.2.tar.gz 和 netcdf-fortran-4.4.1.tar.gz

首先,下载了netcdf-4.3.2.tar.gz (即netcdf-c)的代码后,解压代码,进入代码目录,使用以下命令配置

./configure --prefix=/PATH/TO/NETCDF --enable-netcdf-4 LDFLAGS="-L/PATH/TO/HDF5/lib" CPPFLAGS="-I/PATH/TO/HDF5/include"

其中 /PATH/TO/NETCDF 需要替换为你即将安装netcdf的路径,/PATH/TO/HDF5/ 要替换为刚刚hdf5 的安装路径

然后使用命令

make install

编译安装即可

接下来下载  netcdf-fortran 源代码,解压代码,进入代码目录,使用以下命令配置

./configure --prefix=/PATH/TO/NETCDF LDFLAGS="-L/PATH/TO/NETCDF/lib" CPPFLAGS="-I/PATH/TO/NETCDF/include" FC=gfortran

其中 /PATH/TO/NETCDF 是 netcdf的安装路径,跟上一步的路径一致;FC=gfortran设置了系统的fortran编译器,如果不是gfortran而是 ifort 或者 f90 等,则进行相应的替换。

配置好之后,使用命令

make install

即可安装

3. WRF/ARW的编译安装

首先在 http://www2.mmm.ucar.edu/wrf/src/ 找到 WRF最新版的源代码,文件名通常是 WRFVx.x.x.TAR.gz。当然,数字越大越新

然后解压代码:

tar WRFVx.x.x.TAR.gz

进入代码目录

cd WRFV3

设置环境变量 NETCDF 到刚刚安装好的netcdf目录

export NETCDF=/Path/to/NetCDF/

然后执行命令

./configure

进行配置,会出现很多编译选项供选择。每一个选项的前半部分通常是在描述编译器与运行环境,根据计算机实际情况选择即可。后半部分是并行选项:

serial 表示串行计算;

smpar 表示内存共享并行计算(shared memory option),即使用openMP,大部分多核电脑都支持这项功能;

dmpar 表示分布式并行计算(distributed memory option),即使用MPI 进行并行计算,主要用在计算集群,单个电脑就没必要用了;

dm+sm 表示同时使用openMP与MPI两种并行方式.

根据实际需要选择即可,最保险的方法就是选择 serial,不过这样编译出来的程序运行最慢

选择完编译选项后,会出现提示选择嵌套选项,一般就选 basic 选项即可

执行完./configure 顺利配置后,即可使用 ./compile 命令开始编译。单独执行 ./compile命令会看到各种编译选项。本文只介绍使用WRF进行真实情景模拟的操作,因此只需要使用命令

./compile em_real >& compile.log

就可以开始编译了,编译结果会输出到 compile.log

如果编译正常,在main目录下会看到ndown.exe, nup.exe, real.exe, tc.exe, wrf.exe这5个可执行程序

如果遇到以下错误:

start_em.f90:209.60:      ALLOCATE( clat_glob(ids:ide,jds:jde), STAT=alloc_status, ERRMSG=alloc_err_                                                             1 Error: Syntax error in DEALLOCATE statement at (1)

可能是因为使用的fortran编译器不支持ALLOCATE函数的ERRMSG参数,修改源代码文件中的start_em.F中的代码,去掉

, ERRMSG=alloc_err_message

并重新编译即可。

4. WPS(WRF预处理系统)的编译安装

首先在 http://www2.mmm.ucar.edu/wrf/src/ 找到 WPS最新版的源代码,文件名通常是 WPSVx.x.x.TAR.gz。当然,数字越大越新

然后解压代码:

tar xzvf WPSV3.6.1.TAR.gz

进入代码目录

cd WPS

注意:WPS编译时会在相同目录下寻找已经编译好的WRF目录,也就是说,源代码目录 WPS 要跟 WRFV3 放在同一个父目录下

4.1. 准备依赖包

WPS安装依赖 libpng, jasper,libjpeg, zlib 这几个库。所以在编译WPS前,要先确保这些库已经安装在电脑上。

然后设置系统环境变量 JASPERLIB 与 JASPERINC,要确保 $JASPERLIB/路径下有 libjasper.a, libpng.a 和 libz.a 这三个文件,且 $JASPERINC/ 路径下有 jasper/ 目录, png.h 和 zlib.h两个文件。

如果这三个库是通过包管理器安装的,那么JASPERLIB 很有可能就是 /usr/local/lib, /usr/lib 或者/lib 之类的目录;对应的,JASPERINC很有可能是 /usr/include 或者 /usr/local/include 之一,如果都找不到,可以用Linux的locate 或者find命令来搜索这些文件在哪。如果这些文件分散在不同目录,则要把它们复制到一起并配置环境变量 JASPERLIB 与 JASPERINC。然后执行 ./configure进行配置

如果觉得上面的设置环境变量 JASPERLIB 与 JASPERINC很麻烦,也可以使用替代方案,即不设置环境变量,直接在WPS目录运行./configure,这时会生成配置文件 congfiure.wps,打开该配置文件,找到COMPRESSION_LIBS 和 COMPRESSION_INC,配置选项,手动修改:

COMPRESSION_LIBS = -L/PATH/TO/jasper/lib/ -L/PATH/TO/libjpeg/lib/ -L/PATH/TO/libpng/lib -ljasper -lpng -lz COMPRESSION_INC = -I/PATH/TO/jasper/include/ -L/PATH/TO/libjpeg/lib/ -I/PATH/TO/libpng/include/

其中的 /PATH/TO/jasper,/PATH/TO/libjpeg,/PATH/TO/libpng 就是相应的库的路径。

4.2. 编译

./configure 执行成功或者 configure.wps 修改完毕后,即可开始执行命令

./compile

开始编译,如果编译成功,最后会在WPS代码根目录得到以下三个程序链接,

geogrid.exe -> geogrid/src/geogrid.exe ungrib.exe -> ungrib/src/ungrib.exe metgrid.exe -> metgrid/src/metgrid.exe

如果遇到其他编译错误,可以通过修改 configure.wps 文件的相关内容消除错误

至于如何使用模型,将在下一篇文章中继续讲

相关文章: 用WRF模型进行气象模拟入门(2)——WPS的配置与使用 克里金(Kriging)插值的原理与公式推导 用WRF模型进行气象模拟入门(3)——WRF的运行


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3