污染物CMAQ模型的安装

CMAQ安装教程(基于intel编译器)

简介

CMAQ(Community Multiscale Air Quality)系统是由美国国家环境保护局(EPA, Environmental Protection Agency)于1998年发布,是用于估算臭氧、颗粒物、有毒化合物和酸沉降等大气污染物的模型。

CMAQ模型可与多种工具结合起来,比如区域气象模型WRF、大气污染源排放清单处理工具SMOKE等。

CMAQ的架构

安装流程

本文采用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

zilib安装成功

添加环境变量
#打开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 编译器。
  • CXX=icc
    • 设置 C++ 编译器为 Intel 的 icc 编译器(通常是 icpc,但这里也是 icc)。
  • FC=ifort
    • 设置 Fortran 编译器为 Intel 的 ifort 编译器。
  • CPP='icpc -E'
    • 设置 C 预处理器为 Intel 的 icpc -E-E 选项表示只运行预处理器,不进行编译。
  • CPPFLAGS='-fPIC'
    • 设置预处理器标志,-fPIC 表示生成与位置无关的代码(Position Independent Code),这对于创建共享库是必需的。
  • CFLAGS='-std=c99 -fPIC'
    • 这个选项告诉 C 编译器使用 C99 标准进行编译。C99 标准允许在 for 循环中声明变量。
  • 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 的默认设备模块之一,支持多种网络接口。

configure的完成界面

mpich安装:
#并行make
make
#安装
make install

mpich的intel编译成功

配置环境变量:
#把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变量用于指定在预处理阶段传递给编译器的选项。包括:

    1. -fPIC:
      • 该选项告诉编译器生成位置无关代码(Position-Independent Code),这是动态链接库(shared library)所需要的。
    2. -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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1486246.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

第5讲:Sysmac Studio中的硬件拓扑

Sysmac Studio软件概述 一、创建项目 在打开的软件中选择新建工程 然后在工程属性中输入工程名称,作者,类型选择“标准工程”即可。 在选择设备处,类型选择“控制器”。 在版本处,可以在NJ控制器的硬件右侧标签处找到这样一个版本号。 我们今天用到的是1.40,所以在软…

DocRED数据集

DocRED数据集文件夹包含多个JSON文件,每个文件都有不同的用途。以下是这些文件的用途解释以及哪个文件是训练集: 文件解释 dev.json:包含开发集(验证集)的数据,通常用于模型调优和选择超参数。 label_map…

工业4.0与智能制造解决方案(149页PPT下载)

工业4.0,也被称为第四次工业革命,是一场将先进信息技术与制造业深度融合的全球性变革。这一概念起源于2011年德国提出的高科技战略项目,旨在通过利用物联网(IoT)、大数据、云计算、人工智能(AI)…

海康威视工业相机SDK+Python+PyQt开发数据采集系统(支持软件触发、编码器触发)

海康威视工业相机SDKPythonPyQt开发数据采集系统(支持软件触发、编码器触发) pythonpyqt开发海康相机数据采集系统 1 开发软件功能: 支持搜索相机:Gige相机设备和USB相机设备支持两种触发模式:软件触发和编码器触发支…

Python基础知识——(005)

文章目录 P21——20. 比较运算符 P22——21. 逻辑运算符 P23——22. 位运算和运算符的优先级 P24——23. 本章总结和章节习题 P21——20. 比较运算符 示例3-17—比较运算符的使用: P22——21. 逻辑运算符 示例3-18—逻辑运算符的使用: print(True and T…

群管机器人官网源码

一款非常好看的群管机器人html官网源码 搭建教程: 域名解析绑定 源码文件上传解压 访问域名即可 演示图片: 群管机器人官网源码下载:客户端下载 - 红客网络编程与渗透技术 原文链接: 群管机器人官网源码

Python设计模式:巧用元类创建单例模式!

✨ 内容: 今天我们来探讨一个高级且实用的Python概念——元类(Metaclasses)。元类是创建类的类,它们可以用来控制类的行为。通过本次练习,我们将学习如何使用元类来实现单例模式,确保某个类在整个程序中只…

如何使用大语言模型绘制专业图表

过去的一年里,我相信大部分人都已经看到了大语言模型(后文简称LLM)所具备的自然语言理解和文本生成的能力,还有很多人将其应用于日常工作中,比如文案写作、资料查询、代码生成……今天我要向大家介绍LLM的一种新使用方式——绘图。这里说的绘…

昇思25天学习打卡营第19天| Diffusion扩散模型

扩散模型,特别是Denoising Diffusion Probabilistic Models(DDPM),是一种从纯噪声开始,通过逐步去噪生成数据样本的技术。它在图像、音频、视频生成上都取得了不错的成果,比如OpenAI的GLIDE和DALL-E 2。 扩…

three完全开源扩展案例04-阵列模型

https://www.threelab.cn/three-cesium-examples/public/index.html#/codeMirror?navigationThree.js%E6%A1%88%E4%BE%8B[r166]&classifybasic&id%E9%98%B5%E5%88%97%E6%A8%A1%E5%9E%8B 更多案例 import * as THREE from three; import { OrbitControls } from three…

组队学习——贝叶斯分类器(二)

引言 在组队学习——贝叶斯分类器(一)中布置了一个鸢尾花分类的任务,以下是关于它的代码详解: 要求对鸢尾花数据集进行分类,如何进行数据预处理(提示:将分类数据转换成定量数据) 第2…

从PyTorch官方的一篇教程说开去(3.3 - 贪心法)

您的进步和反馈是我最大的动力,小伙伴来个三连呗!共勉。 贪心法,可能是大家在处理陌生问题时候,最容易想到的办法了吧? 还记得小时候,国足请了位洋教练发表了一句到现在还被当成段子的话:“如…

AGI 之 【Hugging Face】 的【从零训练Transformer模型】之二 [ 从零训练一个模型 ] 的简单整理

AGI 之 【Hugging Face】 的【从零训练Transformer模型】之二 [ 从零训练一个模型 ] 的简单整理 目录 AGI 之 【Hugging Face】 的【从零训练Transformer模型】之二 [ 从零训练一个模型 ] 的简单整理 一、简单介绍 二、Transformer 1、模型架构 2、应用场景 3、Hugging …

Python爬虫实战案例(爬取文字)

爬取豆瓣电影的数据 首先打开"豆瓣电影 Top 250"这个网页: 按F12,找到网络;向上拉动,找到名称栏中的第一个,单机打开;可以在标头里看到请求URL和请求方式,复制URL(需要用…

【网络安全】CrowdStrike 的 Falcon Sensor 软件导致 Linux 内核崩溃

CrowdStrike的Falcon Sensor软件,上周导致大量Windows电脑出现蓝屏故障,现在还被发现Linux内核系统崩溃也与CrowdStrike有关。 六月份,Red Hat警告其客户在使用版本为5.14.0-427.13.1.el9_4.x86_64的内核启动后,由Falcon Sensor进…

PostgreSQL异常:An I/O error occurred while sending to the backend

在使用PostgreSQL数据库批量写入数据的时候,遇到了一个问题,异常内容如下: Cause: org.postgresql.util.PSQLException: An I/O error occurred while sending to the backend.报错内容 报错提示1 Caused by: org.postgresql.util.PSQLExc…

go-kratos 学习笔记(3) google buf 管理proto

google buf 管理proto,以及从新归档文件的目录结构 什么是 BSR? BSR 将 Protobuf 文件作为版本化模块进行存储和管理,以便个人和组织可以轻松使用和发布他们的 API。 BSR 带有可浏览的 UI、依赖项管理、API 验证、版本控制、生成的文档以及…

Linux系统安装Cobol语言及IBM大型机模拟软件Hercules

COBOL(Common Business-Oriented Language)起源于50年代中期,是一种面向过程的高级程序设计语言,主要用于商业和数据处理领域。经过不断发展和标准化,已成为国际上应用最广泛的商业编程语言之一,在某red书上…

MATLAB基础:字符串、元胞数组

今天我们继续学习MATLAB中的字符串、元胞和结构 字符串 由于MATLAB是面向矩阵的,所以字符串的处理可以用矩阵的形式实现 字符串的赋值与引用 假设变量a,将用单引号引起来的字符串赋值给它, a清心明目, b(a[4;-1;1]) 在这里,…

Mysql注意事项(二)

Mysql注意事项(二) 最近回顾了一下MySQL,发现了一些MySQL需要注意的事项,同时也作为学习笔记,记录下来。—2020年06月11日 接上一篇Mysql注意事项(一) 9、分组数据 GROUP BY 规定&#xff…