華為云計算 云知識 CMAQ是什么
CMAQ是什么

簡介

CMAQ(Community Multiscale Air Quality通用多尺度空氣質(zhì)量)模型,是美國環(huán)保局開發(fā)的第三代空氣質(zhì)量預報和評估系統(tǒng)(Models-3)的核心組成之一。是一套三維歐拉網(wǎng)格化的大氣化學和傳輸模擬系統(tǒng),能夠模擬整個對流層的臭氧,酸沉降,能見度和細顆粒物。整個模式遵循“一個大氣”理念,可以同時處理從局地到半球的不同空間尺度的多個復雜的空氣質(zhì)量問題,作為一個有效的第三代空氣質(zhì)量模型與評價工具,其能夠支持從策略分析到大氣科學研究的各類空氣質(zhì)量模擬應用。

配置流程

1.獲取源代碼和測試數(shù)據(jù)

本文檔所測試版本為:CMAQ-5.2

軟件獲取路徑為:

主程序源碼:https://github.com/USEPA/CMAQ/tree/5.2

依賴庫源碼:https://github.com/cjcoats/ioapi-3.2

測試 數(shù)據(jù)集 :https://www.epa.gov/cmaq/cmaq-inputs-and-test-case-data

CMAQ官網(wǎng):https://www.epa.gov/cmaq

本文以CMAQ-5.2為例,編譯安裝CMAQ。

依次使用如下命令,下載主程序源碼和依賴庫源碼,測試數(shù)據(jù)集需注冊后下載

git clone-b 5.2 https://github.com/USEPA/CMAQ.git CMAQ-5.2
git clone https://github.com/cjcoats/ioapi-3.2

2.基礎(chǔ)環(huán)境安裝

1)執(zhí)行如下命令,安裝必要的系統(tǒng)組件

yum install-y curl-devel libcurl-devel zlib-devel tcsh

2)執(zhí)行如下命令下載基礎(chǔ)環(huán)境軟件包

wget https://ftp.gnu.org/gnu/gcc/gcc-9.1.0/gcc-9.1.0.tar.gz
wget https://download.open-mpi.org/release/open-mpi/v3.1/openmpi-3.1.4.tar.gz
wget https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.10/hdf5-1.10.5/src/hdf5-1.10.5.tar.gz
wget ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-c-4.7.0.tar.gz
wget ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-fortran-4.4.5.tar.gz

3)依次執(zhí)行如下命令升級安裝最新版gcc編譯器(當前為gcc v9.1.0)

tar-zxvf gcc-9.1.0.tar.gz
cd gcc-9.1.0
./contrib/download_prerequisites
./configure--prefix=/usr/local/gcc/9.1.0
make-j 4
make install
cd-

4)依次執(zhí)行如下命令安裝并行庫OpenMPI(v3.1.4)

export GCC_HOME=/usr/local/gcc/9.1.0/
export PATH=$GCC_HOME/bin:$PATH
export LD_LIBRARY_PATH=$GCC_HOME/lib:$GCC_HOME/lib64:$LD_LIBRARY_PATH
export INCLUDE=$GCC_HOME/include:$INCLUDE
tar-zxvf openmpi-3.1.4.tar.gz
cd openmpi-3.1.4
./configure--prefix=/usr/local/openmpi3--enable-orterun-prefix-by-default
make-j 4
make install
cd-

5)依次執(zhí)行如下命令安裝數(shù)據(jù)格式庫HDF5(v1.10.5)

export MPI_HOME=/usr/local/openmpi3
export PATH=$MPI_HOME/bin:$PATH
export LD_LIBRARY_PATH=$MPI_HOME/lib:$LD_LIBRARY_PATH
export INCLUDE=$MPI_HOME/include:$INCLUDE
cd hdf5
./configure--prefix=/usr/local//hdf5--enable-fortran--enable-parallel CC=mpicc FC=mpif90 CXX=mpicxx
make-j 4
make install
cd-

6)依次執(zhí)行如下命令安裝數(shù)據(jù)格式庫NetCDF(v4.x.x)

export HDF5=/usr/local/hdf5
export PATH=$HDF5/bin:$PATH
export LD_LIBRARY_PATH=$HDF5/lib:$LD_LIBRARY_PATH
export INCLUDE=$HDF5/include:$INCLUDE
tar-zxvf netcdf-c-4.7.0.tar.gz
cd netcdf-c-4.7.0
./configure--prefix=/usr/local/netcdf LDFLAGS="-L$HDF5/lib"CPPFLAGS="-I$HDF5/include"CC=mpicc--disable-dap
make-j 4
make install
cd-
export NETCDF=/usr/local/netcdf
export PATH=$NETCDF/bin:$PATH
export LD_LIBRARY_PATH=$NETCDF/lib:$LD_LIBRARY_PATH
export INCLUDE=$NETCDF/include:$INCLUDE
tar-zxvf netcdf-fortran-4.4.5.tar.gz
cd netcdf-fortran-4.4.5
./configure--prefix=/usr/local/netcdf CPPFLAGS="-I$HDF5/include-I$NETCDF/include"LDFLAGS="-L$HDF5/lib-L$NETCDF/lib"CC=mpicc FC=mpif90 F77=mpif90
make-j 4
make install
cd-

3.安裝環(huán)境準備

1)依次使用如下命令,創(chuàng)建安裝目錄,拷貝下載的源碼至安裝目錄

mkdir-p/usr/local/cmaq
cp-r CMAQ-5.2/usr/local/cmaq
cp-r ioapi-3.2/usr/local/cmaq

1)依次使用如下命令,創(chuàng)建依賴組件環(huán)境變量加載腳本

vim/usr/local/cmaq/env-cmaq.sh

依次輸入如下行:

export GCC_HOME=/usr/local/gcc/9.1.0/
export PATH=$GCC_HOME/bin:$PATH
export LD_LIBRARY_PATH=$GCC_HOME/lib:$GCC_HOME/lib64:$LD_LIBRARY_PATH
export INCLUDE=$GCC_HOME/include:$INCLUDE
export MPI_HOME=/usr/local/openmpi3
export PATH=$MPI_HOME/bin:$PATH
export LD_LIBRARY_PATH=$MPI_HOME/lib:$LD_LIBRARY_PATH
export INCLUDE=$MPI_HOME/include:$INCLUDE
export HDF5=/usr/local/hdf5
export PATH=$HDF5/bin:$PATH
export LD_LIBRARY_PATH=$HDF5/lib:$LD_LIBRARY_PATH
export INCLUDE=$HDF5/include:$INCLUDE
export NETCDF=/usr/local/netcdf
export PATH=$NETCDF/bin:$PATH
export LD_LIBRARY_PATH=$NETCDF/lib:$LD_LIBRARY_PATH
export INCLUDE=$NETCDF/include:$INCLUDE

保存并退出vim。

2)使用如下命令,加載環(huán)境變量

source/usr/local/cmaq/env-cmaq.sh

4.依賴庫安裝

1)依次使用如下命令,進入依賴庫安裝目錄,并復制相關(guān)配置文件

cd/usr/local/cmaq/ioapi-3.2
cp ioapi/Makeinclude.Linux2_ia64gfort ioapi/Makeinclude.Linux4_aarch64

2)使用如下命令,編輯上述復制的配置文件

vim ioapi/Makeinclude.Linux4_aarch64

注釋FSFLAGS關(guān)鍵字對應的行,如:

#FSFLAGS=-save#gfortran不識別-save參數(shù),此參數(shù)用于保存子程序每次運行時的變量值。

保存并退出vim。

3)依次使用如下命令,復制并編輯配置文件

cp m3tools/Makefile.nocpl m3tools/Makefile
vim m3tools/Makefile

為LIBS變量完善NetCDF路徑,如:

LIBS=-L${OBJDIR}-lioapi-L/usr/local/netcdf/lib-lnetcdff-lnetcdf$(OMPLIBS)$(ARCHLIB)$(ARCHLIBS)

保存并退出vim。

4)依次使用如下命令,復制并編輯配置文件

rm-f Makefile
cp Makefile.template Makefile
vim Makefile

修改BIN變量值,與上文一致,如:

BIN=Linux4_aarch64

修改NCFLIBS環(huán)境變量,完善HDF5和NetCDF路徑,如:

NCFLIBS=-L/usr/local/netcdf/lib-lnetcdff-lnetcdf-L/usr/local/hdf5/lib-lhdf5_hl-lhdf5-lz

去除IOAPIDEFS的注釋,并確認其值,如:

IOAPIDEFS="-DIOAPI_NCF4"

保存并退出vim。

5)使用如下命令,執(zhí)行依賴庫編譯

make BIN=Linux4_aarch64

5.主程序安裝

1)依次使用如下命令,進入主程序源碼目錄,并編輯配置文件

cd/usr/local/cmaq/CMAQ-5.2
vim bldit_project.csh

變更CMAQ_HOME的值,明確工作目錄,如:

set CMAQ_HOME=/usr/local/cmaq/CMAQ_Project

保存并退出vim。

2)使用如下命令,創(chuàng)建初始化所需文件

./bldit_project.csh

3)依次使用如下命令,進入工作目錄并編輯配置文件

cd../CMAQ_Project/
vim config_cmaq.csh

在“case gcc”段落區(qū)域修改依賴庫等的路徑信息,如:

setenv IOAPI_MOD_DIR/usr/local/cmaq/ioapi-3.2/Linux4_aarch64/
setenv IOAPI_INCL_DIR/usr/local/cmaq/ioapi-3.2/ioapi/
setenv IOAPI_LIB_DIR/usr/local/cmaq/ioapi-3.2/Linux4_aarch64/
setenv NETCDF_LIB_DIR/usr/local/netcdf/lib/
setenv NETCDF_INCL_DIR/usr/local/netcdf/include/
setenv MPI_LIB_DIR/usr/local/openmpi3/

為“netcdf_lib”變量添加openmp屬性,如:

setenv netcdf_lib"-lnetcdf-lnetcdff-lgomp"#>-lnetcdff-lnetcdf for netCDF v4.2.0 and later

保存并退出vim。

4)使用如下命令,鏈接各種依賴庫

./config_cmaq.csh gcc 9.1.0

5)依次使用如下命令,進入編譯目錄,并編譯主程序

cd CCTM/scripts/
./bldit_cctm.csh gcc 9.1.0

編譯完成后,會在BLD_CCTM_v52_gcc9.1.0目錄下生成CMAQ的可執(zhí)行程序

6.測試

1)執(zhí)行如下命令,進入測試目錄并配置運行腳本

cd/usr/local/cmaq/CMAQ_Project/CCTM/scripts
vim run_cctm.csh

修改“compiler變量值”為“gcc”,如:

setenv compiler gcc

新增“compilerVrsn”變量并賦值“9.1.0”,如:

set compilerVrsn=9.1.0

修改“NPCOL”和“NPROW”變量值,其值的乘積與并行核心數(shù)相等,如:

NPCOL=2; NPROW=2

修改OpenMPI運行參數(shù),如:

time mpirun-np$NPROCS--allow-run-as-root$BLD/$EXEC

保存并退出vim。

2)執(zhí)行如下命令,解壓縮注冊下載得到的算例輸入文件至工作目錄

tar-zxvf CMAQv5.2_Benchmark_inputdata.tar.gz.xz-C/usr/local/cmaq/CMAQ_project/data

3)使用如下命令,運行測試腳本

./run_cctm.csh

正確執(zhí)行完成后,計算結(jié)果保存在如下目錄:

/data/cuibotao/cmaq/CMAQ_Project/data/output_CCTM_v52_gcc9.1.0_inputdata

已知問題匯總

問題現(xiàn)象1

運行測試腳本時,報如下錯誤:

問題原因

測試腳本使用cshell,無權(quán)限移除限制。

問題解決

注釋測試腳本中“unlimit”關(guān)鍵字對應行,在shell終端執(zhí)行如下命令后,然后運行測試腳本,如:

ulimit-s unlimited
./run_cctm.csh

問題現(xiàn)象2

編譯主程序出現(xiàn)如下錯誤:

問題原因

數(shù)據(jù)格式錯誤

問題解決

刪除“/usr/local/cmaq/ioapi-3.2/ioapi/STATE3.EXT”文件中末尾若干行的行尾“&”符號,如下圖,刪除紅色框中的“&”符號: