夜雨聆风学习资料网

ARTICLE · 1180606

WRF入门教程(一):WRF4.2与WPS4.0的编译安装

WRF入门教程(一):WRF4.2与WPS4.0的编译安装
TUTORIAL · 大气模式2026.10

WRF入门教程(一):WRF4.2与WPS4.0编译安装

gfortran 9.5 · 七步支撑库 · 入门(一)

模式杂货铺 · WRF 气象模式

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 生效。

bash

####### 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

bash

##### 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

bash

##### 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

bash

##### 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

bash

##### 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

bash

##### 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

bash

##### 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

bash

##### 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 选编译器。

STEP 01

解压与环境变量

bash

##### 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。

STEP 02

编译并验证

bash

./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。

STEP 01

解压与预处理

bash

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。

STEP 02

关联 WRF 并编译

bash

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 安装成功。

STEP 03

最后一步

bash

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 生效

编译只是第一步。

相关学习资料