编译和安装

操作步骤

  1. 使用PuTTY工具,以root用户登录服务器。
  2. 执行以下命令进入CMAQ安装目录。

    mkdir -p /path/to/CMAQ

  3. 执行以下命令解压并重命名IOAPI。

    tar -xvf ioapi-3.2-2020111.tar.gz
    mv ioapi-3.2-2020111 ioapi-3.2

  4. 执行以下命令复制配置文件。

    cd ioapi-3.2
    cp ioapi/Makeinclude.Linux2_ia64gfort ioapi/Makeinclude.Linux4_aarch64

  5. 执行以下命令修改“Makeinclude.Linux4_aarch64”配置文件。

    1. 打开“Makeinclude.Linux4_aarch64”配置文件。
      vi ioapi/Makeinclude.Linux4_aarch64
    2. 按“i”进入编辑模式。

      修改编译器选项。

      CC = mpicc
      CXX = mpicxx
      FC = mpifort

      注释掉一些关键字对应的参数,如下图所示。

    3. 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。

  6. 执行以下命令复制Makefile及配置HOME。

    cp ioapi/Makefile.nocpl ioapi/Makefile
    export HOME=/path/to/CMAQ

  7. 执行以下命令复制配置文件。

    cp m3tools/Makefile.nocpl m3tools/Makefile

  8. 执行以下命令修改“Makefile”配置文件。

    1. 打开“Makefile”配置文件。
      vi m3tools/Makefile
    2. 按“i”进入编辑模式,修改如下内容。
      LIBS = -L${OBJDIR} -lioapi -L/path/to/NETCDF/lib -lnetcdff -lnetcdf -L/path/to /HDF5/lib -lhdf5_hl -lhdf5 -lz $(OMPLIBS) $(ARCHLIB) $(ARCHLIBS)
    3. 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。

  9. 执行以下命令复制配置文件。

    cp Makefile.template Makefile

  10. 执行以下命令修改“Makefile”配置文件。

    1. 打开“Makefile”配置文件。
      vi Makefile
    2. 按“i”进入编辑模式。

      修改如下内容并取消注释。

      BIN = Linux4_aarch64
      BASEDIR = ${PWD}
      INSTALL = ${HOME}
      LIBINST = $(INSTALL)/$(BIN)
      BININST = $(INSTALL)/$(BIN)
      CPLMODE = nocpl
      IOAPIDEFS = "-DIOAPI_NCF4"

      分别在第146和193行修改NCFLIBS参数项。

      NCFLIBS = -L/path/to/NETCDF/lib -lnetcdff -lnetcdf -L/path/to/HDF5/lib -lhdf5_hl -lhdf5 -lz

      执行10.a之后,按“Esc”键,输入“:set nu”,按“Enter”即可显示出行号。

    3. 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。

  11. 执行以下命令编译IOAPI。

    make BIN=Linux4_aarch64

  12. 执行以下命令修改“STATE3.EXT”文件。

    1. 打开“STATE3.EXT”文件。
      vi ioapi/STATE3.EXT
    2. 按“i”进入编辑模式,删除STATE3.EXT文件中末尾若干行的行尾“&”符号,如下图所示。

    3. 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。

  13. 执行以下命令进入cshell环境及配置HOME。

    csh
    setenv HOME /path/to/CMAQ

  14. 执行以下命令在csh环境加入环境变量。

    setenv PATH /path/to/Bisheng131/bin:$PATH
    setenv INCLUDE /path/to/Bisheng131/include
    setenv LD_LIBRARY_PATH /path/to/Bisheng131/lib
    setenv PATH /path/to/HMPI_1.0.2_aarch64/source/hmpi/bin:$PATH
    setenv INCLUDE /path/to/HMPI_1.0.2_aarch64/source/hmpi/include:$INCLUDE
    setenv LD_LIBRARY_PATH /path/to/HMPI_1.0.2_aarch64/source/hmpi/lib:$LD_LIBRARY_PATH

  15. 执行以下命令解压CMAQ安装包并进入解压后目录。

    cd /path/to/CMAQ
    tar -xzvf CMAQ-CMAQv5.3.1_19Dec2019.tar.gz
    cd CMAQ-CMAQv5.3.1_19Dec2019

  16. 执行以下命令修改“bldit_project.csh”配置文件。

    1. 打开“bldit_project.csh”配置文件。
      vi bldit_project.csh
    2. 按“i”进入编辑模式,修改如下内容。
      set CMAQ_HOME = /path/to/CMAQ/CMAQ_Project
    3. 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。

  17. 执行以下命令创建初始化所需文件。

    ./bldit_project.csh

  18. 执行以下命令进入工作目录。

    cd ../CMAQ_Project/

  19. 执行以下命令修改“config_cmaq.csh”配置文件。

    1. 打开“config_cmaq.csh”配置文件。
      vi config_cmaq.csh
    2. 按“i”进入编辑模式。

      在“case gcc”段落区域修改相关信息,并将“case gcc”修改为“case bisheng”。

      setenv IOAPI_INCL_DIR /path/to/CMAQ/ioapi-3.2/ioapi/
      setenv IOAPI_LIB_DIR /path/to/CMAQ/ioapi-3.2/Linux4_aarch64/
      setenv NETCDF_LIB_DIR /path/to/NETCDF/lib/
      setenv NETCDF_INCL_DIR /path/to/NETCDF/include/
      setenv MPI_LIB_DIR /path/to/HMPI/
      setenv NETCDFF_LIB_DIR /path/to/NETCDF/lib/
      setenv NETCDFF_INCL_DIR /path/to/NETCDF/include/

      修改编译器相关参数,如下图所示(编译过程可能出现“warning”,但不影响最后编译,也可根据“warning”去掉对应的参数)。

      注释如下内容。

      #if ( ! -e $NETCDFF_DIR/lib/libnetcdff.a ) then
      #    echo "ERROR: $NETCDFF_DIR/lib/libnetcdff.a does not exist in your CMAQ_LIB directory!!! Check your installation before proceeding with CMAQ build."
      #    exit
      # endif
    3. 按“Esc”键,输入:wq!,按“Enter”保存并退出编辑。

  20. 执行以下命令链接各种依赖库。

    ./config_cmaq.csh bisheng 1.3.1

  21. 执行以下命令进入编译目录并编译主程序。

    cd CCTM/scripts/
    cp /path/to/HMPI/include/mpif.h /path/to/CMAQ/CMAQ_Project/CCTM/scripts/BLD_CCTM_v531_bisheng1.3.1
    ./bldit_cctm.csh bisheng 1.3.1

    编译完成后,将在“BLD_CCTM_v531_bisheng1.3.1”目录下生成CMAQ的可执行程序“CCTM_v531.exe”。