用WRF模型进行气象模拟入门(1)——简介以及代码编译in学术WRF全称WeatherResearchandForecastingModel,是一个天气研究与预报模型.可以用来进行精细尺度的天气模拟与预报。本文将从一个初学者的角度从零开始介绍WRF的使用方法。打算写一个系列,这篇先写WRF程序的编译安装。注意:不同版本的WRF之间会有细微差异,本文使用的WRF版本是3.6.11.简介WRF模拟系统主要包含WPS和WRF两部分模块:WPS模块全称为WRFPre-processingSystem,即WRF预处理系统,用来为WRF模型准备输入数据;如果只是做理想实验(idealizedmodeling),就不需要用WPS处理真实数据。但是理想实验不在本文介绍范围内,本文介绍的是进行真实数据模拟的操作。WRF模块就是数值求解的模块,它有两个版本:ARW(AdvancedResearchWRF)和NMM(NonhydrostaticMesoscaleModel)。大多数研究者主要用的都是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版本的依赖库安装不一致,本文介绍的是最新版本WRF3.6.1的安装过程)2.2zlib库准备第一个要安装的是zlib库,官网是,当然也可以通过Linux各种发行版的包管理器(pacman,apt-get,yum等)直接安装2.3hdf5库准备接下来要安装HDF5库,官网是,下载HDF5-1.8.13版本的代码即可,将代码解压,进入代码目录,按照如下命令配置1./configure--prefix=/PATH/TO/HDF5--with-zlib=/PATH/TO/ZLIB/其中/PATH/TO/ZLIB/替换成zlib的安装位置,如果是通过包管理器安装的,就可以不用写--with-zlib=/PATH/TO/ZLIB/选项。还有/PATH/TO/HDF5要替换成hdf5即将安装的位置。./configure命令执行完无错误之后,再执行命令1makeinstall即可顺利编译安装。2.4netcdf-c与netcdf-fortran的安装netcdf代码下载地址为最新版的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)的代码后,解压代码,进入代码目录,使用以下命令配置1./configure--prefix=/PATH/TO/NETCDF--enable-netcdf-4LDFLAGS=-L/PATH/TO/HDF5/libCPPFLAGS=-I/PATH/TO/HDF5/include其中/PATH/TO/NETCDF需要替换为你即将安装netcdf的路径,/PATH/TO/HDF5/要替换为刚刚hdf5的安装路径然后使用命令1makeinstall编译安装即可接下来下载netcdf-fortran源代码,解压代码,进入代码目录,使用以下命令配置1./configure--prefix=/PATH/TO/NETCDFLDFLAGS=-L/PATH/TO/NETCDF/libCPPFLAGS=-I/PATH/TO/NETCDF/includeFC=gfortran其中/PATH/TO/NETCDF是netcdf的安装路径,跟上一步的路径一致;FC=gfortran设置了系统的fortran编译器,如果不是gfortran而是ifort或者f90等,则进行相应的替换。配置好之后,使用命令1makeinstall即可安装3.WRF/ARW的编译安装首先在找到WRF最新版的源代码,文件名通常是WRFVx.x.x.TAR.gz。当然,数字越大越新然后解压代码:1tarWRFVx.x.x.TAR.gz进入代码目录1cdWRFV3设置环境变量NETCDF到刚刚安装好的netcdf目录1exportNETCDF=/Path/to/NetCDF/然后执行命令1./configure进行配置,会出现很多编译选项供选择。每一个选项的前半部分通常是在描述编译器与运行环境,根据计算机实际情况选择即可。后半部分是并行选项:serial表示串行计算;smpar表示内存共享并行计算(sharedmemoryoption),即使用openMP,大部分多核电脑都支持这项功能;dmpar表示分布式并行计算(distributedmemoryoption),即使用MPI进行并行计算,主要用在计算集群,单个电脑就没必要用了;dm+sm表示同时使用openMP与MPI两种并行方式.根据实际需要选择即可,最保险的方法就是选择serial,不过这样编译出来的程序运行最慢选择完编译选项后,会出现提示选择嵌套选项,一般就选basic选项即可执行完./configure顺利配置后,即可使用./compile命令开始编译。单独执行./compile命令会看到各种编译选项。本文只介绍使用WRF进行真实情景模拟的操作,因此只需要使用命令1./compileem_real&compile.log就可以开始编译了,编译结果会输出到compile.log如果编译正常,在main目录下会看到ndown.exe,nup.exe,real.exe,tc.exe,wrf.exe这5个可执行程序如果遇到以下错误:1234start_em.f90:209.60:ALLOCATE(clat_glob(ids:ide,jds:jde),STAT=alloc_status,ERRMSG=alloc_err_1Error:SyntaxerrorinDEALLOCATEstatementat(1)可能是因为使用的fortran编译器不支持ALLOCATE函数的ERRMSG参数,修改源代码文件中的start_em.F中的代码,去掉,ERRMSG=alloc_err_message并重新编译即可。4.WPS(WRF预处理系统)的编译安装首先在找到WPS最新版的源代码,文件名通常是WPSVx.x.x.TAR.gz。当然,数字越大越新然后解压代码:1tarxzvfWPSV3.6.1.TAR.gz进入代码目录1cdWPS注意: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,配置选项,手动修改:12COMPRESSION_LIBS=-L/PATH/TO/jasper/lib/-L/PATH/TO/libjpeg/lib/-L/PATH/TO/libpng/lib-ljasper-lpng-lzCOMPRESSION_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修改完毕后,即可开始执行命令1./compile开始编译,如果编译成功,最后会在WPS代码根目录得到以下三个程序链接,geogrid.exe-geogrid/src/geogrid.exeungrib.exe-ungrib/src/ungrib.exemetgrid.exe-metgrid/src/metgrid.exe如果遇到其他编译错误,可以通过修改configure.wps文件的相关内容消除错误至于如何使用模型,将在下一篇文章中继续讲安装好WRF之后,还不能直接使用。需要先使用WPS进行数据预处理,准备好必须的输入数据与模拟参数,才能顺利运行模拟程序。WRF提供了多种气象模拟模式,本文只介绍进行真实模拟(real)所必须的相关操作。1.概述运行WRF模型之前,需要进行以下三个预处理操作:定义模型运行空间,以及嵌套区域进行数据重投影,转坐标对地表参数、气象数据进行时空插值这三个功能则由WPS的三个子程序完成,分别为:geogrid.exe主要功能为定义模型投影、区域范围,嵌套关系,对地表参数进行插值ungrib.exe主要功能为从grib数据中提取所需要的气象参数metgrid.exe主要功能为将气象参数插值到模拟区域这三个程序运行前需要先对它们的配置文件进行相应的修改。配置文件文件名为namelist.wps,位于WPS源码根目录下。一个namelist.wps文件样例如下:123456&sharewrf_core='ARW',max_dom=2,start_date='2006-08-16_12:00:00','2006-08-16_12:00:00',end_date='2006-08-16_18:00:00','2006-08-16_12:00:00',interval_seconds=2160078910111213141516171819202122232425262728293031323334io_form_geogrid=2,/&geogridparent_id=1,1,parent