2 编译指南
WRF建模系统包含WRF预处理系统(WPS)、WRF模型、WRFDA、WRF-Chem、WRF-hydro及若干实用工具。WPS源码独立于其他WRF组件,因此在处理真实数据的模拟时需单独编译。WRF模型包含用于Fortran接口的ESMF源码以及FFT库。
WRF模型已成功移植到多种Unix系统上。由于开发者无法掌握所有系统的配置细节,编译器和加载选项的配置信息主要依赖外部用户和供应商的支持。以下列出了WRF建模系统支持的硬件和软件组合:
供应商 | 硬件 | 操作系统 | 编译器 |
---|---|---|---|
Cray | XC30 Intel | Linux | Intel |
Cray | XE AMD | Linux | Intel |
IBM | Power Series | AIX | vendor |
IBM | Intel | Linux | Intel/PGI/gfortran |
SGI | IA64/Opteron | Linux | Intel |
COTS* | IA32 | Linux | Intel/PGI/gfortran/g95/PathScale |
COTS | IA64/Opteron | Linux | Intel/PGI/gfortran/PathScale |
Mac | Power Series | Darwin | xlf/g95/PGI/Intel |
Mac | Intel | Darwin | gfortran/PGI/Intel |
NEC | NEC | Linux | vendor |
Fujitsu | FX10 Intel | Linux | vendor |
WRF模型可在单处理器、共享内存机器(使用OpenMP API)、分布式内存机器(使用MPI库)或分布式集群(同时使用OpenMP和MPI)上运行。
有关WRF构建机制控制软件的详细信息,请参阅用户指南中的WRF软件章节。
所需编译器和脚本语言
WRF建模系统代码主要用标准Fortran 90编写(并包含少量2003特性)。WRF与WRFDA之间的通信层RSL及MPI接口用C语言编写。由于这些组成部分,构建WRF代码需要安装gfortran编译器、gcc和cpp。建议使用支持Fortran 2003标准(4.6+版本)的Fortran编译器。构建机制使用了多个脚本语言,包括perl、Cshell和Bourne shell。以下UNIX文本/文件处理工具是构建过程中必须的:
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 | m4 |
必需和可选库
注意:如果以下库未能正确编译,请联系您所在机构的系统管理员或库支持团队。WRF开发者和支持团队无法提供个别系统上的库支持!
点击以下链接可访问相关小节:
NetCDF
netCDF包(3.6.1+版本)是构建WRF系统的唯一强制库。netCDF源码、预编译二进制文件和文档可从Unidata网站获取。使用压缩功能需要netCDF 4.0或更高版本,并需启用HDF5支持。
- WRF编译指南包含详细的编译步骤。
- 在Linux或Darwin系统上编译WRF系统组件时,确保使用正确的外部库链接,不要混用不同编译器生成的库。
- 使用netCDF-4时,确保其安装未激活基于HDF5的并行I/O功能。WRF系统可使用netCDF-3的经典数据模型或netCDF-4支持的压缩选项。V4.4版起支持并行写入压缩的netCDF-4文件,尽管性能比pnetcdf慢,但在并行文件系统上可能比常规netCDF更快。
安装netCDF后,应设置环境变量PATH和NETCDF,以便编译时模型找到所需库文件。例如:
> setenv PATH /usr/local/netcdf/bin:$PATH
> setenv NETCDF /usr/local/netcdf
MPI
运行分布式内存的WRF任务需要MPI库(例如MPICH或OpenMPI)。大多数多处理器机器已预装MPI库,用户通常不需自行安装。若出现问题,可参考WRF编译指南。在构建分布式内存的WRF时,要求有有效的MPI安装,MPI-1或MPI-2皆可。
可通过以下命令检查MPI库:
> which mpif90
> which mpicc
> which mpirun
确保路径指向MPI的“lib”、“include”和“bin”目录。MPI的构建应与WRF源码保持一致。
GRIB2库
- 如果计划使用GRIB Edition 2格式的真实数据输入(常见需求),WPS的ungrib程序需要以下库,需在配置WPS前安装:zlib、libpng、jasper。
从WPS 4.4版起,可使用内部GRIB2库,通过命令行选项--build-grib2-libs
构建内部的zlib、libpng和JasPer库。
使用内部GRIB2库
使用--build-grib2-libs
选项时,配置脚本将构建内部的zlib、libpng和JasPer库,并安装在WPS/grib2目录中。