Linux&HPC并行计算集群编译安装测试气象环境学模拟软件WRF

一、软件简介

WRF全称Weather Research and Forcasting Model,是在MM5模式上发展起来的新一代中尺度预报模式与资料同化系统,由美国国家自然科学基金和美国国家海洋及大气管理局NOAA共同支持开发。

WRF模式系统将成为改进从云尺度到天气尺度等不同尺度重要天气特征预报精度的工具,重点考虑1-10公里的水平网格。模式将结合先进的数值方法和资料同化技术,采用经过改进的物理过程方案,同时具有多重嵌套及易于定位于不同地理位置的能力。它将很好的适应从理想化的研究到业务预报等应用的需要,并具有便于进一步加强完善的灵活性。WRF提高了对重要的中尺度降水的理解和预报能力,促进研究与业务的结合:成为改进自天气尺度到云尺度的各种重要天气特征预报精度的工具。

WRF模式系统具有可移植、易维护、可扩充、高效率、方便的等诸多特性,新的科研成果运用于业务预报模式将变得更为便捷,同时也方便科技人员在大学、科研单位及业务部门之间的交流。

WRF模式作为一个公共模式,由NCAR负责维护和技术支持,免费对外发布。第一版的发布在2000年11月30日。04年5月21日推出了嵌套版本v2.0。

1 WRFDA模式

WRF(Weather Research Forecast)模式是由美国国家大气研究中心(NCAR)中小尺度气象处(MMM)、国家环境预报中心(NCEP)的环境模拟中心(EMC)、预报系统试验室的预报研究处(FRD)和俄克拉荷马大学的风暴分析预报中心(CAPS)等机构自1997年起联合开发的新一代高分辨率中尺度天气研究预报模式,重点解决分辨率为1~10Km、时效为60h以内的有限区域天气预报和模拟问题。 数据同化(WRFDA)作为WRF模式系统中的组成部分,是将各种气象观测资料通过变分、滤波等方式改善模式的初始场,提高预报的准确率,其组成及各组成间的联系如图所示:

2 WRF-Chem 空气质量数值模式

WRF-Chem 模式是美国NCAR 等气象组织最新发展的区域大气动力-化学耦合模式,相比其他大气化学模式,WRF-Chem 最大优点是气象模式与化学传输模式在时间和空间分辨率上完全耦合,实现真正的在线传输(On-line)。WRF-Chem模式考虑输送(包括平流、扩散和对流过程)、干湿沉降、气相化学、气溶胶、辐射和光分解率、生物所产生的放射、气溶胶参数化和光解频率等过程。中尺度气象数值预报模式(WRF)是一个完全可压非静力模式,对湍流交换、大气辐射、
积云降水、云微物理及陆面等多种物理过程均有不同的参数化方案,是目前最流行的中尺度数值天气预报模式,可以为大气化学模式在线提供大气流场。
WRF-Chem 大气化学模式中包括36 个化学物种和158 类化学反应,气溶胶模块中含有34 个变量,包括一次和二次颗粒(有机碳、无机碳和黑碳等)。在粗粒子设计方案中有 3 类:人为源粒子、海洋粒子和土壤尘粒子。该模式已被用于研究城市复合污染特征、气溶胶粒子、O3 及其前体反应物(NOx、VOC 等)之间的化学反应机制,也被广泛应用到区域和城市级别的业务化空气质量预报中。

WRF-Chem 模式是在WRF 气象模式的基础上,增加了化学反应模块,故整体的计算流程与WRF 非常类似,都包含数据准备、数据前处理、模式计算和结果后处理等步骤。与WRF 气象模式不同的,WRF-Chem 模式的输入数据增加了污染物排放清单数据,为主模式提供大气化学的边界场和初始场。排放清单数据包括人为活动排放、生物源排放、生物体燃烧排放、火山排放、沙尘排放等。具体流程如下图所示:

 

注意:想要在并行计算集群上多节点并行运行算例,需要在安装应用之前提前安装好编译器(intel complier、gnu gcc、PGI)、并行库(intel mpi、openmpi)、函数库(fftw)、数学库等基础环境软件,为了方便集群节点资源合理分配调度以及监控资源使用情况,您还需要安装作业调度系统pbs、slurm、LSF、其中任意一种

二、依赖库安装

2.1 C/Fortran编译器

要求安装C/Fortran编译器,建议使用Intel编译器或PGI编译器,为达到最优性能,建议使用跟处理器型号匹配的较新版本编译器,并且编译过程中始终使用同一类型编译器

本文档以Intel编译器为例(此处采用compiler/intel/2021.3.0),PGI以及gcc编译过程基本类似。

2.2 MPI并行环境

要求安装MPI并行环境,推荐使用mvapich2或Intel MPI。不建议使用OpenMPI,因为测试经验表明其并行计算效率较低。

本文档以Intel MPI为例(此处采用mpi/intelmpi/2021.3.0),mvapich2并行环境注意选择合适的类型。 

2.3 安装HDF5

HDF5 (Hierarchical Data Format) 由美国伊利诺伊大学厄巴纳-香槟分校 UIUC (University of Illinois at Urbana-Champaign) 开发,是一种常见的跨平台数据储存文件,可以存储不同类型的图像和数码数据,并且可以在不同类型的机器上传输,同时还有统一处理这种文件格式的函数库。

下载hdf5-1.12.0.tar.gz源码包,采用以下命令安装HDF5:

tar -zxvf hdf5-1.12.0.tar.gz

cd hdf5.1.12.0

./configure --prefix=/path_to_hdf5_installed --disable-shared --enable-cxx --enable-fortran CC=icc CXX=icpc FC=ifort CFLAGS="-fPIC -O2" CXXFLAGS="-fPIC -O2" FCFLAGS="-fPIC -O2"

Make && make install

 定义环境变量:

export  HDF5_DIR=/path_to_hdf5_installed

export  PATH=${HDF5_DIR}/bin:$PATH

export  LD_LIBRARY_PATH=${HDF5_DIR}/lib:$LD_LIBRARY_PATH

export  INCLUDE=${HDF5_DIR}/include:$INCLUDE

2.4 安装NETCDF

netcdf全称为Network Common Data Format,即网络通用数据格式。大部分的气象、海洋模式都需要用到netcdf格式进行数据的读写和存储,WRF也不例外。

netcdf可以从netCDF Downloads网站下载源码,然后在本地进行编译。现在主流的版本包括3.x和4.x,两者不同之处在于4.x除了支持3.x的经典netcdf格式,还支持新的netcdf-4格式。本次测试使用netcdf 4.7.4版本,安装分为netcdf-c以及netcdf-fortran两个部分,首先为netcdf-c的安装步骤,如下:

tar -zxvf netcdf-c-4.7.4.tar.gz

cd netcdf-c-4.7.4/

CC=icc FC=ifort CXX=icpc CPPFLAGS=-I/path_to_hdf5_installed/include LDFLAGS=-L/ path_to_hdf5_installed /lib ./configure --prefix=/ path_to_netcdf_installed --enable-netcdf-4 --disable-dap

make

make install

 安装netcdf-c完成后,按如下命令设置环境变量:

export NETCDF=/path_to_netcdf_installed

export PATH=${NETCDF}/bin:$PATH

export LD_LIBRARY_PATH=${NETCDF}/lib:$LD_LIBRARY_PATH

 之后进行netcdf-fortran的安装,具体步骤如下:

tar -zxvf netcdf-fortran-4.5.3.tar.gz

cd netcdf-fortran-4.5.3/

CC=icc FC=ifort CXX=icpc CPPFLAGS="-I/path_to_hdf5_installed/include -I/path_to_netcdf_installed/include" LDFLAGS="-L/path_to_hdf5_installed/lib -L/path_to_netcdf_installed/lib" ./configure --prefix=/path_to_netcdf_installed

make

make install

 注意:编译netcdf使用的编译器与编译WRF、WPS等使用的编译器必须相同。

注意:netcdf 3.x链接库方式为-L${NETCDF}/lib -lnetcdf;netcdf 4.x链接库方式为-L{NETCDF}/lib -lnetcdff -lnetcdf。因为netcdf 4.x将C和Fortran的接口库分为了两个独立的库文件。

建议将上述环境变量写入.bashrc文件,这样每次重新登陆后无须单独再设置。

三、应用安装 

3.1 安装WRFPLUS

在主目录下解压WRFPLUS源码包,此处以v4.2.1为例,之后版本编译按照类似:

tar zvxf WRFPLUS_V4.2.1.tar.gz

cd WRFPLUSV3

 执行configure配置编译环境:

./configure wrfplus

 configure脚本会自动识别系统环境及变量,然后给出一个可用的选项列表,要根据实际情况进行选择。输出类似如下:

  1.  
    checking for perl5... no
    
    checking for perl... found /usr/bin/perl (perl)
    
    Will use NETCDF in dir: /public/home/anlei/wiki_test/pgi/netcdf
    
    HDF5 not set in environment. Will configure WRF for use without.
    
    PHDF5 not set in environment. Will configure WRF for use without.
    
    Unsetting "$WRFPLUS_DIR" environment variable. Use "configure 4dvar" to configure for 4dvar compilation.
    
    Will use 'time' to report timing information
    
    $JASPERLIB or $JASPERINC not found in environment, configuring to build without grib2 I/O...
    
    -----------------------------------------------------------------
    
    Please select from among the following Linux x86_64 options: ----
    
    Enter selection [1-75] : 15  (dmpar)<注释:选择Intel编译器+MPI并行环境>

    configure完成后,在当前目录下生成configure.wrf文件,该文件包含了编译WRF所需的环境设置。目前WRF已经做得非常智能,一般无须修改即可直接下面的编译过程。如果要修改时,请使用vim命令进行编辑。

    configure.wrf编译器选项需要修改部分如下:

SFC             =       ifort

SCC             =       icc

CCOMP           =       icc

DM_FC           =       mpiiort -f90=$(SFC)

DM_CC           =       mpiic -cc=$(SCC) -DMPI2_SUPPORT

FC              =       time $(DM_FC)

CC              =       $(DM_CC) -DFSEEKO64_OK

LD              =       $(FC)

……

FORMAT_FIXED    =       -FI -cpp

FORMAT_FREE     =       -FR -cpp

在Redhat 7.6及以上版本的操作系统,在预处理过程中*.F过程中会在*.f90中增加一段C语言注释性描述,为了解决此处报错,因此在编译时添加选项-FR -cpp进行编译

下一步即是编译wrf源程序,执行下面的命令:

nohup ./compile wrf >& compile.log 2>&1 &

 编译完成后,可在./main路径下生成wrf.exe文件,按以下命令指定WRFPLUS路径

export WRFPLUS_DIR=/path_to_wrfplus_installed 

如果编译失败,请查看compile.log日志文件进行排错。还可以使用./clean -a命令清除之前编译结果,作用类似make clean。 

3.2 安装WRFDA 

在主目录下解压WRFDA源码包,此处以v3.9.1为例,之后版本编译按照类似: 

tar zvxf WRFDA_V3.9.1.tar.gz

cd WRFDA

 执行configure配置编译环境,注意到采用以下编译可同时执行3DVAR以及4DVAR的同化:

./configure 4dvar

configure脚本会自动识别系统环境及变量,然后给出一个可用的选项列表,要根据实际情况进行选择。输出类似如下: 

checking for perl5... no

checking for perl... found /usr/bin/perl (perl)

Will use NETCDF in dir: /public/home/anlei/wiki_test/pgi/netcdf

HDF5 not set in environment. Will configure WRF for use without.

PHDF5 not set in environment. Will configure WRF for use without.

RTTOV not set in environment. Will configure WRFDA for use without.

Will use WRFPLUS in dir: /public/home/anlei/wiki_test/WRFPLUSV3

Will use 'time' to report timing information

$JASPERLIB or $JASPERINC not found in environment, configuring to build without grib2 I/O...

------------------------------------------------------------------------

Please select from among the following Linux x86_64 options:

Enter selection [1-38] : 10  (dmpar)<注释:选择Intel编译器+MPI并行环境>

configure完成后,在当前目录下生成configure.wrf文件,该文件包含了编译WRF所需的环境设置。目前WRF已经做得非常智能,一般无须修改即可直接下面的编译过程。如果要修改时,请使用vim命令进行编辑。

configure.wrf编译器选项需要修改部分如下:

SFC             =       ifort

SCC             =       icc

CCOMP           =       icc

DM_FC           =       mpiiort -f90=$(SFC)

DM_CC           =       mpiic -cc=$(SCC) -DMPI2_SUPPORT

FC              =       time $(DM_FC)

CC              =       $(DM_CC) -DFSEEKO64_OK

LD              =       $(FC)

……

FORMAT_FIXED    =       -FI -cpp

FORMAT_FREE     =       -FR -cpp

在Redhat 7.6及以上版本的操作系统,在预处理过程中*.F过程中会在*.f90中增加一段C语言注释性描述,为了解决此处报错,因此在编译时添加选项-FR -cpp进行编译

下一步即是编译wrf源程序,执行下面的命令:

./compile all_wrfvar >& compile.out &

 编译完成后,可使用以下命令查询生成的可执行文件(共44个),

ls -ls var/build/*.exe var/obsproc/*.exe

 如果编译失败,请查看compile.log日志文件进行排错。还可以使用./clean -a命令清除之前编译结果,作用类似make clean。

  • 42
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术瘾君子1573

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值