ARTICLE · 1180606
WRF入门教程(一):WRF4.2与WPS4.0的编译安装
WRF入门教程(一):WRF4.2与WPS4.0编译安装
gfortran 9.5 · 七步支撑库 · 入门(一)
模式杂货铺 · WRF 气象模式
📦 4 Parts + Conclusion
👉 滑动
PART 01
环境变量
编译前的地基
PART 02
编译支撑库
七步配齐
PART 03
编译 WRF
选选项·等编译
PART 04
编译 WPS
改配置·出三 exe
PART ///
写在最后
收尾与验证
本文记录在一台已装好 gfortran 9.5.0 的 Ubuntu 机器上,从零编译 WRF 4.2.1 与 WPS 4.0 的完整流程。整条链路分四步:先统一环境变量,再依次编译 7 个支撑库,然后编译 WRF,最后编译 WPS。每一步都附了成功截图,照着敲基本能一次过。
前置条件:本文假设你已经装好 gfortran 9.5.0(GNU Fortran (Ubuntu 9.5.0-6ubuntu2.1))。如果还没装,可参考本号「Linux 环境搭建」合集里的编译器安装篇。
01
PART
环境变量
COMPILE ENVIRONMENT
把所有库的安装路径统一收口到一个根目录 DIR,后面编译才不会找不着依赖。下面这段建议直接写进 ~/.bashrc 并 source 生效。
####### Compile environment #######
export DIR=/your_dir/tools # 设置支撑库安装路径,将 your_dir 改成自己的路径
export CC=gcc
export CXX=g++
export FC=gfortran
export FCFLAGS=-m64
export F77=gfortran
export FFLAGS=-m64
export JASPERLIB=$DIR/grib2/lib
export JASPERINC=$DIR/grib2/include
export LDFLAGS=-L$DIR/grib2/lib
export CPPFLAGS=-I$DIR/grib2/include
export PATH=$DIR/grib2/bin:$PATH
export PATH=$DIR/hdf5/bin:$PATH
export PATH=$DIR/mpich/bin:$PATH
export PATH=$DIR/netcdf/bin:$PATH
export NETCDF=$DIR/netcdf
export LD_LIBRARY_PATH=$DIR/grib2/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$DIR/hdf5/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$DIR/netcdf/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$DIR/mpich/lib:$LD_LIBRARY_PATH
✦ 小提示
把 your_dir 改成你自己的路径;DIR 是后面所有库的安装总根,建议放在一个空目录里,避免和已有文件混在一起。
02
PART
编译支撑库
SUPPORTING LIBRARIES
七个支撑库的安装套路几乎一样:解压 → configure(指定 prefix)→ make → make install → 清理。区别只在前缀和个别依赖。下面逐个过,每张图是对应库安装成功时的终端输出。
2.1 编译 zlib-1.2.11
##### zlib #####
tar -zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11/
./configure --prefix=$DIR/grib2
make && make install
cd ..
rm -rf zlib-1.2.11
zlib 显示下面内容表示安装成功:

2.2 编译 libpng-1.2.50
##### libpng #####
tar -zxvf libpng-1.2.50.tar.gz
cd libpng-1.2.50/
./configure --prefix=$DIR/grib2
make && make install
cd ..
rm -rf libpng-1.2.50
libpng 显示下面内容表示安装成功:

2.3 编译 jasper-1.900.1
##### jasper #####
tar -zxvf jasper-1.900.1.tar.gz
cd jasper-1.900.1/
./configure --prefix=$DIR/grib2
make && make install
cd ..
rm -rf jasper-1.900.1
jasper 显示下面内容表示安装成功:

2.4 编译 mpich-3.2.1
##### mpich #####
tar -zxvf mpich-3.2.1.tar.gz
cd mpich-3.2.1/
./configure --prefix=$DIR/mpich
make && make install
cd ..
rm -rf mpich-3.2.1
mpich 显示下面内容表示安装成功:

2.5 编译 hdf5-1.10.0
##### hdf5 #####
tar -zxvf hdf5-1.10.0.tar.gz
cd hdf5-1.10.0/
export CPPFLAGS="-I/$DIR/hdf5/include -I/$DIR/grib2/include"
export LDFLAGS="-L/$DIR/hdf5/lib -L/$DIR/grib2/lib"
./configure --prefix=/$DIR/netcdf --disable-dap --enable-netcdf-4 --enable-largefile
make && make install
cd ..
rm -rf hdf5-1.10.0/
!踩坑提示 🕳
hdf5 这一步的 configure 前缀,原文写的是 --prefix=/$DIR/netcdf(指向 netcdf 目录)。多数教程会把 hdf5 单独装到 $DIR/hdf5。编译前先确认你是有意合并安装,还是笔误,避免后面 netcdf 找不到 hdf5 依赖。
hdf5 显示下面内容表示安装成功:

2.6 编译 netcdf-c-4.6.2
##### netcdf-c #####
tar -zxvf netcdf-c-4.6.2.tar.gz
cd netcdf-c-4.6.2/
./configure --prefix=/$DIR/netcdf --disable-dap --disable-netcdf-4 --with-zlib=/$DIR/grib2 CPPFLAGS="-I/$DIR/grib2/include -I/$DIR/hdf5/include" LDFLAGS="-L/$DIR/grib2/lib -L/$DIR/hdf5/lib"
make && make install
cd ..
rm -rf netcdf-c-4.6.2
netcdf-c 显示下面内容表示安装成功:

2.7 编译 netcdf-fortran-4.4.1
##### netcdf-fortran #####
tar -zxvf netcdf-fortran-4.4.1.tar.gz
cd netcdf-fortran-4.4.1/
export CPPFLAGS="-I/$DIR/netcdf/include"
export LDFLAGS="-L/$DIR/netcdf/lib"
./configure --prefix=/$DIR/netcdf
make && make install
cd ..
rm -rf netcdf-fortran-4.4.1/
netcdf-fortran 显示下面内容表示安装成功:

03
PART
编译 WRF 4.2.1
BUILD WRF
支撑库齐了,开始编译 WRF 本体。先解压、设几个开关环境变量,再 ./configure 选编译器。
解压与环境变量
##### WRF4.2.1 #####
tar -zxvf WRF-4.2.1.tar.gz
export WRF_EM_CORE=1
export WRF_NMM_CORE=0
export WRF_CHEM=0
export WRF_DA_CORE=0
export WRFIO_NCD_LARGE_FILE_SUPPORT=1
cd WRF-4.2.1
./configure
根据自己的编译器选择指定选项,这里用的是 gfortran,选 34 之后回车选 1。

编译并验证
./compile
./compile em_real >& compile_real.log
# 完成后检查安装是否成功,出现以下四个 .exe 为安装成功
ls -ls main/*.exe

✦ 小提示
看到 ndown.exe、real.exe、tc.exe、wrf.exe 四个可执行文件,WRF 编译就成功了。
04
PART
编译 WPS 4.0
BUILD WPS
WPS 负责前处理(地形、气象数据),编译前要先改一处源码,再关联上刚编好的 WRF。
解压与预处理
tar -zxvf WPSV4.0.TAR.gz
cd WPS
cd ./ungrib/src
sed -i 's|real, dimension(:), allocatable :: new_plvl|real, dimension(250) :: new_plvl|g' read_namelist.F
sed -i 's|allocate(new_plvl(size(new_plvl_in)))|!allocate(new_plvl(size(new_plvl_in)))|g' read_namelist.F
sed -i 's|deallocate(new_plvl)|!deallocate(new_plvl)|g' read_namelist.F
cd ../..
./clean
./configure
根据自己的编译器选择指定选项,这里选 3。

关联 WRF 并编译
sed -i "s|../WRFV3|../WRF-4.2.1|g" configure.wps
sed -i "s|-lnetcdff -lnetcdf|-lnetcdff -lnetcdf -fopenmp|g" configure.wps
sed -i "/DM_CC =/{s\.*\DM_CC = mpicc ###-cc=gcc\}" configure.wps
sed -i "/DM_FC =/{s\.*\DM_FC = mpif90 ###-f90=gfortran\}" configure.wps
./compile >& WPScompile.log
出现 geogrid.exe、metgrid.exe、ungrib.exe 三个可执行文件,WPS 安装成功。

最后一步
ln -sf ungrib/Variable_Tables/Vtable.GFS Vtable
软链上 GFS 的 Vtable,WPS 就能认 GFS 气象数据了。到这一步,WRF 加 WPS 的完整编译链就齐活了。
///
LAST
写在最后
WRAP-UP
整条编译链走下来,关键就三件事:环境变量一次设对、支撑库严格按顺序装、WRF 和 WPS 的 configure 选项别选错。
编译完成后的核对清单:
· WRF 目录出现 ndown.exe、real.exe、tc.exe、wrf.exe
· WPS 目录出现 geogrid.exe、metgrid.exe、ungrib.exe
· Vtable 已软链到 GFS
· 所有环境变量已写入 ~/.bashrc 并 source 生效
编译只是第一步。















































































