简介
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 DATA
并cd 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. 系统环境要求及安装
- 本系统环境:Centos 7 + csh
- Fortran和C编译器(如Intel,PGI,GNU,此处使用GNU编译器)
- Git
- MPI(如OpenMPI,MVAPICH2)
- 最新版本的netCDF-C和netCDF-Fortran (without netCDF4, HDF5, HDF4, DAP client, PnetCDF, or zlib support)
- 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版本
- 在/home/xqm目录下下载及解压gcc-9.1.0
- 进入/gcc-9.1.0目录
- 运行download_prerequisites脚本,
./contrib/download_prerequisites
,自动帮你下 载所需要的依赖文件和库 mkdir gcc-build-9.1.0
建立输出目录,将所有的中间文件都放到该目录,cd gcc-build-9.1.0
进入目录- 执行
../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
make
命令开始编译(此处编译时间:)make install
安装gcc -v
验证当前版本- 如果依旧显示之前的版本,则需重启
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
- 解压zlib-1.2.11.tar.gz至
/home/xqm/CMAQ/LIBRARIES
- 配置信息
./configure --prefix=/usr/local/netcdf
- 编译
make, make check, make install
方法2:yum安装
yum install -y zlib zlib-devel
版本为1.2.7,可升级至1.2.11(此处未升级)
1.5. 安装hdf5
- 解压hdf5-1.10.5.tar.gz至
/home/xqm/CMAQ/LIBRARIES
- 配置
./configure --prefix=/usr/local/netcdf --with-zlib=/usr/local/netcdf
- 编译
make, make check, make install
1.6. 安装最新版本的 netCDF-C 和 netCDF-Fortran
注:4.2版本以后分成了 c库 和 fortran库,需要分开编译
官方文档对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语法!
- 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
- 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
- 配置环境变量
# 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
生效
- 检查安装是否成功,若出现相应信息,则成功
nf-config --all
nc-config --all
参考:CMAQ5.3安装
参考:CMAQ5.0.2编译安装过程
1.7. 安装mpich-3.3.1
(本来安装的openMPI, 最后按照教程还是选择了mpich)
- 下载压缩包 mpich-3.3.1下载链接
- 编译安装
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
- 设置 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}
- 保存退出
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. 运行测试数据
-
在
/CCTM/scripts
目录下进入run_cctm_Bench_2016_12SE1.csh
-
修改编译器及版本:
-
设置运行方式PROC(serial串行,mpi并行):
-
如果是并行,可修改**@NPCOL和@NPROW**,两者乘积为并行所调用的总核数:
-
修改INPDIR(输入数据的路径根):
-
修改完之后保存退出,使用
./run_cctm_Bench_2016_12SE1.csh |& tee cctm.log
运行csh脚本,运行时间较长。 -
运行完成后在data文件夹会生成相应的output文件夹,进入查看LOGS,分别查看日志文件,均显示Program completed successfully字样,如图所示即为运行成功。
-
之后可以下载官网提供的测试输出数据进行比对,确认结果相差无几,那么CMAQ就可以在系统上正确运行啦!
图片来自参考文章https://blog.csdn.net/qq_36706625/article/details/102820474#comments、https://blog.csdn.net/weixin_46296318/article/details/108628558
相关教程
CMAQ5.3安装
CMAQ5.0.2编译安装过程
CMAQ5.3安装笔记
CMAQ document
CMAQ Installation & Benchmarking Tutorial
CMAQ Users Guide