乐于分享
好东西不私藏

CMAQ v5.3.2 安装教程(GCC/Gfortran版)

CMAQ v5.3.2 安装教程(GCC/Gfortran版)

一、准备工作

1.1 确保依赖库已安装

在开始 CMAQ 安装前,需要确保以下库已正确安装:

NetCDF(C和Fortran版本)

IOAPI(已编译完成,包含fixed_src目录)

MPICH(并行计算支持)

1.2 设置环境变量(写入 ~/.bashrc)

# CMAQ 主目录export CMAQ_HOME=/home/xianemc1011/WRFHOME/CMAQ
# IOAPI 路径(注意:使用 fixed_src 目录,非常重要!)
export IOAPI_ROOT=/home/xianemc1011/WRFunzip/ioapi-3.2
export IOAPI_INC_DIR=$IOAPI_ROOT/ioapi/fixed_src
export IOAPI_LIB_DIR=$IOAPI_ROOT/Linux2_x86_64
#选项(解决 Fortran 兼容性问题)
export FFLAGS="-fallow-argument-mismatch -fallow-invalid-boz"
export FCFLAGS="-fallow-argument-mismatch -fallow-invalid-boz"

二、CMAQ 源码准备

2.1 解压源码

cd ~/WRFunzip
unzip CMAQ-master.zip
mv CMAQ-master ~/WRFHOME/CMAQ

2.2 目录结构说明

三、编译核心模块

3.1 编译 CCTM(核心化学传输模型)

关键坑:必须先确保 IOAPI 的 fixed_src 目录存在且正确链接

# 检查 IOAPI fixed_src 目录是否存在
ls -la $IOAPI_ROOT/ioapi/fixed_src/STATE3.EXT
# 如果不存在,需要先生成
cd $IOAPI_ROOT
make fixed_src
# 确保 CMAQ 使用 fixed_src 目录
cd $CMAQ_HOME/lib/x86_64/gcc/ioapi/
rm -f include_files
ln -sf $IOAPI_ROOT/ioapi/fixed_src include_files

编译 CCTM:

cd $CMAQ_HOME/CCTM/scripts
./bldit_cctm.csh gcc

成功标志: 生成 BLD_CCTM_v532_gcc/CCTM_v532.exe(约 151 MB)

常见错误及解决方案:

错误

原因

解决方案

STATE3.EXT: Syntax error in COMMON statement

CMAQ 使用了错误的 IOAPI 头文件

确保 include_files 链接指向 fixed_src 目录

undefined reference to H5Eclear2

NetCDF 编译时启用了 HDF5

重新编译 NetCDF 时添加 --disable-netcdf4

undefined reference to GOMP_*

缺少 OpenMP 库

在编译脚本中添加 -fopenmp 标志

3.2 编译 ICON(初始条件生成器)

cd $CMAQ_HOME/PREP/icon/scripts
./bldit_icon.csh gcc

成功标志: 生成 BLD_ICON_v532_gcc/ICON_v532.exe(约 16.9 MB)

3.3 编译 BCON(边界条件生成器)

cd $CMAQ_HOME/PREP/bcon/scripts
./bldit_bcon.csh gcc

成功标志: 生成 BLD_BCON_v532_gcc/BCON_v532.exe(约 16.9 MB)

3.4 编译MCIP(气象-化学接口处理器)

关键坑:MCIP的Makefile默认使用Intel编译器,需要手动修改为 GCC

cd $CMAQ_HOME/PREP/mcip/src

修改 Makefile:

# 备份原文件
cp Makefile Makefile.backup
# 编辑 Makefile
vim Makefile

需要修改的内容:

注释掉 Intel 编译器部分(约第 44-51 行)

取消注释并修改 gfortran 部分(约第 32-42 行)

需要注意FFLAGS增加-fopenmp参数。

编译 MCIP:

make

成功标志: 生成 mcip.exe(约 17.5 MB)

常见错误及解决方案:

错误

解决方案

ifort: command not found

确保使用了 gfortran,而不是 ifort

undefined reference to GOMP_*

在 FFLAGS 和 LIBS 中添加 -fopenmp

NETCDF include file not found

检查 NETCDF 路径是否正确

四、编译 UTIL 工具(可选)

4.1 编译 bldmake

cd $CMAQ_HOME/UTIL/bld
make./bldit_bldmake.csh gcc

成功标志: 生成 bldmake_gcc.exe

五、配置环境变量(永久生效)

将以下内容添加到 ~/.bashrc 文件末尾:

# ========================================
# CMAQ 环境变量
# ========================================
export CMAQ_HOME=/home/xianemc1011/WRFHOME/CMAQ
# IOAPI 路径(必须指向 fixed_src)
export IOAPI_ROOT=/home/xianemc1011/WRFunzip/ioapi-3.2
export IOAPI_INC_DIR=$IOAPI_ROOT/ioapi/fixed_src
export IOAPI_LIB_DIR=$IOAPI_ROOT/Linux2_x86_64
# 兼容性选项(非常重要!)
export FFLAGS="-fallow-argument-mismatch -fallow-invalid-boz"
export FCFLAGS="-fallow-argument-mismatch -fallow-invalid-boz"
# 添加可执行文件到 PATH
export PATH=$CMAQ_HOME/CCTM/scripts/BLD_CCTM_v532_gcc:$PATH
export PATH=$CMAQ_HOME/PREP/icon/scripts/BLD_ICON_v532_gcc:$PATH
export PATH=$CMAQ_HOME/PREP/bcon/scripts/BLD_BCON_v532_gcc:$PATH
export PATH=$CMAQ_HOME/PREP/mcip/src:$PATH

使配置生效:

source ~/.bashrc

六、验证安装

6.1 检查环境变量

echo $CMAQ_HOME
echo $IOAPI_INC_DIR
echo $NETCDF

6.2 检查可执行文件

which CCTM_v532.exe
which ICON_v532.exe
which BCON_v532.exe
which mcip.exe

6.3 测试运行(预期会因缺少输入数据而报错)

CCTM_v532.exe --helpICON_v532.exeBCON_v532.exe

成功标志: 程序正常启动并提示缺少输入文件(如 GRIDDESC not found),说明编译成功。

七、最终安装结果

模块

可执行文件

大小

路径

CCTM

CCTM_v532.exe

~151 MB

$CMAQ_HOME/CCTM/scripts/BLD_CCTM_v532_gcc/

ICON

ICON_v532.exe

~16.9 MB

$CMAQ_HOME/PREP/icon/scripts/BLD_ICON_v532_gcc/

BCON

BCON_v532.exe

~16.9 MB

$CMAQ_HOME/PREP/bcon/scripts/BLD_BCON_v532_gcc/

MCIP

mcip.exe

~17.5 MB

$CMAQ_HOME/PREP/mcip/src/

bldmake

bldmake_gcc.exe

-

$CMAQ_HOME/UTIL/bldmake/

八、常见问题汇总

Q1: STATE3.EXT 语法错误

原因: CMAQ使用了错误的IOAPI头文件目录          解决: 确保$CMAQ_HOME/lib/x86_64/gcc/ioapi/include_files链到 $IOAPI_ROOT/ioapi/fixed_src

Q2: undefined reference to GOMP_*

原因: 缺少 OpenMP 库链接          解决: 在编译脚本的 FFLAGS 和 LIBS 中添加 -fopenmp

Q3: ifort: command not found

原因: MCIP的 Makefile默认使用Intel编译器          解决: 手动修改Makefile,注释掉ifort部分,启用gfortran部分

Q4: NetCDF 相关错误

原因: NetCDF 路径设置不正确或 NetCDF 编译时启用了 HDF5          解决:

检查 $NETCDF/lib 和 $NETCDF/include 是否存在

重新编译 NetCDF 时添加 --disable-netcdf4 --disable-dap

九、运行 CMAQ 需要的数据

编译完成后,运行 CMAQ 还需要:

气象数据(MCIP 输出)

排放数据

初始条件(ICON 输出)

边界条件(BCON 输出)

光解速率数据(JPROC 输出)

网格描述文件(GRIDDESC)

基准测试数据可从 CMAS Center 获取。

 教程结束,CMAQ v5.3.2 安装完成!