CentOS 7安装WRF,SMOKE,CMAQ

简介

SMOKE 是排放清单数据前处理模型,主要为空气质量型提供源前处理。WRF 是集数值天气预报、大气模拟、数据同化于一体的模型系统,主要用于大气环境模拟、 天气研究、 气象预报等, 并为空气质量模型(CMAQ、 CALPUFF、AERMOD、ADMS 等)提供气象场。CMAQ 模型是第三代空气质量模型系统,主要用于环境规划、环境保护标准、环境影响评价、环境监测与预报预警、环境质量变化趋势、总量控制、排污许可、环境功能区划、环境应急预案、来源解析、 “三线一单”等有关政策的制定和编制。
WRF, CMAQ, SMOKE之间的关系:
温度,风,云形成和降水率等天气条件是影响大气交通的主要物理驱动力,这些条件在空气质量模型模拟中使用区域尺度数值气象模型如WRF的输出表示,为了获取排放物的输入数据,CMAQ依靠开源模型SMOKE来估算污染源的大小和位置。另一个开源系统FEST-C用于运行EPIC模型,以生成CMAQ双向NH3建模所需的农业土地氮和土壤信息。

WRF

1. 系统环境检测

系统:CentOS Linux
shell:tcsh
依赖库:netCDF, MPICH, Jasper, Libpng, Zlib
编译器:gfortran,gcc,cpp
使用的脚本语言:csh,perl,sh(此处使用csh搭建)
!把所有的环境变量设置在~/.cshrc文件下,再使用source ~/.cshrc更新(在普通用户身份下),这样下次就不必再设置环境变量

1.1. 安装gcc, cpp, gfortran编译器及工具

首先获取root权限,否则会报错
在这里插入图片描述
输入命令yum install gcc

报错/(ㄒoㄒ)/~~
在这里插入图片描述
一通操作烂如翔
在这里插入图片描述
输入[root@centos7 /]# yum -y install make gcc gcc-c++
emmmm继续报错。。。

Cannot find a valid baseurl for repo: base/7/x86_64

原因是没有连接到网线,大佬的解决方法:CentOS 7运行yum出错:Cannot find a valid baseurl for repo: base/7/x86_64,总结起来就是

cd /etc/sysconfig/network-scripts 
ls -a 
vi ifcfg-ens33
# 修改ONBOOT=no 为 ONBOOT=yes 
ONBOOT=yes

保存退出
重启网络service network restart
重新输入指令yum install gcc
Complete!

按照大佬教程又安装了下面的工具:

yum install gcc
yum install cpp gcc-c++
yum install gcc-gfortran
yum install unzip time nfs-utils perl tcsh wget m4		#解压工具
yum install mlocate		#搜索文件
yum install libX11-devel
yum install libXext-devel
yum install libXrender-devel
yum install fontconfig-devel

使用Xshell 7连接VMware的Linux虚拟机

因官网教程要求下载使用测试文件Fortran and C Tests Tar File(Fortran_C_tests.tar),因此需要实现将Windows上下载的文件传输到Linux中,故使用Xshell 7连接VMware的Linux虚拟机实现文件传输
Centos 虚拟机连接xshell,windows传文件到虚拟机教程
出现错误:/usr/bin/xauth: file /root/.Xauthority does not exist
解决:只需退出再次登录即可,系统会自动创建(参考文章
如何使用Xshell连接VMware上的Linux虚拟机

测试编译器及需要的脚本语言是否正确安装

在./home/xqm下创建文件夹Build_WRF 存放WRF的安装源码包,及TESTS测试编译器及脚本语言是否正确安装,
将(Fortran_C_tests.tar)测试文件放于TESTS文件夹下并使用tar -xf Fortran_C_tests.tar命令解压
接下来使用Fortran_C_tests.tar测试编译器及需要的脚本语言csh,perl,sh是否正确安装:

#Test #1: Fixed Format Fortran Test: TEST_1_fortran_only_fixed.f
gfortran TEST_1_fortran_only_fixed.f
./a.out
# 期望输出:
# SUCCESS test 1 fortran only fixed format

# Test #2: Free Format Fortran: TEST_2_fortran_only_free.f90
gfortran TEST_2_fortran_only_free.f90
./a.out
# 期望输出:
# Assume Fortran 2003: has FLUSH, ALLOCATABLE, derived type, and ISO C Binding
# SUCCESS test 2 fortran only free format

# Test #3: C: TEST_3_c_only.c
gcc TEST_3_c_only.c
./a.out
# 期望输出:
# SUCCESS test 3 c only

# Test #4: Fortran Calling a C Function (our gcc and gfortran have different defaults, so we force both to always use 64 bit [-m64] when combining them): TEST_4_fortran+c_c.c, and TEST_4_fortran+x_f.f90
gcc -c -m64 TEST_4_fortran+c_c.c
gfortran -c -m64 TEST_4_fortran+c_f.f90
gfortran -m64 TEST_4_fortran+c_f.o TEST_4_fortran+c_c.o
./a.out
# 期望输出:
# C function called by Fortran
# Values are xx = 2.00 and ii = 1
# SUCCESS test 4 fortran calling c

# Test #5:csh In the command line
./TEST_csh.csh
# 期望输出:SUCCESS csh test

# Test #6:perl In the command line
./TEST_perl.pl
# 期望输出:SUCCESS perl test

# Test #7:sh In the command line
./TEST_sh.sh
# 期望输出:SUCCESS sh test

测试全部通过!

1.2. 库安装

mpich:信息传递接口,是用于跨节点通讯的基础软件环境,并行构建WRF所必需
netcdf:网络通用数据格式,一种面向数组型并适于网络共享的数据描述和编码标准
Jasper:编译具有GRIB2功能的WPS(特别是Unrib)所必需的压缩库
libpng:编译具有GRIB2功能的WPS(特别是Unrib)所必需的压缩库
zlib:编译具有GRIB2功能的WPS(特别是Unrib)所必需的压缩库

cd Build_WRF/LIBRARIES,将上述5个库下载并放置在此目录下
注:事先使用chmod 777 LIBRARIES修改文件读写权限

普通用户下,输入vim ~/.cshrc进入编辑模式,添加下列环境变量:

setenv DIR /path_to_directory/Build_WRF/LIBRARIES
setenv CC gcc
setenv CXX g++
setenv FC gfortran
setenv FCFLAGS -m64
setenv F77 gfortran
setenv FFLAGS -m64
setenv JASPERLIB $DIR/grib2/lib
setenv JASPERINC $DIR/grib2/include
setenv LDFLAGS -L$DIR/grib2/lib
setenv CPPFLAGS -I$DIR/grib2/include
1. NetCDF(必需)

依次输入以下指令:

tar xzvf netcdf-4.1.3.tar.gz     #or just .tar if no .gz present
cd netcdf-4.1.3
./configure --prefix=$DIR/netcdf --disable-dap --disable-netcdf-4 --disable-shared
make
make install
# 普通用户下,输入`vim ~/.cshrc`进入编辑模式,添加下列环境变量
setenv PATH $DIR/netcdf/bin:$PATH
setenv NETCDF $DIR/netcdf
cd ..
2. MPICH

依次输入以下指令:

tar xzvf mpich-3.0.4.tar.gz     #or just .tar if no .gz present
cd mpich-3.0.4
./configure --prefix=$DIR/mpich
make
make install
# 普通用户下,输入`vim ~/.cshrc`进入编辑模式,添加下列环境变量
setenv PATH $DIR/mpich/bin:$PATH
cd ..
3. zlib

依次输入以下指令:

tar xzvf zlib-1.2.7.tar.gz     #or just .tar if no .gz present
cd zlib-1.2.7
./configure --prefix=$DIR/grib2
make
make install
cd ..
4. libpng

依次输入以下指令:

tar xzvf libpng-1.2.50.tar.gz     #or just .tar if no .gz present
cd libpng-1.2.50
./configure --prefix=$DIR/grib2
make
make install
cd ..
5. Jasper

依次输入以下指令:

tar xzvf jasper-1.900.1.tar.gz     #or just .tar if no .gz present
cd jasper-1.900.1
./configure --prefix=$DIR/grib2
make
make install
cd ..

1.3. 库兼容性测试

验证NetCDF和MPI库是否能够与将用于构建WPS和WRF的编译器一起使用。

cd TESTS后将Fortran_C_NETCDF_MPI_tests.tar下载并放置于此目录下
输入命令tar -xf Fortran_C_NETCDF_MPI_tests.tar解压文件
下面进行两个测试:

3.1. Test 1: Fortran + C + NetCDF
仅NetCDF的测试要求NETCDF软件包中的include文件在此目录中。
复制文件cp ${NETCDF}/include/netcdf.inc .
输入以下指令:

gfortran -c 01_fortran+c+netcdf_f.f
gcc -c 01_fortran+c+netcdf_c.c
gfortran 01_fortran+c+netcdf_f.o 01_fortran+c+netcdf_c.o \
     -L${NETCDF}/lib -lnetcdff -lnetcdf
./a.out

期望输出:

C function called by Fortran
Values are xx = 2.00 and ii = 1
SUCCESS test 1 fortran + c + netcdf

3.2. Test 2: Fortran + C + NetCDF + MPI
NetCDF + MPI测试要求将这两个软件包中的include文件都放在此目录中,但是MPI脚本可自动使mpif.h文件可用,因此无需复制该文件。
复制NetCDF的include文件cp ${NETCDF}/include/netcdf.inc .
输入以下指令:

mpif90 -c 02_fortran+c+netcdf+mpi_f.f
mpicc -c 02_fortran+c+netcdf+mpi_c.c
mpif90 02_fortran+c+netcdf+mpi_f.o \
02_fortran+c+netcdf+mpi_c.o \
     -L${NETCDF}/lib -lnetcdff -lnetcdf
mpirun ./a.out

期望输出:

C function called by Fortran
Values are xx = 2.00 and ii = 1
status = 2
SUCCESS test 2 fortran + c + netcdf + mpi

2. 构建WRF

下载tar包下载链接
在这里插入图片描述
在Build_WRF下解压下载的WRF的tar文件,cd WRF后创建配置文件./configure
在这里插入图片描述
选择第35项,下一项选择默认的1。
配置完成后,编译WRF

./compile em_real >& log.compile

编译过程需要20-30分钟,编译完成后到WRF/main目录下输入指令ls -ls main/*.exe检查是否编译成功
如果编译的是 real case,期望输出为:

wrf.exe (model executable)
real.exe (real data initialization)
ndown.exe (one-way nesting)
tc.exe (for tc bogusing--serial only)

在这里插入图片描述

如果编译的是 idealized case,期望输出为:

wrf.exe (model executable)
ideal.exe (ideal case initialization)

这些可执行文件与以下两个目录相关联

WRF/run
WRF/test/em_real

可以选择从任一目录运行WRF。
至此,WRF构建完成!

3. 构建WPS (运行实际案例所必需)

依次输入指令:

cd /home/username/Build_WRF
tar -xzvf WPSV4.0.TAR.gz
cd WPS
./clean
# setenv JASPERLIB $DIR/grib2/lib
# setenv JASPERINC $DIR/grib2/include
./configure

configure成功后vim configure.wps修改configure.wps

修改一:DM_FC的值只保留mpif90

DM_FC               = mpif90

修改二:WRF_LIB最后一行末尾加上“ -lgomp”(否则后续编译只能生成ungrib.exe一个可执行文件)

WRF_LIB         =       -L$(WRF_DIR)/external/io_grib1 -lio_grib1 \
                        -L$(WRF_DIR)/external/io_grib_share -lio_grib_share \
                        -L$(WRF_DIR)/external/io_int -lwrfio_int \
                        -L$(WRF_DIR)/external/io_netcdf -lwrfio_nf \
                        -L$(NETCDF)/lib -lnetcdff -lnetcdf -lgomp

编译WPS

./compile >& log.compile

编译后到/WPS主目录下ls查看是否存在下面三个可执行文件(或到对应的src目录下查看)

geogrid.exe -> geogrid/src/geogrid.exe
ungrib.exe -> ungrib/src/ungrib.exe
metgrid.exe -> metgrid/src/metgrid.exe

在这里插入图片描述
BINGO!编译成功!

4. 获取静态地理数据/实时数据

静态数据

WRF建模系统能够创建理想的模拟,尽管大多数用户对实际数据案例感兴趣。要启动实际数据案例,必须创建域在地球上的物理位置以及该位置的静态信息。这需要一个数据集,其中包括地形和土地利用类别等字段。 这些数据可从WRF数据集下载页面获得。
下载文件并将其放在Build_WRF目录中。完整的数据集非常大。 若要在群集上共享空间,则需考虑将其放置在中央位置,以便每个人都可以使用它。 解压缩并解压缩tar文件

gunzip geog.tar.gz
tar -xf geog.tar

解压后文件名为“ geog”,mv geog WPS_GEOG将其重命名为“ WPS_GEOG”。
目录信息在 &geogrid 部分的 namelist.wps 文件中

geog_data_path = ´path_to_directory/Build_WRF/WPS_GEOG´

数据将扩展到大约10 GB。该数据允许用户运行geogrid.exe程序。

真实数据

对于实际数据情况,WRF模型需要初始条件和侧向边界条件的最新气象信息。 传统上,此气象数据是Grib文件,由先前运行的外部模型或分析提供。 对于半操作设置,气象数据通常来自全局模型,可在全球任何地方定位WRF模型的域。
国家环境预测中心(NCEP)每天运行四次全局预测系统(GFS)模型(初始化时间为00:00、06:00、12:00、18:00 UTC)。 这是一个全球等压的0.5度经度/纬度预测数据集,可自由使用,通常在初始化时间段后4小时即可访问。
每个请求的时间段都需要获取一个单独的数据文件。
获取数据前,新建目录mkdir DATAcd DATA进入
一组简单的交互式命令可以实时从NCEP服务器中获取这些文件,如下所示:

curl -s --disable-epsv --connect-timeout 30 -m 60 -u anonymous:USER_ID@INSTITUTION -o GFS_00h ftp://ftpprd.ncep.noaa.gov/pub/data/nccf/com/gfs/prod/gfs.20190701/00/gfs.t00z.pgrb2.0p50.f000
curl -s --disable-epsv --connect-timeout 30 -m 60 -u anonymous:USER_ID@INSTITUTION -o GFS_03h ftp://ftpprd.ncep.noaa.gov/pub/data/nccf/com/gfs/prod/gfs.20190701/00/gfs.t00z.pgrb2.0p50.f003
curl -s --disable-epsv --connect-timeout 30 -m 60 -u anonymous:USER_ID@INSTITUTION -o GFS_06h ftp://ftpprd.ncep.noaa.gov/pub/data/nccf/com/gfs/prod/gfs.20190701/00/gfs.t00z.pgrb2.0p50.f006

5. 运行WRF与WPS

5.1. 运行WPS

获得数据后,进入WPS,cd WPS
namelist.wps文件更改,以反映特定运行的信息
在运行geogrid之前,请确保已将geog_data_path设置为放置地理静态数据的位置。 设置好之后,即可运行geogrid:./geogrid.exe >& log.geogrid
成功为每个域创建 geo_em* 文件后,可准备运行ungrib。 首先链接输入的GFS数据

./link_grib.csh path_where_you_placed_GFS_files

然后链接到正确的Vtable(本例中为GFS)

ln -sf ungrib/Variable_Tables/Vtable.GFS Vtable

运行可执行文件

./ungrib.exe

至此,产生了前缀为“ FILE”的文件(或者如果命名为其他名称,也应具有该前缀)
现在运行metgrid

./metgrid.exe >& log.metgrid

现在对于运行的任何时间段的数据,都应该具有前缀met_em *的文件。

5.2. 运行WRF

现在可运行WRF,首先进入WRF目录下,

cd ../WRF/run
# 或
cd ../WRF/test/em_real

在运行“真实”程序之前,需对namelist.input文件进行必要的更改以反应具体情况。完成后,将met_em *文件复制或链接到工作目录中。

ln -sf ../../../WPS/met_em*     
# (from the test/em_real directory), or
ln -sf ../../WPS/met_em*           
# (from the run/ directory).
#如果想复制文件而不是链接,则可使用cp命令而不是ln -sf命令

现在可以运行“真实”程序。运行此程序的命令可能会因系统和可用处理器数目而异,但应类似于:

mpirun -np 1 ./real.exe

检查“rsl”文件的末尾以确保运行成功

tail rsl.error.0000

如果在其中看到“ SUCCESS”,并且看到每个域都存在wrfbdy_d01文件和wrfinput_d0* 文件,则运行成功。
运行WRF,输入类似下述指令:

mpirun -np 8 ./wrf.exe

再次检查“rsl”文件是否为“SUCCESS”,并确保拥有预期的所有wrfout *文件。若无误,则WRF运行成功。

相关教程

⭐WRF官网安装online tutorial
WRF模式入门指南(centos5)
WRF3.8.1 on CentOS7
Installing WRF on CentOS 7
空气质量模型(SMOKE、WRF、CMAQ等)操作指南及案例研究(书)
WRF-3.8.1安装
WRF主程序与WPS的编译与安装(Ubuntu)
官方用户指南v4

CMAQ

1. 系统环境要求及安装

  1. 本系统环境:Centos 7 + csh
  2. Fortran和C编译器(如Intel,PGI,GNU,此处使用GNU编译器)
  3. Git
  4. MPI(如OpenMPI,MVAPICH2)
  5. 最新版本的netCDF-C和netCDF-Fortran (without netCDF4, HDF5, HDF4, DAP client, PnetCDF, or zlib support
  6. I/O API version 3.2 tagged 20200828
    注:需要将gcc升级至6.1.0版本以上(跳转到升级方法

Linux下运行CMAQ Southeast Benchmark的硬件要求(建议):
7. Linux environment with a 16 processors
8. 16 GB RAM
9. 400 GB hard drive storage

1.1. 检查编译器

[xqm@centos7 ~/openmpi-4.1.0]$ which gcc
/usr/bin/gcc
[xqm@centos7 ~/openmpi-4.1.0]$ which gfortran
/usr/bin/gfortran

检查gcc版本:
在这里插入图片描述
可以看到,使用yum install安装的gcc版本为4.8.5,需升级至6.1.0以上

——————2021/2/18————————
主要参考以下文章
CMAQ5.3安装笔记
———————————————————

1.2. 升级gcc版本

centos7升级gcc9.1.0版本
  1. 在/home/xqm目录下下载及解压gcc-9.1.0
  2. 进入/gcc-9.1.0目录
  3. 运行download_prerequisites脚本, ./contrib/download_prerequisites,自动帮你下 载所需要的依赖文件和库
  4. mkdir gcc-build-9.1.0建立输出目录,将所有的中间文件都放到该目录,cd gcc-build-9.1.0进入目录
  5. 执行../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
  6. make命令开始编译(此处编译时间:)
  7. make install安装
  8. gcc -v验证当前版本
  9. 如果依旧显示之前的版本,则需重启
    在这里插入图片描述
    BINGO!🎉

centos7升级gcc9.1.0版本遇到的问题(空间不足)
参考博文:Linux升级gcc到最新版本–gcc-9.1.0

1.3. 安装Git

根据官方文档的要求

# 在超级用户下:
yum install -y git
git --version
# 输出:git version 1.8.3.1

1.4. 安装zlib

方法1:下载链接:zlib-1.2.11.tar.gz

  1. 解压zlib-1.2.11.tar.gz至/home/xqm/CMAQ/LIBRARIES
  2. 配置信息./configure --prefix=/usr/local/netcdf
  3. 编译make, make check, make install

方法2:yum安装

yum install -y zlib zlib-devel

版本为1.2.7,可升级至1.2.11(此处未升级)

centos7将zlib1.2.7升级zlib1.2.11

1.5. 安装hdf5

hdf5-1.10.5下载链接

  1. 解压hdf5-1.10.5.tar.gz至/home/xqm/CMAQ/LIBRARIES
  2. 配置 ./configure --prefix=/usr/local/netcdf --with-zlib=/usr/local/netcdf
  3. 编译make, make check, make install

RPM命令大全

1.6. 安装最新版本的 netCDF-C 和 netCDF-Fortran

注:4.2版本以后分成了 c库 和 fortran库,需要分开编译

下载链接:Downloaded from GitHub

官方文档对netCDF-C和netCDF-Fortran的要求:
Latest release of netCDF-C and netCDF-Fortran built without netCDF4, HDF5, HDF4, DAP client, PnetCDF, or zlib support

官方文档对netCDF-C环境要求:在这里插入图片描述

安装curl

curl版本:7.29.0

yum -y install curl

一定注意csh语法!

  1. netcdf-c安装
tar -zxvf netcdf-c-4.7.4.tar.gz
cd netcdf-c-4.7.4
env CPPFLAGS=-I/usr/local/netcdf/include LDFLAGS=-L/usr/local/netcdf/lib ./configure --prefix=/usr/local/netcdf --disable-dap
make
make check
make install
  1. netcdf-fortran安装
tar -zxvf netcdf-fortran-4.5.3.tar.gz
cd netcdf-fortran-4.5.3
env CPPFLAGS=-I/usr/local/netcdf/include LDFLAGS=-L/usr/local/netcdf/lib ./configure --prefix=/usr/local/netcdf
make
make check
make install
  1. 配置环境变量
    # vim ~/.cshrc添加环境变量
setenv NETCDF /usr/local/netcdf
setenv PATH $NETCDF/bin:$PATH
setenv LD_LIBRARY_PATH $NETCDF/lib:$LD_LIBRARY_PATH
setenv CPPFLAGS '-I/usr/local/netcdf/include'
setenv LDFLAGS '-L/usr/local/netcdf/lib'

source ~/.cshrc生效

  1. 检查安装是否成功,若出现相应信息,则成功
    nf-config --all
    在这里插入图片描述
    nc-config --all
    在这里插入图片描述

参考:CMAQ5.3安装
参考:CMAQ5.0.2编译安装过程

1.7. 安装mpich-3.3.1

(本来安装的openMPI, 最后按照教程还是选择了mpich)

  1. 下载压缩包 mpich-3.3.1下载链接
  2. 编译安装
tar -xf mpich-3.3.1.tar.gz
cd mpich-3.3.1
./configure --prefix=/usr/local/mpich-3.3.1 # mpich后面一定要加版本号,否则后面编译cctm不成功。
make -j 4		# -j 4 是多核编译, 速度快
make -j 4 check
make -j 4 install
  1. 设置 mpich 变量:
vim ~/.cshrc
setenv PATH /usr/local/mpich-3.3.1/bin:${PATH}
setenv LD_LIBRARY_PATH /usr/local/mpich-3.3.1/lib:${LD_LIBRARY_PATH}

if ( ${?MANPATH} ) then
  setenv MANPATH ${MANPATH}:${HOME}/share/man
else
  setenv MANPATH ${HOME}/share/man
endif

setenv MANPATH /usr/local/mpich-3.3.1/share/man:${MANPATH}
  1. 保存退出 source ~/.cshrc生效

1.8. 安装I/O API

(安装过程遇到很多问题,以下是最终解决方案)

安装位置:/usr/local

1. 下载ioapi-3.2

git clone https://github.com/cjcoats/ioapi-3.2

2. 复制Makefile文件

git clone之后的ioapi和m3tools目录下是没有Makefile这个文件的,
所以需要利用这两个目录下面的Makefile.*进行复制一下

cd ioapi
cp Makefile.nocpl Makefile
cd ../m3tools
cp Makefile.nocpl Makefile
cd ../       #切换到ioapi-3.2目录下
cp Makefile.template Makefile

3. 修改配置文件属性

vim Makefile
 BIN        = Linux2_x86_64gfort	#BIN设置跟机器和使用的编译器有关
 BASEDIR    = ${PWD}	#BASEDIR目录就是ioapi-3.2这个目录,也可以设置成绝对路径
 INSTALL    = /home/xqm/CMAQ/LIBRARIES/ioapi	#INSTALL目录就是你要把ioapi安装到的目录
 LIBINST    = $(INSTALL)/$(BIN)	#保持默认不用修改
 BININST    = $(INSTALL)/$(BIN)	#保持默认不用修改
 CPLMODE    = nocpl	#不开PVM,一般新手安装,不开nocpl:
 IOAPIDEFS  =	#保持默认不用修改
 PVMINCL    =	#保持默认不用修改
 NCFLIBS    = -lnetcdff -lnetcdf -lhdf5_hl -lhdf5 -lz

4. 创建BIN目录,并把libnetcdf.a libnetcdff.a复制到BIN目录下

在~/.cshrc中setenv BIN Linux2_x86_64gfort 添加环境变量

# 在ioapi-3.2目录下
setenv BIN Linux2_x86_64gfort
mkdir $BIN
cd $BIN
cp /usr/local/netcdf/lib/lib* ./

5. 回到ioapi-3.2目录并编译

cd ../ioapi-3.2
make configure
make
make install

6. 检查是否成功

 cd ioapi-3.2/Linux2_x86_64gfort
 # 分别输入以下命令,查看是否有相应文件,有则成功
 ls *.mod
 ls libioapi.a

2. 安装CMAQ5.3

官网下载地址:CMAQ5.3.2最新发行版本
下载到了/home/xqm/CMAQ路径

# 解压缩  
unzip CMAQ-CMAQv5.3.2_12Oct2020.zip
# 文件夹重命名  
mv CMAQ-CMAQv5.3.2_12Oct2020.zip CMAQ_REPO  
# 新建/home/xqm/CMAQ/CMAQ5.3目录
mkdir CMAQ5.3
# 配置文件初始化路径  
cd CMAQ_REPO
vim bldit_project.csh 
# 变更CMAQ_HOME的值,明确工作目录
set CMAQ_HOME = /home/xqm/CMAQ/CMAQ5.3 
# 保存,并退出vim  

# 初始化  
./bldit_project.csh  
  
# 进入工作目录  
cd /home/xqm/CMAQ/CMAQ5.3  
# 编辑配置文件  
vim config_cmaq.csh  

config_cmaq.csh最终修改方案:

#>  gfortran compiler............................................................
    case gcc:

        #> I/O API, netCDF, and MPI library locations
        setenv IOAPI_INCL_DIR   /usr/local/ioapi-3.2/ioapi   #> I/O API include header files
        setenv IOAPI_LIB_DIR    /usr/local/ioapi-3.2/Linux2_x86_64gfort   #> I/O API libraries
        setenv NETCDF_LIB_DIR   /usr/local/netcdf/lib  #> netCDF C directory path
        setenv NETCDF_INCL_DIR  /usr/local/netcdf/include  #> netCDF C directory path
        setenv NETCDFF_LIB_DIR  /usr/local/netcdf/lib #> netCDF Fortran directory path
        setenv NETCDFF_INCL_DIR /usr/local/netcdf/include #> netCDF Fortran directory path
        setenv MPI_LIB_DIR      /usr/local/mpich-3.3.1     #> MPI directory path

        #> Compiler Aliases and Flags
        #> set the compiler flag -fopt-info-missed to generate a missed optimization report in the bldit logfile
        setenv myFC mpifort
        setenv myCC gcc
        # 删除参数 -march=native
        setenv myFSTD "-O3 -funroll-loops -finit-character=32 -Wtabs -Wsurprising -ftree-vectorize  -ftree-loop-if-convert -finline-limit=512"
        setenv myDBG  "-Wall -O0 -g -fcheck=all -ffpe-trap=invalid,zero,overflow -fbacktrace"
        setenv myFFLAGS "-ffixed-form -ffixed-line-length-132 -funroll-loops -finit-character=32"
        setenv myFRFLAGS "-ffree-form -ffree-line-length-none -funroll-loops -finit-character=32"
        setenv myCFLAGS "-O2"
        setenv myLINK_FLAG "-fopenmp"# "-fopenmp" openMP not supported w/ CMAQ
        setenv extra_lib ""
        #setenv mpi_lib "-lmpi_mpifh"   #> -lmpich for mvapich or -lmpi for openmpi
        # 要加上"-lmpich"( 不知道是不是这里的原因...)
        setenv mpi_lib "-lmpich"   #> -lmpich for mvapich or -lmpi for openmpi

        breaksw

    default:
        echo "*** Compiler $compiler not found"
        exit(2)
        breaksw

 endsw

# 链接各种依赖库(编译器,编译器版本),编译过程报错总结见下  
./config_cmaq.csh gcc 9.1.0  
# 进入编译目录  
cd CCTM/scripts  
# 编译主程序  
./bldit_cctm.csh gcc 9.1.0  
# 进入编译后生成的目录
cd /home/xqm/CMAQ/CMAQ5.3/CCTM/scripts/BLD_CCTM_v532_gcc9.1.0
# 列出exe可执行文件
ls *exe

发现一个CMAQ可执行文件,编译完成!
在这里插入图片描述

./config_cmaq.csh gcc 9.1.0时的报错总结

报错1:
原因:ioapi配置问题
在这里插入图片描述
报错2:
原因:ioapi配置问题
在这里插入图片描述
解决过程:
重装了一遍ioapi到文件夹/home/xqm/CMAQ/ioapi-3.2
but又双叒叕报错,查遍所有资料还无法解决,便又重装到路径/usr/local/ioapi-3.2
(只怪自己太菜…配置总是乱成毛线)

ioapi好了,编译时mpich又出问题了…

报错3:
在这里插入图片描述
报错4:
原因:出现数据格式错误
在这里插入图片描述
解决:
删除 “/usr/local/ioapi-3.2/ioapi/STATE3.EXT” 文件中末尾若干行的行尾 “&” 符号,如下图,删除红色框中的 “&” 符号:
在这里插入图片描述
(此解决方案参考CMAQ-5.3 安装教程)

--------哭了----------终于通过了—————

3. 运行测试数据

  1. /CCTM/scripts目录下进入run_cctm_Bench_2016_12SE1.csh

  2. 修改编译器及版本:
    在这里插入图片描述

  3. 设置运行方式PROC(serial串行,mpi并行):
    在这里插入图片描述

  4. 如果是并行,可修改**@NPCOL@NPROW**,两者乘积为并行所调用的总核数:
    在这里插入图片描述

  5. 修改INPDIR(输入数据的路径根):
    在这里插入图片描述

  6. 修改完之后保存退出,使用./run_cctm_Bench_2016_12SE1.csh |& tee cctm.log运行csh脚本,运行时间较长。

  7. 运行完成后在data文件夹会生成相应的output文件夹,进入查看LOGS,分别查看日志文件,均显示Program completed successfully字样,如图所示即为运行成功。

  8. 之后可以下载官网提供的测试输出数据进行比对,确认结果相差无几,那么CMAQ就可以在系统上正确运行啦!
    在这里插入图片描述
    在这里插入图片描述
    图片来自参考文章https://blog.csdn.net/qq_36706625/article/details/102820474#commentshttps://blog.csdn.net/weixin_46296318/article/details/108628558

相关教程

CMAQ5.3安装
CMAQ5.0.2编译安装过程
CMAQ5.3安装笔记
CMAQ document
CMAQ Installation & Benchmarking Tutorial
CMAQ Users Guide

SMOKE

详见另一篇

  • 14
    点赞
  • 75
    收藏
    觉得还不错? 一键收藏
  • 13
    评论
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值