CentOS 7安装WRF,SMOKE,CMAQ
文章目录
- 简介
- 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 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!CentOS 7安装WRF,SMOKE,CMAQ相关推荐
- CentOS 8 安装图解
继 RHEL 8 发布之后,CentOS 社区也发布了让人期待已久的 CentOS 8,并发布了两种模式: CentOS stream:滚动发布的 Linux 发行版,适用于需要频繁更新的开发者 Ce ...
- centOS 自动安装php
centos下安装php #yum install -y php 这个只安装PHP 建议安装运行库及MySQL的支持 #yum install -y php php-devel php-mysql 如 ...
- Centos下安装mysql 总结
一.MySQL安装 Centos下安装mysql 请点开:http://www.centoscn.com/CentosServer/sql/2013/0817/1285.html 二.MySQL的几个 ...
- linux卸载欧朋浏览器,如何在Centos下安装opera浏览器
如何在Centos下安装opera浏览器 ,Opera目前是Linux平台上性能最优的浏览器,而且Opera中国团队本身即定位于Opera的研发中心,主要也是负责全球Linux平台项目的开发,这个版本 ...
- 如何在Ubuntu/CentOS上安装Linux内核4.0
如何在Ubuntu/CentOS上安装Linux内核4.0 大家好,今天我们学习一下如何从Elrepo或者源代码来安装最新的Linux内核4.0.代号为'Hurr durr I'm a sheep'的 ...
- CentOS 7 安装 Jenkins
CentOS 7 安装 Jenkins 准备工作 首选需要安装JAVA环境 这个简单不说了 如果你的系统没有自带git,那么也需要安装一个 yum install git 1.安装 第一种方法 sud ...
- centos+ffmpeg安装配置+切片
在虚拟机vmware6(版本比较旧了)中,安装centos6,不多说了. vmware虚拟工具安装前,需要安装如下内容 yum -y install kernel-devel yum -y insta ...
- centos 编译安装mysql
centos 编译安装mysql,请看附件 转载于:https://blog.51cto.com/3131854/1883713
- 在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 ...
- 在CentOS上安装Java环境—openjdk1.7 解决https配置问题
在CentOS上安装Java环境:[1]使用yum安装java 现阶段做企业级项目开发一般都采用Java语言.开发的项目需要放在服务器上运行测试,若以CentOS系统为服务器系统,首先要解决就是Cen ...
最新文章
- Kaggle入门,看这一篇就够了
- python list索引_Python按照索引访问list
- 在对话框中加入属性页
- C# .NET 根据Url链接保存Image图片到本地磁盘
- Python: How to import other Python files
- 神经网络收敛标准与准确率之间的数学关系
- Mysql数据库(一)——mysql数据库初体验
- wordpress模板-Blocksy主题模板V1.8.3.4
- 追加easyui元素,完成后调用$.parser.parse()方法渲染
- NumSharp  - Numerical .NET
- mysql 设计超市订单图,JSP+MySQL校园网络超市系统的设计与实现
- cpu核心分配给不同进程linux,Linux技巧:多核下绑定硬件/进程到不同CPU
- oracle查询undo表空间使用率,检查Undo表空间使用情况
- 个人信息安全规范新规正式启用,值得你关注!
- trajan 算法 离线求lca 超详细讲解~~~~ 保证一看就懂~~~
- 网络模块的568B和568A
- 统信自带浏览器js不兼容问题
- NPM install报错certificate has expired
- 《情书》——岩井俊二
- HTML设置网站标题前的logo
热门文章
- CentOS 8 安装图解