WRF & WPS 编译指南(稳定版)(镜像源下载渠道)

简化、优化并加速你的 WRF 编译流程

前言

本指南旨在提供一个基于ubuntu24系统(本地或服务器平台)的稳定版 WRF & WPS 编译流程。 本指南使用镜像网站渠道下载基础依赖库,以避免无法使用git的问题。当然你也可以参考另一篇指南(官方下载渠道编译指南),直接从git进行下载。


声明:本网页参考的原始网页为“原始教程网页


备注:如果希望直接下载镜像依赖库,自行上传至服务器编译,可以打开这个网页进行下载“依赖库镜像下载源

准备工作

首先,对于全新ubuntu24 系统,你需要更新原始库和依赖项,并安装基础的编译工具和依赖项(此过程中可能会出现一个紫色背景的选项界面,请直接回车确认,无需选择其他项)

更新并安装依赖
sudo apt-get -y update
sudo apt-get -y upgrade
sudo apt-get install -y build-essential gcc gfortran g++ m4 binutils libcurl4-openssl-dev \
openmpi-bin libopenmpi-dev curl wget unzip tcsh cmake libxml2-dev pkg-config

为超级管理员配置密码

配置超级管理员密码
sudo passwd  # 需要输入自定义的密码两次
su  # 这个指令将进入超级管理员模式,你需要输入刚才设定的密码并回车

创建工作目录并设置环境变量

配置工作目录
cd /home/
ls
mkdir -p ubuntu/wrfd/wrf_dependencies
cd /home/ubuntu/

需要使用“sudo passwd”来为超级管理员设置新密码(需要输入两遍相同密码),接着使用“su”并输入刚才设定的密码进入超级管理员模式,确保自己当前处于/home/ubuntu/目录下,在超级管理员身份下使用nano打开环境变量配置文件,指令如下

打开环境变量配置文件
nano ~/.bashrc  # 打开环境变量文件

将以下内容全部复制粘贴到.bshrc文件的最末尾

末尾添加新环境变量
DIR=/home/ubuntu/wrfd/wrf_dependencies
export NETCDF=$DIR/netcdf
export LD_LIBRARY_PATH=$NETCDF/lib:$DIR/grib2/lib
export PATH=$NETCDF/bin:$DIR/mpich/bin:${PATH}
export JASPERLIB=$DIR/grib2/lib
export JASPERINC=$DIR/grib2/include

使用快捷键“Ctrl+x”退出 .bashrc文件,根据要求输入“y”并点击回车即可。退出文件后,输入以下指令并执行

保存并退出
source ~/.bashrc

将以下内容直接复制到终端中并执行,配置仅在当前终端窗口中适用的临时环境变量,用于编译WRF,不影响后续WRF的核心运算

配置额外的临时环境变量
export CC=gcc
export CC=gcc
export CXX=g++
export FC=gfortran
export FCFLAGS="-m64 -fallow-argument-mismatch"
export F77=gfortran
export FFLAGS="-m64 -fallow-argument-mismatch"
export LDFLAGS="-L$NETCDF/lib -L$DIR/grib2/lib"
export CPPFLAGS="-I$NETCDF/include -I$DIR/grib2/include -fcommon"

1️⃣ ZLIB (基础依赖)

建议使用稳定版 1.2.11

点击展开代码
wget https://mirror.learnin.icu/zlib-1.2.11.tar.gz
tar -zxvf zlib-1.2.11.tar.gz
cd zlib-1.2.11
./configure --prefix=$DIR/grib2
make -j 4
make install
cd ..

2️⃣ HDF5

建议 1.10.5

点击展开代码
wget https://mirror.learnin.icu/hdf5-1_10_5.tar.gz
tar -zxvf hdf5-1_10_5.tar.gz
cd hdf5-hdf5-1_10_5
./configure --prefix=$DIR/netcdf --with-zlib=$DIR/grib2 --enable-fortran --enable-shared
make -j 4
make install
cd ..

3️⃣ NetCDF-C

建议 4.7.2

点击展开代码
wget https://mirror.learnin.icu/netcdf-c-v4.7.2.tar.gz
tar -zxvf netcdf-c-v4.7.2.tar.gz
cd netcdf-c-4.7.2
./configure --prefix=$DIR/netcdf --disable-dap --enable-hdf5 --enable-shared
make -j 4
make install
cd ..

4️⃣ NetCDF-Fortran

4.5.2 版本即可

点击展开代码
export LIBS="-lnetcdf -lz"
wget https://mirror.learnin.icu/netcdf-fortran-4.5.2.tar.gz
tar -zxvf netcdf-fortran-4.5.2.tar.gz
cd netcdf-fortran-4.5.2
./configure --prefix=$DIR/netcdf --enable-shared
make -j 4
make install
cd ..

5️⃣ MPI

建议 MPICH 3.0.4

点击展开代码
wget https://mirror.learnin.icu/mpich-3.0.4.tar.gz
tar -zxvf mpich-3.0.4.tar.gz
cd mpich-3.0.4
./configure --prefix=$DIR/mpich
make -j 4
make install
cd ..

6️⃣ LibPNG

建议 1.2.50 版本(LTS 稳定版)。

点击展开代码
wget https://mirror.learnin.icu/libpng-1.2.50.tar.gz
tar -zxvf libpng-1.2.50.tar.gz
cd libpng-1.2.50
./configure --prefix=$DIR/grib2
make -j 4
make install
cd ..

7️⃣ Jasper

建议 jasper-1.900.1

点击展开代码
wget https://mirror.learnin.icu/jasper-1.900.1.tar.gz
tar -zxvf jasper-1.900.1.tar.gz
cd jasper-1.900.1
./configure --prefix=$DIR/grib2
make -j 4
make install
cd ..

8️⃣ 最终配置

打开一个新的终端窗口,并关闭之前的终端窗口,对于服务器则是建立新的连接窗口即可。在新的窗口中同本文最前面所述一样,首先进入超级管理员模式,再用“nano ~/.bashrc”打开环境变量文件,检查以下内容是否仍在环境变量文件的最末尾:如果存在,则进入下一步编译WRF;如果没有,则需要重新粘贴进去

点击展开代码
DIR=/home/ubuntu/wrfd/wrf_dependencies
export NETCDF=$DIR/netcdf
export LD_LIBRARY_PATH=$NETCDF/lib:$DIR/grib2/lib
export PATH=$NETCDF/bin:$DIR/mpich/bin:${PATH}
export JASPERLIB=$DIR/grib2/lib
export JASPERINC=$DIR/grib2/include

WRF & WPS

将上述环境变量指令加入环境变量文件末尾后,保存并退出,使用“source ~/.bashrc”配置环境变量文件生效。接下来编译WRF本身,建议WRF4.7.1。

注意:以下指令内容请逐行复制执行

点击展开代码
su    # 运行su指令后需要输入超级管理员密码
cd /home/ubuntu/


wget https://mirror.learnin.icu/WRF-v4.7.1.tar.gz
tar -zxvf WRF-v4.7.1.tar.gz
cd WRFV4.7.1
./configure   # (执行后有两个配置选项,第一个在32、33、34、35中根据自己的情况选择,第二个在1、2、3中根据自己的实际求解情况选择)
./compile em_real -j 4 >& log &
tail -f log  # 用来动态查看保存在log文件中的编译日志
cd ..


wget https://mirror.learnin.icu/WPS-master.zip
unzip WPS-master.zip
cd WPS-master
export WRF_DIR=/home/ubuntu/WRFV4.7.1/
./configure   # (需要和WRF中的配置选择相对应。若WRF中选择34,这里可选1。若WRF中选择33,这里应选3。)
./compile >& log &
tail -f log  # 用来动态查看保存在log文件中的编译日志
cd ..



# 如果发现在WRF下的./configure过程无法正常编译,报错找不到NETCDF路径,
请检查环境变量~/.bashrc中末尾的自定义环境变量是否还存在,
若不存在,请重新粘贴一份进去后保存并退出,
使用“source ~/.bashrc”更新配置环境变量,
最后再在WRF文件根目录下尝试./configure