文章目录

  • 简介
  • WRF
    • 1. 系统环境检测
      • 1.1. 安装gcc, cpp, gfortran编译器及工具
      • 1.2. 库安装
        • 1. NetCDF(必需)
        • 2. MPICH
        • 3. zlib
        • 4. libpng
        • 5. Jasper
      • 1.3. 库兼容性测试
    • 2. 构建WRF
    • 3. 构建WPS (运行实际案例所必需)
    • 4. 获取静态地理数据/实时数据
      • 静态数据
      • 真实数据
    • 5. 运行WRF与WPS
      • 5.1. 运行WPS
      • 5.2. 运行WRF
    • 相关教程
  • CMAQ
    • 1. 系统环境要求及安装
      • 1.1. 检查编译器
      • 1.2. 升级gcc版本
      • 1.3. 安装Git
      • 1.4. 安装zlib
      • 1.5. 安装hdf5
      • 1.6. 安装最新版本的 netCDF-C 和 netCDF-Fortran
      • 1.7. 安装mpich-3.3.1
      • 1.8. 安装I/O API
    • 2. 安装CMAQ5.3
    • 3. 运行测试数据
    • 相关教程
  • SMOKE

简介

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!

    CentOS 7安装WRF,SMOKE,CMAQ相关推荐

    1. CentOS 8 安装图解

      继 RHEL 8 发布之后,CentOS 社区也发布了让人期待已久的 CentOS 8,并发布了两种模式: CentOS stream:滚动发布的 Linux 发行版,适用于需要频繁更新的开发者 Ce ...

    2. centOS 自动安装php

      centos下安装php #yum install -y php 这个只安装PHP 建议安装运行库及MySQL的支持 #yum install -y php php-devel php-mysql 如 ...

    3. Centos下安装mysql 总结

      一.MySQL安装 Centos下安装mysql 请点开:http://www.centoscn.com/CentosServer/sql/2013/0817/1285.html 二.MySQL的几个 ...

    4. linux卸载欧朋浏览器,如何在Centos下安装opera浏览器

      如何在Centos下安装opera浏览器 ,Opera目前是Linux平台上性能最优的浏览器,而且Opera中国团队本身即定位于Opera的研发中心,主要也是负责全球Linux平台项目的开发,这个版本 ...

    5. 如何在Ubuntu/CentOS上安装Linux内核4.0

      如何在Ubuntu/CentOS上安装Linux内核4.0 大家好,今天我们学习一下如何从Elrepo或者源代码来安装最新的Linux内核4.0.代号为'Hurr durr I'm a sheep'的 ...

    6. CentOS 7 安装 Jenkins

      CentOS 7 安装 Jenkins 准备工作 首选需要安装JAVA环境 这个简单不说了 如果你的系统没有自带git,那么也需要安装一个 yum install git 1.安装 第一种方法 sud ...

    7. centos+ffmpeg安装配置+切片

      在虚拟机vmware6(版本比较旧了)中,安装centos6,不多说了. vmware虚拟工具安装前,需要安装如下内容 yum -y install kernel-devel yum -y insta ...

    8. centos 编译安装mysql

      centos 编译安装mysql,请看附件 转载于:https://blog.51cto.com/3131854/1883713

    9. 在CentOS下安装apche+tomcat+mysql+php

      在CentOS下安装apche+tomcat+mysql+php 本例中所用到的软件 Apache 2.2 Sun的JDK-1_5_0_12-linux-i586 MySQL: mysql-5.0.4 ...

    10. 在CentOS上安装Java环境—openjdk1.7 解决https配置问题

      在CentOS上安装Java环境:[1]使用yum安装java 现阶段做企业级项目开发一般都采用Java语言.开发的项目需要放在服务器上运行测试,若以CentOS系统为服务器系统,首先要解决就是Cen ...

    最新文章

    1. Kaggle入门,看这一篇就够了
    2. python list索引_Python按照索引访问list
    3. 在对话框中加入属性页
    4. C# .NET 根据Url链接保存Image图片到本地磁盘
    5. Python: How to import other Python files
    6. 神经网络收敛标准与准确率之间的数学关系
    7. Mysql数据库(一)——mysql数据库初体验
    8. wordpress模板-Blocksy主题模板V1.8.3.4
    9. 追加easyui元素,完成后调用$.parser.parse()方法渲染
    10. NumSharp  - Numerical .NET
    11. mysql 设计超市订单图,JSP+MySQL校园网络超市系统的设计与实现
    12. cpu核心分配给不同进程linux,Linux技巧:多核下绑定硬件/进程到不同CPU
    13. oracle查询undo表空间使用率,检查Undo表空间使用情况
    14. 个人信息安全规范新规正式启用,值得你关注!
    15. trajan 算法 离线求lca 超详细讲解~~~~ 保证一看就懂~~~
    16. 网络模块的568B和568A
    17. 统信自带浏览器js不兼容问题
    18. NPM install报错certificate has expired
    19. 《情书》——岩井俊二
    20. HTML设置网站标题前的logo

    热门文章

    1. Blowfish简介
    2. 虚拟机安装麒麟操作系统网络设置
    3. Qt 的 linuxFB XCB KMS XCB Wayland
    4. laravel实现短信验证码功能
    5. 挨踢项目求生法则(2)——战略篇
    6. bootstrap怎么强制不换行_Bootstrap方法的软件实现
    7. 大数据毕设选题 - 京东消费数据分析与可视化(python 大数据 机器学习)
    8. 学习笔记(30):Google开发专家带你学 AI:入门到实战(Keras/Tensorflow)(附源码)-模型微调(青出于蓝胜于蓝)
    9. QT 打开PDF文件或图片文件
    10. windows下Git连接使用