Linux并行计算集群安装测试气象环境学模拟软件CMAQ

目录

一、软件简介

 二、软件安装

2.1 安装前要求

2.1.1C/Fortran编译器

2.1.2 MPI并行环境

2.2 安装步骤

2.2.1安装netcdf库

2.2.2 安装ioapi库

2.3 安装CMAQ

 三、软件测试


一、软件简介

CMAQ(Community Multi-scale Air Quality Modeling System)模型基于“一个大气”的理念,系统的考虑大气中所有物理过程和化学过程以及它们之间的相互影响,能够同时模拟多种污染物和污染问题,包括臭氧、细颗粒物、光化学反应、酸沉降和能见度等。此外,CMAQ模型能够采用多层嵌套网格(外层采用分辨率较大粗网格,内层采用分辨率较小的细网格),在保证计算机性能的基础上提高模拟的准确性。

CMAQ模型是第三代空气质量模拟系统(Models-3/CMAQ)的核心,主要分为四大模块:1)气象-化学接口(MCIP,Meteorology-Chemistry Interface Processor),将WRF的输出气象场转化成CCTM所需要的数据格式;2)初始条件(ICON,Initial Conditions Processor),为模拟提供初始浓度场;3)边界条件 (BCON,Boundary Conditions Processor),为模拟提供边界浓度场;4)化学传输(CCTM,CMAQ Chemistry-Transport Model),是CMAQ的核心,其实质是一个大气化学和运输数学模型。在整个流程中,WRF提供气象条件,SMOKE提供污染物清单,CMAQ综合考虑排放、化学反应、云和降水的吸收以及干沉积等过程,负责模拟污染物浓度。

98ad33234f2e400fbb4fd37d2717e676.png

CMAQ模型基于三维欧拉方法,其化学传输模块(CCTM)采用基于梯度输送理论建立的污染物浓度控制方程,具体的表达式如下:

66fd667cdcd0c2c1e39f17315d8c6ea6.png

式中每一项分别对应着化学机制中不同的物理化学过程:(a)大气污染物浓度变化;(b)水平对流传输;(c)垂直对流传输;(d)水平扩散传输;(e)垂直扩散传输;(f)气象化学;(g)污染源一次排放;(h)云雾和液相化学;(i)烟雨抬升;(j)气溶胶化学。

 二、软件安装

本文档以最新的CMAQv5.3.0版本为例,介绍模型依赖库和各个组成部分的安装方法。

2.1 安装前要求

2.1.1C/Fortran编译器

要求安装C/Fortran编译器,建议使用Intel编译器,为达到最优性能,建议使用跟处理器型号匹配的较新版本编译器,并且编译过程中始终使用同一类型编译器。本文档以Intel编译器为例。编译器最低版本要求:Intel 17.0 | GNU 6.1.0 | PGI 17.4

2.1.2 MPI并行环境

要求安装MPI并行环境,推荐使用Intel MPI。本文档以Intel MPI为例。MPI最低版本要求:IntelMPI 2017.0 | MPICH 3.3.1 | MVAPICH2 2.3.1 | OpenMPI 2.1.0

2.2 安装步骤

2.2.1安装netcdf库

在安装netcdf时,需要安装经典动态的netcdf c和fortran库(classic shared netCDF C and Fortran libraries),不需要支持netCDF4、 HDF5、 HDF4、 DAP client、 PnetCDF和 zlib。由于集群环境在安装netcdf时,默认会支持netCDF4和HDF5,因此建议重新安装netcdf。

netcdf的最小版本要求:NetCDF-C 4.2 | NetCDF-Fortran 4.4.2,本次安装均采用netcdf-c-4.7.0和netcdf-fortran-4.5.0。

2.2.1.1netcdf-c 安装

安装时需要添加--disable-netcdf-4和--disable-dap

tar -zxvf v4.7.0.tar.gz

cd netcdf-c-4.7.0

CC=icc CXX=icpc FC=ifort F77=ifort  ./configure --prefix= /public /software/mathlib/netcdf/4.7.0/intel  --disable-netcdf-4 --disable-dap

make

make check install

2.2.1.2 netcdf-fortran 安装

安装时需要指定netcdf-c的路径。

export LD_LIBRARY_PATH=/public/software/mathlib/netcdf/4.7.0 /intel/lib:$LD_LIBRARY_PATH

export LDFLAGS=-L/public/software/mathlib/netcdf/4.7.0/intel/lib

export CPPFLAGS=-I/public/software/mathlib/netcdf/4.7.0/intel/ include

CC=icc CXX=icpc FC=ifort F77=ifort ./configure --prefix=/public/software/mathlib/netcdf/4.7.0/intel

make

make check install

2.2.2 安装ioapi库

I/O API 提供netcdf库和CMAQ之间的接口,使CMAQ模型能够输入和输出结果。ioapi的最小版本要求:IOAPI 3.1。由于IOAPI 3.1存在一些bug,以及3.2版本安装更方便,本次安装ioapi-3.2版本。ioapi还有一个large版本(ioapi-3.2-large.tar.gz),large版本支持大量的输出文件和输出变量,将MXFILE3变量从64 扩展到 512,将MXVARS3变量从2048 扩展到16384。本文档只介绍ioapi-3.2版本的安装方法。

下载地址:https://www.cmascenter.org/ioapi/download/ioapi-3.2.tar.gz

large下载地址:https://www.cmascenter.org/ioapi/download/ioapi-3.2-large.tar.gz

解压文件进行主目录:

unzip ioapi-3.2-master.zip

cd ioapi-3.2-master
修改Makefile文件:(修改的地方已经标红)

BIN        = Linux2_x86_64ifort

BASEDIR    = ${PWD}

INSTALL    = ${BASEDIR}

LIBINST    = $(INSTALL)/$(BIN)

BININST    = $(INSTALL)/$(BIN)

CPLMODE    = nocpl

IOAPIDEFS  =

PVMINCL    =

NCFLIBS    = -L/public/software/mathlib/netcdf/4.7.0/intel/lib -lnetcdff -lnetcdf

进入ioapi目录,修改Makeinclude.Linux2_x86_64ifort文件:CMAQ不支持openmp,需要注释OMP选项。

#OMPFLAGS  = -openmp

#OMPLIBS   = -openmp

退出ioapi目录,进入主目录ioapi-3.2-master。

export BIN=Linux2_x86_64ifort

make configure

make

编译完成后,在Linux2_x86_64ifort目录下会生成libioapi.a库文件。

进入ioapi目录,修改STATE3.EXT文件,去掉174行之后多余的&符号,否则编译CMAQ会报错。(只保留每行前面的&,去掉最后的&)

COMMON  / BSTATE3 /

&          P_ALP3, P_BET3, P_GAM3,

&          XCENT3, YCENT3, XORIG3, YORIG3, XCELL3, YCELL3,

&          VGTYP3, VGTOP3, VGLVS3,

&          FINIT3, COUNT3, CURDATE, CURTIME, LOGDEV,

&          CDFID3, FTYPE3, SDATE3, STIME3, TSTEP3, MXREC3,

&          NVARS3, NLAYS3, NROWS3, NCOLS3, NTHIK3,

&          TINDX3, NINDX3, SINDX3, LINDX3, WCNDX3, WRNDX3,

&          XINDX3, YINDX3, ZINDX3, DXNDX3, DYNDX3, VINDX3,

&          GDTYP3, VOLAT3, RONLY3,

&          BSIZE3, LDATE3, LTIME3, NDATE3, NTIME3, ILAST3,

&          VTYPE3,

&          ILCNT3, NLIST3, IFRST3, ILIST3, BEGRC3, ENDRC3,

&          STDOUT, PN_MODE

 

!!  character portion of current I/O API state

 

COMMON  / CSTATE3 /

&          EXECN3, SCNDSC, FLIST3, GDNAM3, VLIST3, UNITS3, VERSN3

2.3 安装CMAQ

CMAQ源码下载地址:https://github.com/USEPA/CMAQ

CMAQ安装和海洋模式类似,需要新建一个算例,然后编译。

unzip 5.3.zip

cd CMAQ-5.3

编译bldit_project.csh,指定新建算例位置。修改完成后,执行bldit_project.csh即可。

set CMAQ_HOME = /public1/home/cmaq/CMAQv5.3

进入新建算例目录CMAQv5.3,修改config_cmaq.csh文件,指定IOAPI、NETCDF、MPI环境,MPI_LIB_DIR需要指定MPI的路径,不是MPI的lib路径。本次编译采用intel+intelmpi。具体修改如下:

setenv IOAPI_INCL_DIR /public1/home/cmaq/ioapi-3.2-master/ioapi

setenv IOAPI_LIB_DIR    /public1/home/cmaq/ioapi-3.2-master/Linux2_x86_64ifort

setenv NETCDF_LIB_DIR   /public1/home/cmaq/netcdf/4.7.0/lib

setenv NETCDF_INCL_DIR  /public1/home/cmaq/netcdf/4.7.0/include

setenv NETCDFF_LIB_DIR  /public1/home/cmaq/netcdf/4.7.0/lib

setenv NETCDFF_INCL_DIR /public1/home/cmaq/netcdf/4.7.0/include

setenv MPI_LIB_DIR      /public/software/mpi/intelmpi/2017.4.239/intel64

修改完成后,执行./config_cmaq.csh intel,在当前目录会新建lib目录,将上述环境整合到当前目录。

./config_cmaq.csh intel

CMAQ模式主要包含4个模块,分别是前处理mcip、icon、bcon和核心模块cctm。依次编译上述模块。

编译mcip,进入PREP/mcip/src,修改Makefile文件,指定NETCDF和IOAPI路径,修改LIBS路径。修改完成后,执行make,会生成mcip.exe。

FC      = ifort

NETCDF = /public1/home/cmaq/netcdf/4.7.0

IOAPI_ROOT = /public1/home/cmaq /ioapi-3.2-master

###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)/Linux2_x86_64ifort

LIBS    = -L$(IOAPI_ROOT)/Linux2_x86_64ifort -lioapi \

-L$(NETCDF)/lib -lnetcdff -lnetcdf

编译icon,进入PREP/icon,执行./bldit_icon.csh intel,会生成ICON_v53.exe。

./bldit_icon.csh intel

 编译icon,进入PREP/bcon,执行./bldit_bcon.csh intel,会生成BCON_v53.exe

./bldit_bcon.csh intel

 编译cctm,进入CCTM/scripts,执行./bldit_cctm.csh intel,会生成CCTM_v53.exe。

./bldit_cctm.csh intel

 三、软件测试

安装完成后,采用CMAQ自带的benchmark数据进行测试。

benchmark数据下载地址:ftp://newftp.epa.gov/exposure/CMAQ/V5_3/Benchmark/

算例描述:

版本:CMAQv5.3.0 + WRF3.8

区域:Southeast U.S.

网格数:80*100

分辨率:12km

垂直层数:35

排放清单:2016ff

化学机制:CB6R3_AE7

干沉降:M3DRY

运行步骤:

下载CMAQv5.3_Benchmark_2Day_Input_20190808.tar.gz数据,解压文件到指定目录。

tar –zxvf CMAQv5.3_Benchmark_2Day_Input_20190808.tar.gz

进入CCTM/scripts目录,修改run_cctm_Bench_2016_12SE1.csh脚本,指定输入数据存放路径、核心数。本次采用6*4=24核心。

… …

setenv INPDIR  /public1/home/cmaq/CMAQv5.3/data/2016_12SE1

… …

@ NPCOL  =  6; @ NPROW =  4

… …

修改完之后,直接执行脚本即可。

./run_cctm_Bench_2016_12SE1.csh

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

技术瘾君子1573

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值