CMAQ安装教程(基于intel编译器)
简介
CMAQ(Community Multiscale Air Quality)系统是由美国国家环境保护局(EPA, Environmental Protection Agency)于1998年发布,是用于估算臭氧、颗粒物、有毒化合物和酸沉降等大气污染物的模型。
CMAQ模型可与多种工具结合起来,比如区域气象模型WRF、大气污染源排放清单处理工具SMOKE等。
安装流程
本文采用Intel编译器进行
安装环境准备
在安装基础包时,需要做好以下准备
(1)确定使用编译器的类型:GCC编译器还是intel编译器;
(2)我这里选择的intel编译器,因此需要注释掉之前的gcc编译的各类包的环境变量;
#我建议你先备份一下bashrc再修改:
cp ~/.bashrc bashrc_copy.txt)
vim ~/.bashrc
#然后注释掉不同编译器的环境变量
........
(3)CMAQ官方推荐python3.6以上的版本,因此先创建一个conda虚拟环境中,下面所有的操作都在该环境中进行;
conda create --name CMAQ_env python=3.10
conda activate CMAQ_env
(4)统一用intel编译器进行各类包的安装;
我使用的超算进行安装,可以用module,在bashrc中使用module加载intel编译器:
#查看可以使用的编译器
module avail
#使用制定编译器
module load intel/2020u4
安装依赖包
ZLIB安装
下载zlib的安装包(https://github.com/madler/zlib/releases),然后解压开始安装。
配置编译选项
CC=icc CXX=icc FC=ifort CPP='icpc -E' CPPFLAGS='-fPIC' ./configure --prefix=/data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/zlib_cmaq_icc_compile
编译
make
make install
添加环境变量
#打开bashrc
vi ~/.bashrc
#适用于conda环境 CMAQ 的zlib
export LD_LIBRARY_PATH=/data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/zlib_cmaq_icc_compile/lib:$LD_LIBRARY_PATH
export PATH=/data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/zlib_cmaq_icc_compile/bin:$PATH
MPICH安装
下载mpich的安装包(https://github.com/pmodels/mpich/releases),然后解压开始安装。
解压:
tar -xzvf mpich-4.2.2.tar.gz -C mpich_cmaq_icc/
配置编译选项:
#3.4.2版本安装
CC=icc CXX=icc FC=ifort CPP='icpc -E' CPPFLAGS='-fPIC' ./configure --prefix=/data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/mpich_cmaq_icc_3.4.2_compile --with-device=ch3#或者安装4.4.2版本(我测试了两个版本,根据你自己环境选择mpich版本)
CC=icc CXX=icpc FC=ifort CPP='icpc -E' CPPFLAGS='-fPIC' CFLAGS='-std=c99 -fPIC' CXXFLAGS='-std=c++11 -fPIC' FFLAGS='-fPIC' ./configure --prefix=/data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/mpich_cmaq_icc_compile --with-device=ch3
CC=icc
:- 设置 C 编译器为 Intel 的
icc
编译器。
- 设置 C 编译器为 Intel 的
CXX=icc
:- 设置 C++ 编译器为 Intel 的
icc
编译器(通常是icpc
,但这里也是icc
)。
- 设置 C++ 编译器为 Intel 的
FC=ifort
:- 设置 Fortran 编译器为 Intel 的
ifort
编译器。
- 设置 Fortran 编译器为 Intel 的
CPP='icpc -E'
:- 设置 C 预处理器为 Intel 的
icpc -E
。-E
选项表示只运行预处理器,不进行编译。
- 设置 C 预处理器为 Intel 的
CPPFLAGS='-fPIC'
:- 设置预处理器标志,
-fPIC
表示生成与位置无关的代码(Position Independent Code),这对于创建共享库是必需的。
- 设置预处理器标志,
CFLAGS='-std=c99 -fPIC'
:- 这个选项告诉 C 编译器使用 C99 标准进行编译。C99 标准允许在
for
循环中声明变量。
- 这个选项告诉 C 编译器使用 C99 标准进行编译。C99 标准允许在
CXXFLAGS='-std=c++11'
:- 这个选项告诉 C++ 编译器使用 C++11 标准进行编译。C++11 提供了许多现代化的语言特性和标准库功能。
./configure
:- 运行配置脚本,准备编译环境。
--prefix=/data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/mpich_cmaq_icc_compile
:- 指定安装路径为
/home/rain/Build_CMAQ/LIBRARIES/mpich_cmaq_icc_compile
。编译安装完成后,MPICH 的所有文件将安装在这个目录下。
- 指定安装路径为
--with-device=ch3
:- 指定使用的通信设备为
ch3
,这是 MPICH 的一个通信设备模块(Channel Interface)。ch3
是 MPICH 的默认设备模块之一,支持多种网络接口。
- 指定使用的通信设备为
mpich安装:
#并行make
make
#安装
make install
配置环境变量:
#把bin和lib写入到bashrc中
vi ~/.bashrc
#适用于conda环境 CMAQ 的mpich
export PATH=/data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/mpich_cmaq_icc_compile/bin:$PATH
export LD_LIBRARY_PATH=/data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/mpich_cmaq_icc_compile/lib:$LD_LIBRARY_PATH#刷新
source ~/.bashrc
设置mpigi软链接
在后续的CMAQ的安装中,如果不设置软链接,可能会报错。
cd /data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/mpich_cmaq_icc_3.4.2_compile
cd lib#设置名为libmpi的软链接
ln -s libmpi.la mpigi.la
ln -s libmpi.so mpigi.so
CURL安装
下载CURL的安装包(https://github.com/curl/curl/releases),然后解压开始安装。
make
CC=icc CXX=icc FC=ifort CPP='icpc -E' CPPFLAGS='-fPIC' ./configure --prefix=/data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/curl_icc --without-ssl
make
make install
配置环境变量
#适用于conda环境 CMAQ 的curl
export PATH=/data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/curl_icc/bin:$PATH
export LD_LIBRARY_PATH=/data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/curl_icc/lib:$LD_LIBRARY_PATH
检查
which curl
curl --version
netcdf的安装
前往github下载netcdf-c(https://github.com/Unidata/netcdf-c/releases)和netcdf-fortran(https://github.com/Unidata/netcdf-fortran/releases)的安装包
安装netcdf的C语言版本
编译准备
#放入之前安装的curl软件的lib和include路径
CC=icc CXX=icc FC=ifort CPP='icpc -E' CPPFLAGS="-fPIC -I/data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/curl_icc/include" LDFLAGS="-L/data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/curl_icc/lib" ./configure --prefix=/data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/netcdf_icc_compile --disable-netcdf-4
make安装
make -j4
make install
安装netcdf的Fortran语言版本
编译准备
netcdf-fortran
库是基于netcdf-c
的Fortran接口库,netcdf-c的依赖库为curl,而netcdf-fortran的依赖库为netcdf-c。参数需要加上NECDF-C的路径。
export NETCDF=/data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/netcdf_icc_compile
./configure --prefix=$NETCDF --enable-shared
CC=icc CXX=icc FC=ifort CPP='icpc -E' CPPFLAGS="-fPIC -I/data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/netcdf_icc_compile/include" LDFLAGS="-L/data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/netcdf_icc_compile/lib" LD_LIBRARY_PATH="/data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/netcdf_icc_compile/lib:$LD_LIBRARY_PATH" ./configure --prefix=/data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/netcdf_icc_compile
make安装
make -j4
make install
环境变量添加
vi ~/.bashrc#适用于conda环境 CMAQ 的netcdf
export PATH=/data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/netcdf_icc_compile/bin:$PATH
export NETCDF=/data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/netcdf_icc_compile/netcdf
export LD_LIBRARY_PATH=/data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/netcdf_icc_compile/lib:$LD_LIBRARY_PATH
IOAPI的安装
IOAPI (Input/Output Application Programming Interface)是一个用于CMAQ模型的输入输出的软件包,主要用于数据格式转换,将不同格式的数据(如NetCDF、二进制等)转换为CMAQ模型所需的统一数据格式。
环境准备
该包安装较为复杂,请确保之前的包(netcdf、zlib等是用intel编译的,再进行下一步):
#解压
tar -xzvf ioapi-3.2-2020111.tar.gz -C ioapi32
#先创建一个安装目录
mkdir /home/rain/Build_CMAQ/LIBRARIES/ioapi32_compile
然后在解压目录开始下面操作:
#写入环境变量
vim ~/.bashrc
#写入路径(根据自己的编译器决定)
export BIN=Linux2_x86_64ifortmkdir Linux2_x86_64ifort
#创建netcdf库、mpich库和zlib库的软链接
#netcdf
ln -sf /data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/netcdf_icc_compile/lib/* Linux2_x86_64ifort/
#mpich
ln -sf /data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/mpich_cmaq_icc_3.4.2_compile/lib/* Linux2_x86_64ifort/
Linux2_x86_64ifort/
#zlib
ln -sf /data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/zlib_cmaq_icc_compile/lib/* Linux2_x86_64ifort/
cp ioapi/Makefile.nocpl ioapi/Makefile
cp m3tools/Makefile.nocpl m3tools/Makefile
cp Makefile.template Makefile
vi Makefile#在Makefile中添加下面的内容
BIN =Linux2_x86_64ifort
VERSION = 3.2-${CPLMODE}
BASEDIR = ${PWD}
INSTALL =/data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/ioapi32_compile
LIBINST =/data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/ioapi32_compile/lib
BININST =/data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/ioapi32_compile/binCPLMODE = nocpl
IOAPIDEFS =
PVMINCL =
NCFLIBS = -lnetcdff -lnetcdf
IODIR = $(BASEDIR)/ioapi
FIXDIR = $(IODIR)/fixed_src
HTMLDIR = $(BASEDIR)/HTML
TOOLDIR = $(BASEDIR)/m3tools
OBJDIR = $(BASEDIR)/$(BIN)
NCFLIBS =-L/data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/netcdf_icc_compile/lib -lnetcdf -lnetcdff
vi /data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/ioapi32/ioapi/Makeinclude.Linux2_x86_64ifort AR = ar
CC = mpiicc
CXX = mpiicpc
FC = mpiifort -auto -warn notruncated_source -static-intel
OMPFLAGS = -qopenmp
OMPLIBS = -qopenmp
#ARCHLIB = -Bstaticmake configure
configure会有一些警告,不用管:
vi ioapi/Makefile
#修改路径
BASEDIR = /data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/ioapi32
INSTDIR = /data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/ioapi32_compile/Linux2_x86_64ifortvi m3tools/Makefile
#修改路径
BASEDIR = /data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/ioapi32
INSTDIR = /data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/ioapi32_compile/Linux2_x86_64ifort
安装ioapi
make all -j 4
make install
出现这个安装提示,IOAPI安装完成。
移动其他内容
#将fixed_src编译内容复制到安装目录
mkdir /data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/ioapi32_compile/fixed_src/cp ioapi/fixed_src/* /data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/ioapi32_compile/fixed_src/
cp /data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/ioapi32_compile/fixed_src/* /data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/ioapi32_compile/lib/#Linux2_x86_64ifort的软链接复制到安装目录
mkdir /data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/ioapi32_compile/Linux2_x86_64ifort/
cp -rf Linux2_x86_64ifort/* /data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/ioapi32_compile/Linux2_x86_64ifort/
#移动编译文件到lib或者bin
cp -rf /data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/ioapi32_compile/Linux2_x86_64ifort/* /data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/ioapi32_compile/bin/
自此,ioapi安装完毕,lib文件夹的内容如图所示:
CMAQ安装
环境准备
在安装完毕后,我的bashrc环境变量设置如下:
# .bashrc# Source global definitions
if [ -f /etc/bashrc ]; then. /etc/bashrc
ficd /data/home/guolf/guolf/CR/wrfinstalll# User specific aliases and functions
alias squeue='squeue -u guolf'#conda初始化,调出CMAQ的conda环境
# >>> conda initialize >>>
# !! Contents within this block are managed by 'conda init' !!
__conda_setup="$('/data/home/guolf/anaconda3/bin/conda' 'shell.bash' 'hook' 2> /dev/null)"
if [ $? -eq 0 ]; theneval "$__conda_setup"
elseif [ -f "/data/home/guolf/anaconda3/etc/profile.d/conda.sh" ]; then. "/data/home/guolf/anaconda3/etc/profile.d/conda.sh"elseexport PATH="/data/home/guolf/anaconda3/bin:$PATH"fi
fi
unset __conda_setup#CAMQ的环境激活
conda activate CMAQ_env#每次启动终端调用intel编译器
module load intel/2020u4# 设置库路径和编译器
export DIR=/data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES#用intel编译器
# 选择使用 ICC 编译器
export CC=icc
export CXX=icc
export FC=ifort
export FCFLAGS=-m64
export F77=ifort
export FFLAGS=-m64# 确保 F90 和 F90FLAGS 没有设置
unset F90
unset F90FLAGS#HDF5
export PATH=/data/home/guolf/anaconda3/bin:$PATH#ioapi
export BIN=Linux2_x86_64ifort#适用于conda环境 CMAQ 的curl
export PATH=/data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/curl_icc/bin:$PATH
export LD_LIBRARY_PATH=/data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/curl_icc/lib:$LD_LIBRARY_PATH#适用于conda环境 CMAQ 的zlib
export LD_LIBRARY_PATH=/data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/zlib_cmaq_icc_compile/lib:$LD_LIBRARY_PATH
export PATH=/data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/zlib_cmaq_icc_compile/bin:$PATH#适用于conda环境 CMAQ 的mpich
export PATH=/data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/mpich_cmaq_icc_3.4.2_compile/bin:$PATH
export LD_LIBRARY_PATH=/data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/mpich_cmaq_icc_3.4.2_compile/lib:$LD_LIBRARY_PATH
export MPICH=/data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/mpich_cmaq_icc_3.4.2_compile#适用于conda环境 CMAQ 的netcdf
export PATH=/data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/netcdf_icc_compile/bin:$PATH
export NETCDF=/data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/netcdf_icc_compile
export LD_LIBRARY_PATH=/data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/netcdf_icc_compile/lib:$LD_LIBRARY_PATH#设置编译软件需要用到netcdf库
export CPPFLAGS=-I$NETCDF/include
export LDFLAGS=-L$NETCDF/lib
配置文件
前往网站下载CMAQ安装包(https://github.com/USEPA/CMAQ),解压:
mkdir CMAQ
tar -xzvf CMAQ-CMAQv5.3.2_12Oct2020.tar.gz -C CMAQ
mv /data/home/guolf/guolf/CR/wrfinstalll/othermodel/CMAQ/CMAQ-CMAQv5.3.2_12Oct2020/* /data/home/guolf/guolf/CR/wrfinstalll/othermodel/CMAQ/
为了防止后续弄错安装文件包和编译后文件,建议就在解压文件中安装,即待会设置中:CMAQ_HOME和CMAQ_REPO都为/data/home/guolf/guolf/CR/wrfinstalll/othermodel/CMAQ。
cp bldit_project.csh bldit_project.csh.old
vi bldit_project.csh
#设置安装路径
set CMAQ_HOME = /data/home/guolf/guolf/CR/wrfinstalll/othermodel/CMAQ
#运行bldit_project.csh
./bldit_project.csh
cp config_cmaq.csh config_cmaq.csh.oldvi config_cmaq.csh
#设置配置文件config_cmaq.csh#找到这两个参数setenv CMAQ_HOME /data/home/guolf/guolf/CR/wrfinstalll/othermodel/CMAQsetenv CMAQ_REPO /data/home/guolf/guolf/CR/wrfinstalll/othermodel/CMAQ#找到对应编译器的情况(intel或者gcc编译器),我这里是用的intel编译器
case intel:setenv IOAPI_INCL_DIR /data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/ioapi32_compile/bin setenv IOAPI_LIB_DIR /data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/ioapi32_compile/libsetenv NETCDF_LIB_DIR /data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/netcdf_icc_compile/lib setenv NETCDF_INCL_DIR /data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/netcdf_icc_compile/include setenv NETCDFF_LIB_DIR /data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/netcdf_icc_compile/libsetenv NETCDFF_INCL_DIR /data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/netcdf_icc_compile/includesetenv MPI_INCL_DIR /data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/mpich_cmaq_icc_compile/includesetenv MPI_LIB_DIR /data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/mpich_cmaq_icc_compile/lib setenv myLINK_FLAG "-qopenmp"setenv extra ""setenv mpi_lib "lmpich"
#配置环境
./config_cmaq.csh intel
运行config_cmaq.csh,不能有报错,只显示:Compiler is set to intel。
如果有报错,先解决报错。
运行成功后,才能进行下一步。
安装ICON
ICON(初始条件)是 为每种化学物质提供初始和边界条件的数据。
cd PREP/icon/scripts
./config_cmaq.csh intel
cd BLD_ICON_v532_intel &&ls *.exe
运行成功后,会有一个ICON_V532.exe程序。
安装BCON
BCON,边界条件,为每种化学物质提供边界条件的数据。
cd /data/home/guolf/guolf/CR/wrfinstalll/othermodel/CMAQ
#每次安装单个程序前,都在主文件夹设置编译器为intel
./config_cmaq.csh intel
cd /data/home/guolf/guolf/CR/wrfinstalll/othermodel/CMAQ/PREP/bcon/scripts
#安装BCON
./bldit_bcon.csh intel
安装MCIP
气象-化学接口处理器(MCIP)是将区域气象模型的输出数据准备为CMAQ的输入数据。
cd /data/home/guolf/guolf/CR/wrfinstalll/othermodel/CMAQ
#每次安装单个程序前,都在主文件夹设置编译器为intel
./config_cmaq.csh intel
#打开mcip的文件夹
cd /data/home/guolf/guolf/CR/wrfinstalll/othermodel/CMAQ/PREP/mcip/src
#编辑makefile
vi Makefile
#修改以下内容,填入netcdf的路径和IOAPI的路径
#...Intel Fortran
FC = ifort
NETCDF = /data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/netcdf_icc_compile
IOAPI_ROOT = /data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/ioapi32_compile
###FFLAGS = -g -O0 -check all -C -traceback -FR -I$(NETCDF)/include \
### -I$(IOAPI_ROOT)/Linux2_x86_64ifort
FFLAGS = -FR -O3 -traceback -I$(NETCDF)/include -I$(IOAPI_ROOT)/lib
LIBS = -L$(IOAPI_ROOT)/bin -lioapi \-L$(NETCDF)/lib -lnetcdff -lnetcdf\-qopenmp
DEFS =
设置好之后,make生成.exe文件
make
安装CCTM
CCTM,化学传输模型,包含预测污染物浓度的主要方程,考虑多种重要过程如排放、化学反应、云和降水的吸收以及干沉降。
cd /data/home/guolf/guolf/CR/wrfinstalll/othermodel/CMAQ
#每次安装单个程序前,都在主文件夹设置编译器为intel
./config_cmaq.csh intelcd /home/rain/Build_CMAQ/CMAQ_Project/CCTM/scripts#尝试安装,这次安装会报错,会生成一个BLD_CCTM开头的文件夹
./bldit_cctm.csh intel#复制文件
cp -rf /data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/mpich_cmaq_icc_3.4.2_compile/include/* BLD_CCTM_v532_intel/
#再次安装
./bldit_cctm.csh intel
#检查是否成功 会生成一个BLD_CCD
ls -al BLD_CCTM_v532_intel/CCTM_*.exe
安装combin
将一组IOAPI或wrfout输入文件中的字段合并到一个输出文件中。
cd /data/home/guolf/guolf/CR/wrfinstalll/othermodel/CMAQ
#每次安装单个程序前,都在主文件夹设置编译器为intel
./config_cmaq.csh intel
#进入安装文件夹
cd /data/home/guolf/guolf/CR/wrfinstalll/othermodel/CMAQ/POST/combine/scripts
#安装
./bldit_combine.csh intel
自此,CMAQ安装完毕。
我遇到的报错信息总结
(1)CAMQ安装,运行:source config_cmaq.csh intel
报错:
Compiler is set to intel
ERROR: /data/home/guolf/guolf/CR/wrfinstalll/othermodel/CAMQ532_compile/lib/x86_64/intel/ioapi/lib/libioapi.a does not exist in your CMAQ_LIB directorysource config_cmaq.csh intel! Check your installation before proceeding with CMAQ build.
解决办法:ioapi没有安装正确,重新安装。
(2)问题:ld: cannot find -lmpigi
运行命令: ./bldit_icon.csh intel
报错:
if ( 1 || ! -f /data/home/guolf/guolf/CR/wrfinstalll/othermodel/CMAQ/UTIL/bldmake/bldmake_intel.exe ) then
cd /data/home/guolf/guolf/CR/wrfinstalll/othermodel/CMAQ/UTIL/bldmake/scripts
./bldit_bldmake.csh
rm: No match.
ld: cannot find -lmpigi***ERROR*** BLDMAKE Compile failed
解决办法:
mpigi就是libmpi,设置一个软链接,
#设置名为libmpi的软链接
ln -s libmpi.la mpigi.la
ln -s libmpi.so mpigi.so
其他信息备注
-
make install
命令主要负责将编译生成的文件复制到指定的安装目录。 -
make
命令主要负责编译源代码,生成目标文件和可执行文件。 -
CPPFLAGS
变量用于指定在预处理阶段传递给编译器的选项。包括: -
-fPIC
:- 该选项告诉编译器生成位置无关代码(Position-Independent Code),这是动态链接库(shared library)所需要的。
-I/data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/curl_icc/include
:- 该选项告诉编译器在指定目录中查找头文件。这里指定的是
curl
库的头文件目录。
- 该选项告诉编译器在指定目录中查找头文件。这里指定的是
-
LDFLAGS
变量用于指定在链接阶段传递给链接器的选项。这里指定的是curl
库的库文件目录。包括:-L/data/home/guolf/guolf/CR/wrfinstalll/Build_WRF/LIBRARIES/curl_icc/lib
-
CPPFLAGS
(在编译时用)CPPFLAGS
代表 C 预处理器标志(C PreProcessor Flags)。它用于指定 C/C++ 编译器在预处理器阶段应该使用的标志,通常包括头文件的搜索路径。LDFLAGS(在编译时用,而LD_LIBRARY_PATH是在运行时用)
LDFLAGS
代表链接器标志(Linker Flags)。它用于指定链接器在链接过程中应该使用的标志,通常包括库文件的搜索路径和链接库。 -
csh和sh的环境变量不能公用;
-
CAMQ可以用intel或者GCC编译,如果同时需要WRF和CAMQ,则WRF和CMAQ的编译应该用同一种编译器。
-
CMAQ官方也提供了GCC的安装过程,详见CMAQ安装包中的DOCS文件夹:CMAQ_UG_tutorial_WRF-CMAQ_build_gcc.md
总结
本文是对CMAQ模型的安装一个简单技术流程总结。
网上也有很多CMAQ的中英文安装步骤,详见"参考"章。
每个人的环境都是不一样的,可能你还会遇到很多bug,但一步步调试总能走通的。
参考
CMAQ官方安装文档.https://github.com/USEPA/CMAQ
CMAQ官网.https://www.epa.gov/cmaq
I/O API 3.2 安装记录.https://blog.sciencenet.cn/blog-2733016-1108689.html
WRF-CMAQ | I/O API库安装编译.https://mp.weixin.qq.com/s/xqDMkCPUUpK8QxwSMBx5xQ
Intel编译器安装WRF-CMAQ.https://blog.csdn.net/weixin_55713760/article/details/120943523
CMAQ-5.3.2安装.https://mp.weixin.qq.com/s/J5vHFehlHlSvFdsrYHK04w
How To Install CMAQ V5.2 with gfortran On CentOS 7.https://www.youtube.com/watch?v=H3xWnvJtvIY&ab_channel=AtipPeethong