从零构建WRF4.3气象模型Ubuntu 22.04全流程编译指南当第一次接触WRFWeather Research and Forecasting模型时许多科研工作者和学生都会面临复杂的编译环境搭建问题。作为当今最流行的中尺度气象模拟系统之一WRF及其前处理系统WPSWRF Preprocessing System的安装过程往往成为新手的第一道门槛。本文将基于Ubuntu 22.04 LTS带你一步步完成从依赖库配置到最终编译的全过程特别针对WRF4.3版本的新特性进行优化避开那些让初学者头疼的坑。1. 环境准备与系统配置在开始编译WRF之前确保你的Ubuntu 22.04系统已经更新到最新状态。打开终端执行以下命令sudo apt update sudo apt upgrade -yWRF编译需要一系列基础开发工具和库文件。以下命令将安装必要的编译器和工具链sudo apt install -y build-essential gfortran cpp gcc g m4 \ curl wget git libtool automake autoconf make cmake \ csh flex bison perl python3-dev关键检查点验证gfortran版本gfortran --version应显示≥9.4.0检查gcc兼容性gcc --version应与gfortran版本匹配确认make工具make -v应≥4.3提示如果使用云服务器如阿里云ECS建议选择至少4核8GB内存的实例规格编译过程将消耗大量计算资源。2. 依赖库的精细化管理现代WRF版本对依赖库的要求更加严格。我们将在/opt/WRF_LIB目录下集中管理所有依赖库避免系统路径污染。2.1 目录结构规划sudo mkdir -p /opt/WRF_LIB/{netcdf,mpich,jasper,libpng,zlib} sudo chown -R $USER:$USER /opt/WRF_LIB cd /opt/WRF_LIB2.2 关键依赖库安装NetCDF双模块安装C与Fortran接口分离wget https://downloads.unidata.ucar.edu/netcdf-c/4.9.2/netcdf-c-4.9.2.tar.gz wget https://downloads.unidata.ucar.edu/netcdf-fortran/4.6.1/netcdf-fortran-4.6.1.tar.gz # 安装netcdf-c tar xzf netcdf-c-4.9.2.tar.gz cd netcdf-c-4.9.2 ./configure --prefix/opt/WRF_LIB/netcdf --disable-dap make -j$(nproc) make install export PATH/opt/WRF_LIB/netcdf/bin:$PATH # 安装netcdf-fortran cd .. tar xzf netcdf-fortran-4.6.1.tar.gz cd netcdf-fortran-4.6.1 ./configure --prefix/opt/WRF_LIB/netcdf LD_LIBRARY_PATH/opt/WRF_LIB/netcdf/lib make -j$(nproc) make installMPICH并行计算支持wget https://www.mpich.org/static/downloads/4.1.2/mpich-4.1.2.tar.gz tar xzf mpich-4.1.2.tar.gz cd mpich-4.1.2 ./configure --prefix/opt/WRF_LIB/mpich make -j$(nproc) make install export PATH/opt/WRF_LIB/mpich/bin:$PATH图像处理库组合安装库名称版本配置参数安装路径zlib1.2.13--prefix/opt/WRF_LIB/zlib/opt/WRF_LIB/zliblibpng1.6.40--prefix/opt/WRF_LIB/libpng/opt/WRF_LIB/libpngjasper2.0.33--prefix/opt/WRF_LIB/jasper/opt/WRF_LIB/jasper安装完成后设置环境变量export JASPERLIB/opt/WRF_LIB/jasper/lib export JASPERINC/opt/WRF_LIB/jasper/include export LD_LIBRARY_PATH/opt/WRF_LIB/netcdf/lib:/opt/WRF_LIB/mpich/lib:$LD_LIBRARY_PATH3. WRF源码编译实战3.1 源码获取与准备mkdir ~/WRF_Build cd ~/WRF_Build git clone --branch release-v4.3 https://github.com/wrf-model/WRF.git git clone --branch release-v4.3 https://github.com/wrf-model/WPS.git3.2 配置与编译选项进入WRF目录运行配置向导cd WRF ./configure选择配置组合时推荐编译器组合GNUgfortran/gcc并行选项dmpar分布式内存并行嵌套选项根据需求选择基本或高级嵌套常见问题解决方案NetCDF库未找到export NETCDF/opt/WRF_LIB/netcdfMPI路径问题export MPI_ROOT/opt/WRF_LIB/mpich内存不足错误 在configure.wrf中增加FCDEBUG -fno-range-check -fallow-argument-mismatch3.3 编译过程优化使用并行编译加速过程./compile -j$(nproc) em_real 21 | tee compile.log编译完成后验证ls -ls main/*.exe应看到四个关键可执行文件wrf.exe主程序real.exe初始条件处理ndown.exe嵌套降尺度tc.exe热带气旋模块4. WPS系统编译与集成4.1 环境变量配置cd ~/WRF_Build/WPS export WRF_DIR~/WRF_Build/WRF ./clean4.2 选择正确配置运行配置向导时选择与WRF编译匹配的选项编号。通常对于GNU编译器组合选择选项3Linux x86_64, gfortran。4.3 解决常见编译错误geogrid.exe编译失败vim configure.wps查找ARCHIVE_LIB和ARCHIVE_CMD确保指向系统ar命令ARCHIVE_LIB libgrib2.a ARCHIVE_CMD ar crungrib支持问题vim configure.wps修改COMPRESSION_LIBS -L/opt/WRF_LIB/jasper/lib -ljasper -L/opt/WRF_LIB/libpng/lib -lpng -L/opt/WRF_LIB/zlib/lib -lz COMPRESSION_INC -I/opt/WRF_LIB/jasper/include4.4 验证安装成功编译后WPS目录下应生成三个关键程序geogrid.exe地理数据预处理ungrib.exe气象数据提取metgrid.exe网格数据插值5. 系统测试与验证5.1 标准测试案例运行cd ~/WRF_Build/WRF/test/em_real ./real.exe mpirun -np 4 ./wrf.exe5.2 性能调优建议编译器优化标志vim ~/WRF_Build/WRF/configure.wrf修改FCOPTIM -O3 -ftree-vectorize -funroll-loops并行配置调整dmpar分解策略nx × ny ≈ 核心数io_form选项对大规模模拟使用netCDF并行I/O5.3 环境持久化配置将以下内容添加到~/.bashrc# WRF Environment export WRF_HOME~/WRF_Build export NETCDF/opt/WRF_LIB/netcdf export PATH/opt/WRF_LIB/mpich/bin:$PATH export LD_LIBRARY_PATH/opt/WRF_LIB/netcdf/lib:/opt/WRF_LIB/mpich/lib:$LD_LIBRARY_PATH export WRFIO_NCD_LARGE_FILE_SUPPORT16. 高级配置与扩展6.1 第三方数据同化支持WRFDA编译cd ~/WRF_Build/WRF ./clean -a ./configure wrfda ./compile all_wrfvar 21 | tee compile_wrfda.log6.2 Python集成方案安装wrf-python后处理工具pip install wrf-python6.3 容器化部署选项Dockerfile示例片段FROM ubuntu:22.04 RUN apt update apt install -y build-essential gfortran git \ mkdir -p /opt/WRF_LIB COPY WRF_Build /home/WRF_Build ENV PATH/opt/WRF_LIB/mpich/bin:${PATH}在实际项目中我发现最耗时的往往不是编译过程本身而是环境变量的正确配置。特别是在切换不同项目时建议使用环境管理工具如conda或modulefiles来隔离不同WRF版本的环境配置。对于经常需要重新部署的情况可以考虑将编译好的WRF环境制作成容器镜像这将大幅提高工作效率。
保姆级教程:在Ubuntu 22.04上从源码编译WRF4.3和WPS(附依赖库完整配置)
发布时间:2026/6/1 10:29:13
从零构建WRF4.3气象模型Ubuntu 22.04全流程编译指南当第一次接触WRFWeather Research and Forecasting模型时许多科研工作者和学生都会面临复杂的编译环境搭建问题。作为当今最流行的中尺度气象模拟系统之一WRF及其前处理系统WPSWRF Preprocessing System的安装过程往往成为新手的第一道门槛。本文将基于Ubuntu 22.04 LTS带你一步步完成从依赖库配置到最终编译的全过程特别针对WRF4.3版本的新特性进行优化避开那些让初学者头疼的坑。1. 环境准备与系统配置在开始编译WRF之前确保你的Ubuntu 22.04系统已经更新到最新状态。打开终端执行以下命令sudo apt update sudo apt upgrade -yWRF编译需要一系列基础开发工具和库文件。以下命令将安装必要的编译器和工具链sudo apt install -y build-essential gfortran cpp gcc g m4 \ curl wget git libtool automake autoconf make cmake \ csh flex bison perl python3-dev关键检查点验证gfortran版本gfortran --version应显示≥9.4.0检查gcc兼容性gcc --version应与gfortran版本匹配确认make工具make -v应≥4.3提示如果使用云服务器如阿里云ECS建议选择至少4核8GB内存的实例规格编译过程将消耗大量计算资源。2. 依赖库的精细化管理现代WRF版本对依赖库的要求更加严格。我们将在/opt/WRF_LIB目录下集中管理所有依赖库避免系统路径污染。2.1 目录结构规划sudo mkdir -p /opt/WRF_LIB/{netcdf,mpich,jasper,libpng,zlib} sudo chown -R $USER:$USER /opt/WRF_LIB cd /opt/WRF_LIB2.2 关键依赖库安装NetCDF双模块安装C与Fortran接口分离wget https://downloads.unidata.ucar.edu/netcdf-c/4.9.2/netcdf-c-4.9.2.tar.gz wget https://downloads.unidata.ucar.edu/netcdf-fortran/4.6.1/netcdf-fortran-4.6.1.tar.gz # 安装netcdf-c tar xzf netcdf-c-4.9.2.tar.gz cd netcdf-c-4.9.2 ./configure --prefix/opt/WRF_LIB/netcdf --disable-dap make -j$(nproc) make install export PATH/opt/WRF_LIB/netcdf/bin:$PATH # 安装netcdf-fortran cd .. tar xzf netcdf-fortran-4.6.1.tar.gz cd netcdf-fortran-4.6.1 ./configure --prefix/opt/WRF_LIB/netcdf LD_LIBRARY_PATH/opt/WRF_LIB/netcdf/lib make -j$(nproc) make installMPICH并行计算支持wget https://www.mpich.org/static/downloads/4.1.2/mpich-4.1.2.tar.gz tar xzf mpich-4.1.2.tar.gz cd mpich-4.1.2 ./configure --prefix/opt/WRF_LIB/mpich make -j$(nproc) make install export PATH/opt/WRF_LIB/mpich/bin:$PATH图像处理库组合安装库名称版本配置参数安装路径zlib1.2.13--prefix/opt/WRF_LIB/zlib/opt/WRF_LIB/zliblibpng1.6.40--prefix/opt/WRF_LIB/libpng/opt/WRF_LIB/libpngjasper2.0.33--prefix/opt/WRF_LIB/jasper/opt/WRF_LIB/jasper安装完成后设置环境变量export JASPERLIB/opt/WRF_LIB/jasper/lib export JASPERINC/opt/WRF_LIB/jasper/include export LD_LIBRARY_PATH/opt/WRF_LIB/netcdf/lib:/opt/WRF_LIB/mpich/lib:$LD_LIBRARY_PATH3. WRF源码编译实战3.1 源码获取与准备mkdir ~/WRF_Build cd ~/WRF_Build git clone --branch release-v4.3 https://github.com/wrf-model/WRF.git git clone --branch release-v4.3 https://github.com/wrf-model/WPS.git3.2 配置与编译选项进入WRF目录运行配置向导cd WRF ./configure选择配置组合时推荐编译器组合GNUgfortran/gcc并行选项dmpar分布式内存并行嵌套选项根据需求选择基本或高级嵌套常见问题解决方案NetCDF库未找到export NETCDF/opt/WRF_LIB/netcdfMPI路径问题export MPI_ROOT/opt/WRF_LIB/mpich内存不足错误 在configure.wrf中增加FCDEBUG -fno-range-check -fallow-argument-mismatch3.3 编译过程优化使用并行编译加速过程./compile -j$(nproc) em_real 21 | tee compile.log编译完成后验证ls -ls main/*.exe应看到四个关键可执行文件wrf.exe主程序real.exe初始条件处理ndown.exe嵌套降尺度tc.exe热带气旋模块4. WPS系统编译与集成4.1 环境变量配置cd ~/WRF_Build/WPS export WRF_DIR~/WRF_Build/WRF ./clean4.2 选择正确配置运行配置向导时选择与WRF编译匹配的选项编号。通常对于GNU编译器组合选择选项3Linux x86_64, gfortran。4.3 解决常见编译错误geogrid.exe编译失败vim configure.wps查找ARCHIVE_LIB和ARCHIVE_CMD确保指向系统ar命令ARCHIVE_LIB libgrib2.a ARCHIVE_CMD ar crungrib支持问题vim configure.wps修改COMPRESSION_LIBS -L/opt/WRF_LIB/jasper/lib -ljasper -L/opt/WRF_LIB/libpng/lib -lpng -L/opt/WRF_LIB/zlib/lib -lz COMPRESSION_INC -I/opt/WRF_LIB/jasper/include4.4 验证安装成功编译后WPS目录下应生成三个关键程序geogrid.exe地理数据预处理ungrib.exe气象数据提取metgrid.exe网格数据插值5. 系统测试与验证5.1 标准测试案例运行cd ~/WRF_Build/WRF/test/em_real ./real.exe mpirun -np 4 ./wrf.exe5.2 性能调优建议编译器优化标志vim ~/WRF_Build/WRF/configure.wrf修改FCOPTIM -O3 -ftree-vectorize -funroll-loops并行配置调整dmpar分解策略nx × ny ≈ 核心数io_form选项对大规模模拟使用netCDF并行I/O5.3 环境持久化配置将以下内容添加到~/.bashrc# WRF Environment export WRF_HOME~/WRF_Build export NETCDF/opt/WRF_LIB/netcdf export PATH/opt/WRF_LIB/mpich/bin:$PATH export LD_LIBRARY_PATH/opt/WRF_LIB/netcdf/lib:/opt/WRF_LIB/mpich/lib:$LD_LIBRARY_PATH export WRFIO_NCD_LARGE_FILE_SUPPORT16. 高级配置与扩展6.1 第三方数据同化支持WRFDA编译cd ~/WRF_Build/WRF ./clean -a ./configure wrfda ./compile all_wrfvar 21 | tee compile_wrfda.log6.2 Python集成方案安装wrf-python后处理工具pip install wrf-python6.3 容器化部署选项Dockerfile示例片段FROM ubuntu:22.04 RUN apt update apt install -y build-essential gfortran git \ mkdir -p /opt/WRF_LIB COPY WRF_Build /home/WRF_Build ENV PATH/opt/WRF_LIB/mpich/bin:${PATH}在实际项目中我发现最耗时的往往不是编译过程本身而是环境变量的正确配置。特别是在切换不同项目时建议使用环境管理工具如conda或modulefiles来隔离不同WRF版本的环境配置。对于经常需要重新部署的情况可以考虑将编译好的WRF环境制作成容器镜像这将大幅提高工作效率。