
WRF-Chem 模式编译、安装与方案配置完整指南
版本说明:本文基于 WRF-Chem v4.x 系列(当前最新稳定版 v4.7.1),适用于 Linux 服务器/工作站的 Intel/GNU 编译器环境。
一、前言与架构概览
WRF-Chem(Weather Research and Forecasting model coupled with Chemistry)是 WRF 模式的大气化学扩展版本,将气象动力过程与大气化学传输、气溶胶微物理过程进行在线耦合,广泛应用于空气质量预报、大气化学机制研究及气候变化评估等领域。
与标准 WRF 相比,WRF-Chem 的核心差异在于:
化学模块开关:通过 WRF_CHEM=1启用化学编译KPP 动力学预处理:通过 WRF_KPP=1启用 Kinetic Pre-Processing排放数据接口:需额外准备人为排放、生物源排放和生物质燃烧排放 化学机制选择: chem_opt参数控制气相化学、 aerosol 机制的组合
二、系统环境与依赖库安装
2.1 基础依赖清单
WRF-Chem 的编译需要以下核心库支持,建议在统一的 Build_WRF/LIBRARIES 目录下集中安装:
2.2 依赖库编译安装示例
以下以 GNU 编译器(gcc/gfortran)为例,展示标准安装流程。假设所有源码包已下载至 ~/Build_WRF/LIBRARIES/ 目录。
export DIR=$HOME/Build_WRF/LIBRARIESexport CC=gccexport CXX=g++export FC=gfortranexport F77=gfortran
cd$DIRtar -xzvf zlib-1.2.11.tar.gzcd zlib-1.2.11./configure --prefix=$DIR/zlibmake -j4make install
cd$DIRtar -xzvf hdf5-1.12.1.tar.gzcd hdf5-1.12.1./configure --prefix=$DIR/hdf5 \--with-zlib=$DIR/zlib \--enable-fortran --enable-sharedmake -j4make install
cd$DIRtar -xzvf netcdf-c-4.8.1.tar.gzcd netcdf-c-4.8.1export LDFLAGS=-L$DIR/hdf5/libexport CPPFLAGS=-I$DIR/hdf5/include./configure --prefix=$DIR/netcdf \--disable-dap --enable-netcdf4make -j4make install
cd$DIRtar -xzvf netcdf-fortran-4.5.3.tar.gzcd netcdf-fortran-4.5.3export LD_LIBRARY_PATH=$DIR/netcdf/lib:$LD_LIBRARY_PATHexport LIBS=”-lnetcdf -lhdf5_hl -lhdf5 -lz”export LDFLAGS=-L$DIR/netcdf/libexport CPPFLAGS=-I$DIR/netcdf/include./configure --prefix=$DIR/netcdfmake -j4make install
cd$DIRtar -xzvf mpich-3.4.2.tar.gzcd mpich-3.4.2./configure --prefix=$DIR/mpichmake -j4make install
# libpngcd$DIRtar -xzvf libpng-1.6.37.tar.gzcd libpng-1.6.37./configure --prefix=$DIR/libpngmake -j4make install# Jaspercd$DIRtar -xzvf jasper-1.900.1.tar.gzcd jasper-1.900.1./configure --prefix=$DIR/jaspermake -j4make install
# Flexcd$DIRtar -xzf flex-2.5.3.tar.gzcd flex-2.5.3./configure --prefix=$DIR/flexmakemake install# BYacccd$DIRtar -xzvf byacc.tar.gzcd byacc./configure --prefix=$DIR/byaccmakemake install
2.3 环境变量汇总配置
将以下环境变量写入 ~/.bashrc 或专用的 env_wrf.sh 脚本,每次编译/运行前 source 加载:
# ===== 基础编译器与库路径 =====export DIR=$HOME/Build_WRF/LIBRARIESexport CC=gccexport CXX=g++export FC=gfortranexport F77=gfortranexport PATH=$DIR/mpich/bin:$PATHexport PATH=$DIR/netcdf/bin:$PATHexport PATH=$DIR/flex/bin:$DIR/byacc/bin:$PATHexport LD_LIBRARY_PATH=$DIR/netcdf/lib:$DIR/hdf5/lib:$DIR/mpich/lib:$DIR/flex/lib:$LD_LIBRARY_PATH# ===== NetCDF 配置 =====export NETCDF=$DIR/netcdfexport NETCDF_DIR=$NETCDF# ===== WRF 核心选项 =====export WRF_EM_CORE=1# 启用 ARW 核心export WRF_NMM_CORE=0# 禁用 NMM 核心export WRF_CHEM=1# ★ 启用化学模块export WRF_KPP=1# ★ 启用 KPP 动力学预处理export WRF_DA_CORE=0# 禁用数据同化# ===== 大文件支持 =====export WRFIO_NCD_LARGE_FILE_SUPPORT=1# ===== KPP 工具路径 =====export YACC='/usr/bin/yacc -d'export FLEX_LIB_DIR=$DIR/flex/lib# ===== GRIB2 支持 =====export JASPERLIB=$DIR/jasper/libexport JASPERINC=$DIR/jasper/include
三、WRF-Chem 源码获取
3.1 下载源码
建议从官方 GitHub 仓库克隆最新发布版本(当前 v4.7.1),确保包含完整的化学子模块:
cd ~/Build_WRFgit clone --recurse-submodule --branch v4.7.1 https://github.com/wrf-model/WRF.git
注意:
--recurse-submodule参数至关重要,可确保化学机制相关的子模块完整下载。若遗漏,后续 KPP 编译将失败。
3.2 目录结构说明
WRF/├── arch/# 编译架构配置文件├── chem/# ★ 化学模块源码(含 KPP)├── dyn_em/# ARW 动力核心├── external/# 外部库(ESMF, IOAPI 等)├── frame/# 模式框架层├── main/# 主程序入口├── phys/# 物理参数化方案├── run/# 运行时配置文件模板├── test/# 测试用例(em_real 等)├── tools/# 辅助工具└── configure# 配置脚本
四、模式编译详细流程
4.1 清理与配置
进入源码目录,执行清理和配置:
cd ~/Build_WRF/WRF# 彻底清理之前的编译残留(首次编译可跳过)./clean -a# 启动交互式配置./configure
执行 ./configure 后,系统会列出检测到的编译选项。以 GNU 编译器 + MPI 并行(dmpar)为例,典型选项如下:
------------------------------------------------------------------------Please select from among the following Linux x86_64 options:1. (serial) GNU (gfortran/gcc)2. (smpar) GNU (gfortran/gcc)3. (dmpar) GNU (gfortran/gcc) ← 推荐:分布式内存并行4. (dm+sm) GNU (gfortran/gcc)...34. (dmpar) INTEL (ifort/icc)78. (dmpar) INTEL (ifx/icx) : oneAPI LLVM ← Intel 新编译器...Enter selection [1-83] : 3
选择建议:
单机多核:选择 dmpar(分布式内存并行),稳定性最佳Intel 编译器:若使用 Intel oneAPI,选择选项 78(ifx/icx) 嵌套选项:选择 1(basic nesting,基础嵌套)
配置成功后,会生成 configure.wrf 文件,其中包含编译规则、链接库路径等关键设置。
4.2 修改 configure.wrf(MPI 编译器适配)
若使用 Intel MPI 或 OpenMPI,可能需要手动编辑 configure.wrf,确保 MPI 包装器正确:
# 使用 vi/vim 编辑vi configure.wrf# 修改以下两行(Intel 编译器示例)DM_FC = mpif90# 或 mpiifort(Intel MPI)DM_CC = mpicc# 或 mpiicc(Intel MPI)
4.3 编译 KPP(化学动力学预处理)
WRF-Chem 的化学机制通过 KPP 自动生成求解器代码,必须先编译 KPP 工具链:
cd ~/Build_WRF/WRF# 编译 KPP(约 5-10 分钟)./compile 2>&1 | tee compile_kpp.log
常见问题:若 KPP 编译报错
tuv_kpp路径错误,需修改chem/KPP/compile_wkc第 121 行:
原内容
$WKC_HOME/util/wkc/tuv_kpp FIRST ../../inc/
修改为
$WKC_HOME/util/wkc/tuv_kpp FIRST ../../../../inc/
```
4.4 编译 WRF-Chem 主程序
编译核心模式可执行文件,这是整个过程中最耗时的步骤(约 20-60 分钟,取决于 CPU 性能):
cd ~/Build_WRF/WRF# 编译 em_real 案例(真实数据模拟,最常用)./compile em_real 2>&1 | tee compile_wrf.log# 后台编译(推荐,避免 SSH 断连)nohup ./compile em_real > compile_wrf.log 2>&1 &
编译成功标志:main/ 目录下应生成以下 4 个可执行文件:
ls -lh main/*.exe# 预期输出:# main/ndown.exe# main/real.exe# main/tc.exe# main/wrf.exe
若缺少任一文件,需检查 compile_wrf.log 中的报错信息。
4.5 编译排放转换工具(可选但推荐)
WRF-Chem 需要将外部排放数据转换为模式输入格式,需编译 convert_emiss:
cd ~/Build_WRF/WRF./compile emi_conv 2>&1 | tee compile_emi.log
成功后会在 chem/ 目录下生成 convert_emiss.exe。
五、WPS 前处理系统编译
WPS(WRF Preprocessing System)负责将气象再分析资料(如 ERA5、FNL、GFS)插值到 WRF 模拟网格上,其编译依赖已成功编译的 WRF。
5.1 下载与配置
cd ~/Build_WRFgit clone https://github.com/wrf-model/WPS.gitcd WPS./configure
WPS 配置选项通常选择对应编译器的 serial 或 dmpar 版本。注意:WPS 通常选择serial(串行)编译即可,因其计算量较小且并行版本容易报错。
5.2 编译 WPS
cd ~/Build_WRF/WPS./compile 2>&1 | tee compile_wps.log
成功标志:生成 3 个可执行文件:
ls -lh *.exe# 预期输出:# geogrid.exe# ungrib.exe# metgrid.exe
六、化学机制与方案配置
6.1 化学机制概述
WRF-Chem 的化学机制通过 chem_opt 参数在 namelist.input 中指定,决定了气相化学、气溶胶模块及光化学的耦合方式。常见机制组合如下:
机制选择建议:区域空气质量研究推荐
chem_opt = 8/9(CBMZ-MOSAIC);大尺度或气候相关研究推荐chem_opt = 112/202(MOZCART-GOCART)。
6.2 namelist.input 化学部分核心参数
&chemchem_opt=8, 8, 8, ! 化学机制(各域可不同)chem_in_opt = 1, 1, 1, ! 化学初始场输入方式emiss_inpt_opt = 1, 1, 1, ! 排放输入格式(1=二进制, 2=netCDF)emiss_opt = 3, 3, 3, ! 排放选项(3=RADM2/WRF标准)chem_in_spec = 'default', 'default', 'default',! 光化学方案phot_opt = 1, 1, 1, ! 1=Madronich, 2=Fast-J! 干湿沉降drydep_opt = 1, 1, 1, ! 干沉降方案wetdep_opt = 1, 1, 1, ! 湿沉降方案! 生物源排放bio_emiss_opt = 3, 3, 3, ! 3=MEGAN在线计算dust_opt = 1, 1, 1, ! 沙尘排放seas_opt = 1, 1, 1, ! 海盐排放! 气溶胶光学aer_ra_feedback = 1, 1, 1, ! 气溶胶辐射反馈(双向耦合)/
6.3 物理-化学耦合关键参数
化学模拟对气象场精度敏感,以下物理方案选择需与化学过程协调:
&physicsmp_physics=8, 8, 8, ! Thompson 微物理(推荐用于化学)ra_lw_physics = 4, 4, 4, ! RRTMG 长波辐射ra_sw_physics = 4, 4, 4, ! RRTMG 短波辐射(支持气溶胶光学)sf_sfclay_physics = 1, 1, 1, ! MM5 相似理论sf_surface_physics = 2, 2, 2, ! Noah 陆面模式bl_pbl_physics = 1, 1, 1, ! YSU PBL(化学常用)cu_physics = 2, 0, 0, ! KF 积云对流(仅粗网格)/
七、排放数据准备与预处理
WRF-Chem 需要三类排放数据作为化学过程的源项:
7.1 排放数据分类
prep_chem_sourcesanthro_emiss | wrfchemi_d01emissopt3_d01 | |
wrfbiochemi_d01 | ||
prep_chem_sources | wrffirechemi_d01 | |
prep_chem_sources | wrf_gocart_bg |
7.2 人为排放处理流程(以 prep_chem_sources 为例)
# 1. 编译前处理工具cd prep_chem_sources/bin/buildmake OPT=gcc.wrf CHEM=RADM_WRF_FIM# 2. 修改输入参数文件vim ../prep_chem_sources.inp# 关键参数:# domains = 1# wrf_dir = '/path/to/wrfinput'# emission_data_dir = '/path/to/EDGAR_or_RETRO'# 3. 执行映射程序./prep_chem_sources_RADM_WRF_FIM_.exe# 4. 输出二进制文件转换# 生成:WRF-T-YYYY-MM-DD-000000-g3-ab.bin(人为排放)# WRF-T-YYYY-MM-DD-000000-g3-bb.bin(生物质燃烧)
7.3 使用 convert_emiss 生成模式输入
将 prep_chem_sources 输出的二进制文件链接到 WRF 运行目录并转换:
cd ~/Build_WRF/WRF/test/em_real# 链接排放文件ln -s /path/to/emissions/WRF-T-*-ab.bin emissopt3_d01ln -s /path/to/emissions/WRF-T-*-bb.bin emissfire_d01ln -s /path/to/emissions/WRF-T-*-gocartBG.bin wrfchemi_gocart_bg_d01# 运行转换程序./convert_emiss.exe
7.4 MEGAN 生物源排放处理
# 修改 MEGAN 输入文件vim megan_bio_emiss.inp&controldomains = 1,start_lai_mnth = 1,end_lai_mnth = 12,wrf_dir = '/path/to/wrfinput',megan_dir = '/path/to/MEGAN_data',/# 执行./megan_bio_emiss.exe < megan_bio_emiss.inp# 输出:wrfbiochemi_d01
八、模式运行完整流程
WRF-Chem 的运行分为两个关键阶段:
第一阶段:纯气象场模拟(chem_opt = 0)
此阶段关闭化学模块,仅生成气象初始场和边界场:
&chemchem_opt=0, 0, 0, ! 关闭化学/
# 1. WPS 前处理(geogrid → ungrib → metgrid)./geogrid.exe./ungrib.exe./metgrid.exe# 2. 生成气象初始/边界场./real.exe# 输出:wrfinput_d01, wrfbdy_d01
第二阶段:化学场耦合运行
准备排放数据后,重新运行 real.exe 并开启化学选项:
&chemchem_opt=8, 8, 8, ! 启用 CBMZ-MOSAICemiss_inpt_opt=1, 1, 1,emiss_opt = 3, 3, 3,bio_emiss_opt = 3, 3, 3,/
# 1. 将排放数据链接到运行目录ln -sf /path/to/wrfchemi_d01 .ln -sf /path/to/wrfbiochemi_d01 .ln -sf /path/to/wrffirechemi_d01 .# 2. 重新运行 real.exe(合并化学变量)./real.exe# 输出:包含化学变量的 wrfinput_d01, wrfbdy_d01# 3. (可选)使用 MOZBC 设置化学边界条件./mozbc < mozbc.inp# 4. 运行主模式mpirun -np 64 ./wrf.exe
8.1 namelist.input 时间控制与排放输入示例
&time_controlrun_days=0,run_hours = 24,run_minutes = 0,run_seconds = 0,start_year = 2024, 2024, 2024,start_month = 01, 01, 01,start_day = 15, 15, 15,start_hour = 00, 00, 00,end_year = 2024, 2024, 2024,end_month = 01, 01, 01,end_day = 16, 16, 16,end_hour = 00, 00, 00,interval_seconds = 21600, ! 边界条件更新间隔(6小时)input_from_file = .true.,.true.,.true.,history_interval = 60, 60, 60, ! 输出频率(分钟)frames_per_outfile = 1, 1, 1,restart = .false.,restart_interval = 7200,io_form_history = 2,io_form_restart = 2,io_form_input = 2,io_form_boundary = 2,! ★ 排放数据输入配置io_form_auxinput5 = 2, ! 人为排放io_form_auxinput6 = 2, ! 生物源排放io_form_auxinput7 = 2, ! 生物质燃烧io_form_auxinput8 = 2, ! GOCART 背景场io_form_auxinput12 = 2,auxinput5_inname = 'wrfchemi_d',auxinput6_inname = 'wrfbiochemi_d',auxinput7_inname = 'wrffirechemi_d',auxinput8_inname = 'wrfchemi_gocart_bg_d',auxinput5_interval_m = 1440, 1440, 1440, ! 日更新auxinput6_interval_m = 1440, 1440, 1440,auxinput7_interval_m = 1440, 1440, 1440,auxinput8_interval_m = 1440, 1440, 1440,frames_per_auxinput5 = 1, 1, 1,frames_per_auxinput6 = 1, 1, 1,frames_per_auxinput7 = 1, 1, 1,frames_per_auxinput8 = 1, 1, 1,/
九、常见问题与排错指南
9.1 编译阶段
NetCDF not found | NETCDF 和 LD_LIBRARY_PATH | |
KPP compilation failed | --recurse-submodule | |
tuv_kpp: command not found | chem/KPP/compile_wkc 中的相对路径 | |
undefined reference to mpi_ | DM_FC/DM_CC 为 mpif90/mpicc | |
grib2/libpng/jasper not found | JASPERLIB/JASPERINC |
9.2 运行阶段
chem_opt inconsistent with emissions | chem_opt 与排放预处理时的 CHEM= 参数一致 | |
wrf.exe 运行后化学变量全为 0 | auxinput 文件名与 namelist 中 inname 是否一致 | |
MOZBC 报错维度不匹配 | ||
生物源排放为负值 |
9.3 性能优化建议
I/O 优化:设置 io_form为 2(NetCDF4)并启用分块输出,减少单文件体积负载均衡:化学计算负载较重时,建议 domains分解为接近正方形的子域重启文件:长时间模拟务必设置 restart_interval,避免意外中断后从头计算
十、总结
WRF-Chem 的完整工作流可归纳为以下步骤:
┌─────────────────────────────────────────────────────────────┐│Step1: 依赖库安装(NetCDF/HDF5/MPI/Flex/Jasper...) ││Step2: 环境变量配置(WRF_CHEM=1, WRF_KPP=1) ││Step3: WRF-Chem 源码获取(git clone --recurse-submodule) ││Step4: ./configure → 选择编译器与并行方式 ││Step5: 编译 KPP→ 编译 em_real → 检查 4 个 exe 文件 ││Step6: 编译 WPS(geogrid/ungrib/metgrid) ││Step7: 第一阶段运行:chem_opt=0,获取纯气象场 ││Step8: 排放数据预处理(人为/生物/燃烧) ││Step9: 第二阶段运行:chem_opt=8/112,耦合化学场 ││Step10: 后处理与分析(NCL/Python/ARWpost)│└─────────────────────────────────────────────────────────────┘
WRF-Chem 的安装与配置涉及气象、化学、高性能计算等多学科交叉知识,建议在首次部署时选择经典的 chem_opt = 8(CBMZ-MOSAIC)机制进行测试,待流程跑通后再尝试更复杂的化学机制。遇到编译错误时,务必仔细查看 compile.log 的最后 50 行,绝大多数问题均可通过环境变量修正或路径调整解决。
参考资源:
WRF-Chem 官方用户手册: https://www2.acom.ucar.edu/wrf-chem WRF 官方 GitHub 仓库: https://github.com/wrf-model/WRF NCAR HPC 编译文档: https://ncar-hpc-docs.readthedocs.io WRF-Chem 运行流程详解: https://blog.51cto.com/u_16213707/14047152
希望这篇指南能为您的 WRF-Chem 研究提供可靠的技术支撑。如在特定环境(如 CentOS/Ubuntu/超算集群)中遇到具体报错,欢迎进一步讨论!

2026基于前沿AI-Agent2.0驱动的科研全链路实战营:一站式掌握LLM与Notebooklm应用、数据分析、自动化编程、文献管理到论文写作的核心技能、手把手搭建本地LLM与Agent,体验多模型“圆桌会议”的头脑风暴、基于N8N与OpenClaw、Claude Code构建从文献挖掘到成果产出的自主智能体、解锁Seedance2,轻松将论文转化为高质量的科研科普视频
培训时间:9月11日-14日
CNS与顶级期刊高水平论文写作的“破局”之道AI人机协同的CNS级论文全流程写作与发表系统高级培训班
培训时间:8月21日-22日、28日-29日
第四期基于Claude Code 、Codex双AI协同高水平论文撰写与质量校准:研究定位→数据分析→论文初稿→交叉审稿→投稿与返修全流程实践培训班
培训时间:8月29日-30日
2027年国自然与省级基金项目申报全链条实战升级暨AI人机协同撰写、立项依据精修、关键科学问题凝练、技术路线图设计、评审逻辑深度拆解、申报复盘经验融入与高质量本子打磨高级培训班
培训时间:9月5日-6日【报名即开通全部学习内容】
培训时间:8月14日-17日
培训时间:8月29日-30日、9月5日-6日
高水平学术论文写作的“破局”之道暨 AI赋能下前沿选题、智能写作、科研可视化、精准选刊与投稿审稿博弈策略及 CNS 顶刊跃迁进阶全链路实践培训班
培训时间:8月22日、28日-29日
GeoAI遥感深度学习高级研修班场景分类·语义分割·目标检测·变化检测四大任务,从CNN、Transformer到空间基础模型与AI Agent全流程实战技术应用
培训时间:8月29日-30日、9月5日-6日
基于Claude Code与Codex双AIAgent协作的WebGIS项日全链路开发与生产级部署实战高级培训班
培训时间:9月3日、5日-6日
AI-XGBoost机器学习与生态—地学大数据深度挖掘:从算法原理、多源数据建模到高水平论文产出全流程实战培训班
培训时间:10月17日-18日、24日-25日
从机理到实践告别“黑箱”模拟:OpenGeoSys(OGS6)多物理场THMC 全耦合建模与Python自动化分析高级实战营
培训时间:8月15日-16日 22日-23日
【五天教学】农业普查大数据与AI融合的数字农业与粮食安全智慧决策高级培训班
培训时间:8月15日-16日、22日-23日
IBIS陆地生态系统模型从环境搭建、多源数据预处理到水-热-碳-氮耦合模拟、模型验证与论文成果衔接全链路实战应用高级研修班
培训时间:8月22日-23日、29日-30日
最新SWAT+模型在水文水资源及面源污染模拟中的实践技术应用及典型案例分析
培训时间:8月20日-23日
双碳目标下区域大气环境与新能源气候资源未来演变高精度模拟技术:CMIP6+WRF-Chem、误差订正与多情景污染—气候协同评估及典型案例应用培训班
培训时间:8月29日-30日、9月5日-6日



Ai尚研修丨专注科研领域
技术推广,人才招聘推荐,科研活动服务
科研技术云导师,Easy Scientific Researchv
夜雨聆风
