CMAQ-5.3 安装教程

CMAQ(Community Multiscale Air Quality 通用多尺度空气质量)模型,是美国环保局开发的第三代空气质量预报和评估系统(Models-3)的核心组成之一。是一套三维欧拉网格化的大气化学和传输模拟系统,能够模拟整个对流层的臭氧,酸沉降,能见度和细颗粒物。整个模式遵循 “一个大气” 理念,可以同时处理从局地到半球的不同空间尺度的多个复杂的空气质量问题,作为一个有效的第三代空气质量模型与评价工具,其能够支持从策略分析到大气科学研究的各类空气质量模拟应用。

CMAQ-5.3 源文件 https://github.com/USEPA/CMAQ

软件安装在radhat机器上

安装依赖库

这次需要的依赖有 Zlib、HDF5、NetCDF-C、NetCDF-Fortran、ioapi

# 这里只介绍一下HDF5、NetCDF以及ioapi的安装

# 依次下载
$ 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


# 安装HDF5
$ ./configure --prefix=你的安装路径/hdf5 --enable-fortran --enable-fortran2003
$ make -j 48
$ make install

# 添加环境变量
$ vim ~/.bashrc
export HDF5=你的安装路径/hdf5
export PATH=$HDF5/bin:$PATH
export LD_LIBRARY_PATH=$HDF5/lib:$LD_LIBRARY_PATH
export INCLUDE=$HDF5/include:$INCLUDE
# 保存退出后
$ source ~/.bashrc

# 安装NetCDF-C
$ ./configure --prefix=你的安装路径/netcdf LDFLAGS="-L$HDF5/lib" CPPFLAGS="-I$HDF5/include" CC=mpiicc --disable-dap
$ make -j 48
$ make install

# 添加环境变量
export NETCDF=/usr/local/netcdf
export PATH=$NETCDF/bin:$PATH
export LD_LIBRARY_PATH=$NETCDF/lib:$LD_LIBRARY_PATH
export INCLUDE=$NETCDF/include:$INCLUDE
# 保存后退出
$ source ~/.bashrc

# 安装NetCDF-Fortran
$ ./configure --prefix=你的安装路径/netcdf CPPFLAGS="-I$HDF5/include -I$NETCDF/include" LDFLAGS="-L$HDF5/lib -L$NETCDF/lib" CC=mpiicc FC=mpiif90 F77=mpiif90 # 与NetCDF-C安装在同一目录下
$ make -j 48
$ make install

ioapi-3.2的安装过程比较复杂,单独讲解

# 进入ioapi-3.2的安装目录

$ cp ioapi/Makeinclude.Linux2_x86_64ifort ioapi/Makeinclude.Linux2
$ cp ioapi/Makefile.nocpl ioapi/Makefile

$ vim ioapi/Makefile.nocpl.sed
# 修改 BASEDIR、INSTALL 的路径为当前目录
BASEDIR    = /path/to/ioapi-3.2
INSTALL    = /path/to/你最终的安装路径
# 保存并退出 vim

$ cp m3tools/Makefile.nocpl m3tools/Makefile

$ vim m3tools/Makefile.nocpl.sed
# 为 LIBS 变量完善 NetCDF 路径,如:
LIBS = -L${OBJDIR} -lioapi -L/你的安装路径/netcdf/lib -lnetcdff -lnetcdf $(OMPLIBS) $(ARCHLIB) $(ARCHLIBS)

# 修改 BASEDIR 的路径为当前目录
BASEDIR =  /path/to/ioapi-3.2
# 保存并退出 vim。

$ cp Makefile.template Makefile
$ vim Makefile
# 修改BIN=Linux2
# 修改 NCFLIBS 环境变量,完善 HDF5 和 NetCDF 路径,如:
NCFLIBS = -L/path/to/netcdf/lib -lnetcdff -lnetcdf -L/path/to/hdf5/lib -lhdf5_hl -lhdf5 -L/path/to/zlib/lib -lz

# 去除 IOAPIDEFS 的注释,并确认其值,如:
IOAPIDEFS = "-DIOAPI_NCF4"

# 修改 BASEDIR、INSTALL 的路径为当前目录
BASEDIR = /path/to//ioapi-3.2
INSTALL = /path/to//你的安装路
# 保存并退出 vim

$ make BIN=Linux2

总结一下一共3步

1.修改ioapi目录下的Makefile.nocpl.sed和Makeinclude文件

2.修改m3tools下的Makefile.nocpl.sed

3.修改当前目录(ioapi-3.2)下的Makefile

ps:安装成功后在当前目录(ioapi-3.2)的Linux2目录下会有很多可执行文件

安装 CMAQ-5.3
$ cd /你的安装路径/CMAQ-5.3
$ vim bldit_project.csh
# 变更 CMAQ_HOME 的值,明确工作目录,如:
set CMAQ_HOME = /你的安装路径/CMAQ_install
# 保存并退出vim

# 初始化文件
$ ./bldit_project.csh
$ cd /你的安装路径/CMAQ_Project
$ vim config_cmaq.csh
# 在 case intel 区域修改依赖库的路径:
setenv IOAPI_INCL_DIR   /你的安装路径/ioapi-3.2/ioapi    #> I/O API include header files
setenv IOAPI_LIB_DIR    /你的安装路径/ioapi-3.2/Linux2    #> I/O API libraries
setenv NETCDF_LIB_DIR   /你的安装路径/netcdf/lib   #> netCDF C directory path
setenv NETCDF_INCL_DIR  /你的安装路径/netcdf/include   #> netCDF C directory path
setenv NETCDFF_LIB_DIR  /你的安装路径/netcdf/lib  #> netCDF Fortran directory path
setenv NETCDFF_INCL_DIR /你的安装路径/netcdf/include  #> netCDF Fortran directory path
setenv MPI_LIB_DIR      /你的 mpi 编译器路径/      #> MPI directory path

setenv myLINK_FLAG "-openmp" #"-qopenmp-simd" openMP not supported w/ CMAQ
# 保存并退出 vim

$ ./config_cmaq.csh intel
$ cd CCTM/scripts/
$ ./bldit_cctm.csh intel

# 编译完成会在 BLD_CCTM_v53_intel 文件夹下生成 CCTM_v53.exe 可执行文件
# 依次在 CMAQ_Project 文件夹的 POST、PREP 文件夹中的各个文件夹内执行
$ ./bldit_cctm.csh intel
# 即可完成各个可执行程序的编

编译主程序出现如下错误:

编译错误
问题原因:
数据格式错误

问题解决:
删除 “/你的安装路径/ioapi-3.2/ioapi/STATE3.EXT” 文件中末尾若干行的行尾 “&” 符号,如下图,删除红色框中的 “&” 符号:
解决办法
至此,CMAQ-5.3 编译完成

FAQs

Q1: 使用 netcdf-c 4.7.4 和 netcdf-fortran 4.5.3 编译 ioapi 3.2 时候,出现没有 nfmpi xxxx 函数
A1:编译一份 pnetcdf 1.15 再修改 ioapi 中 netcdf 链接的部分,添加 -lpnetcdf 后重新编译

  • 5
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 22
    评论
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

MrXun_

谢谢老板的支持!!

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

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

打赏作者

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

抵扣说明:

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

余额充值