概述

基于多次WRF模式的安装,本文依据安装经验总结一下安装概述及安装方法。根据不同的编译环境和编译过程我将其分为5种。这5种方法大同小异,尽管操作方式与其过程有些许差别。但是其背后原理其实一样,在尝试这5种方法分别安装以后,对WRF模式本身以及编译过程有了更深刻的认识。WRF模式安装前,需要配置5个依赖库以及一些编辑器,这5个库分别是grib2、jasper、libpng、mpich、netcdf,编辑器则有很多选择,其原理大致相同。接下来分别介绍5种方法的安装技巧以及利弊。

1.Cygwin配置

简单来说,Cygwin就是一个在window上的简易UNIX系统。对于刚入门的linux系统的新手而言,有window下的交互界面配合,无疑是友好的。配置WRF也是最简单容易的一个,只需要将cygwin压缩包拷贝到某盘的根目录下然后解压。之后在window系统打开终端窗口进入解压盘然后输入Cygwin.bat然后回车,简易linux环境搭建完成。由于WRF模式已经提前编译好并封装至压缩包,因此我们只需要配置地形文件和气象数据即可。配置地理数据和气象数据步骤如下: step1.回到windows系统中,在cygwin/opt目录下,创建GEOG(注意是大写)文件夹step2.将自选个例资料的文件夹拷贝到 cygwin/opt 目录下step3.将另外3个.bz2的压缩包,拷入GEOG下并解压。此步为配置地形数据。至此WRF环境完全搭建完毕。
对于此种方法,其操作方法简单、并在window下面运行,能很好的与宿主机交互。不足的是,linux操作系统不完善、不稳定,只能依靠打包好的WRF模式版本,目前看到打包好的版本为V3,版本较老,数据的更新导致模式运行失败。同时WRF编译只能在自己电脑上运行,模拟时间成本较大、模拟较大尺度过程时内存溢出。

2.Docker安装

Docker是开源的应用引擎,开发者可以将自己的应用以及所需依赖包打包成镜像,然后供其他用户直接在Linux或者Windows系统上使用。此处安装WRF模式亦是如此,由于其本身依赖包众多,环境变量设置和安装繁杂。因此将已经配置好的WRF模式及其依赖环境打包成镜像,直接使用docker打开使用即可。使用docker可以细分为以下两种方案:
首先是安装docker,在window下安装docker可能相对较麻烦,其原理是打开window虚拟机设置,然后双击docker安装程序即可安装成功。若在linux环境下安装仅需要依据官网介绍输入几条命令即可,相对较方便,当然不同版本系统可能安装有些许不同,官网均有详细介绍。
方案一:利用已经封装好的.sh文件配置环境变量然后将其再打包成镜像使用。分成以下几步
Step1:docker前期准备
docker search centos,可以查看是否存在centos镜像
docker pull centos,从仓库拉取镜像到自己环境中
docker run -it centos:latest /bin/bash,启动centos容器
Step2:WRF环境的编译
yum install gcc gcc-gfortran gcc-c++ which perl csh git wget make tar m4 libXrender libXext fontconfig在容器中安装所需要的一些命令和软件
scp -r gp1_4@ip:/data/public/Software/tar ./
scp gp1_4@ip:/data/public/Software/install_workflow.sh ./将学院一些文件传输到当前环境下.
将tar文件和.sh文件放入/opt/Softwar文件夹中
export Dir=/opt/Software导入环境变量
输入./install_workflow.sh运行安装程序
vi ~/.bashrc修改环境变量如下:
Docker是开源的应用引擎,开发者可以将自己的应用以及所需依赖包打包成镜像,然后供其他用户直接在Linux或者Windows系统上使用。此处安装WRF模式亦是如此,由于其本身依赖包众多,环境变量设置和安装繁杂。因此将已经配置好的WRF模式及其依赖环境打包成镜像,直接使用docker打开使用即可。使用docker可以细分为以下两种方案:
首先是安装docker,在window下安装docker可能相对较麻烦,其原理是打开window虚拟机设置,然后双击docker安装程序即可安装成功。若在linux环境下安装仅需要依据官网介绍输入几条命令即可,相对较方便,当然不同版本系统可能安装有些许不同,官网均有详细介绍。
方案一:利用已经封装好的.sh文件配置环境变量然后将其再打包成镜像使用。分成以下几步
Step1:docker前期准备
docker search centos,可以查看是否存在centos镜像
docker pull centos,从仓库拉取镜像到自己环境中
docker run -it centos:latest /bin/bash,启动centos容器
Step2:WRF环境的编译
yum install gcc gcc-gfortran gcc-c++ which perl csh git wget make tar m4 libXrender libXext fontconfig在容器中安装所需要的一些命令和软件
scp -r gp1_4@ip:/data/public/Software/tar ./
scp gp1_4@ip:/data/public/Software/install_workflow.sh ./将学院一些文件传输到当前环境下.
将tar文件和.sh文件放入/opt/Softwar文件夹中
export Dir=/opt/Software导入环境变量
输入./install_workflow.sh运行安装程序
vi ~/.bashrc修改环境变量如下:
在这里插入图片描述
source ~/.bashrc加载环境变量
scp -r root@ip:/data/public/Model/tar ./将WRF文件需要的安装包传输到当前目录
tar -xf v4.2.2.tar -C /opt/Model ,解压wrf到/opt/Model目录下
进入解压后的WRF文件夹
./configure 选择编译模式和编辑器以及网格形式
./compile em_real >& compile.log #编译开始并将编译过程存到compile.log中
解压WPS文件并进入
./configure #选择编辑器
./compile #开始编译,与WRF编译大致相同
编译结束后,WRF模式的编译已经全部完成,接来下将编译好的环境转化为一个镜像
Step3:将容器打包
docker ps –a #查看正在运行的容器
docker commit -m “wrf4.2” -a ZWT 49c3491be29e zwt/wrf:4.2
#其中,-m指定说明信息;-a指定用户信息; 49c3491be29e代表容器的id;zwt/wrf:4.2指定目标镜像的用户名、仓库名和 tag 信息。注意这里的用户名zwt,后边会用到。
docker save -o wrf_docker_wt4.2.tar zwt/wrf:4.2 #保存镜像,-o也可以是—output
镜像生成后,即可以加载使用了
Step4:镜像的使用
首先我们把压缩包放在内存比较大的盘,因为后续运行需要数据
docker load -i .\wrf_docker_wt4.2.tar # 加载镜像, -i也可以是—input
mkdir work #创建一个工作文件夹
docker run -it -v D:\Docker_wrf\work:/home/wrf/work --entrypoint=/bin/bash zwt/w
rf:4.2 # bash/shell 的方式运行,在这里将/home/wrf/work目录挂载到 D:\Docker_wrf\work
Step5:运行WRF
运行可以直接用powershell或者用mobaxshell的shell打开
cd /home/wrf/work
cp -r /opt/Model/WRF-4.2.2/ ./
cp -r /opt/Model/WPS-4.2/ ./将文件夹复制到work文件夹下
至此,以docker进入容器自己搭建WRF环境已经全部完成,尽管地理数据和气象数据还未配置,那将会在下面篇幅介绍。这样的操作可以让我们对docker操作有一定的认识以及在配置过程中对WRF文件的熟悉。接下来就是介绍一种简单docker搭建环境的方案。
方案二:这种方案省略了WRF环境变量的配置和编译,并将容器打包过程,直接将已经打包好的镜像文件在docker中运行即可。
首先从学院服务器下载镜像文件wrf_docker_wt4.2.tar 在此路径下/data/public/docker
打开软件MobaXterm点击Start local teiminal
进入存放wrf_docker_wt4.2.tar的目录( >30G可用) cd D:/Docker/WRF
docker load -I wrf_docker_wt4.2.tar #加载镜像
docker run -it -v D:/Docker/WRF/data:/home/wrf/work --entrypoint=/bin/bash zwt/wrf:4.2将镜像系统挂载到宿主机D:/Docker/WRF/data下面
docker ps -a#查看所有容器
docker start ID#开启容器
docker attach ID#进入容器
将fnl和地理数据geoge放在本地:/Docker/WRF/data/date下
进入容器后还是将/opt/Model下的WPS-4.4和WRF-4.2.2拷贝到/home/wrf/work/文件夹下让运行更加方便。由于此镜像已经将WRF编译以及依赖库环境变量配置完成,因此完全不需要其他操作,环境已经搭建完成。此方案对于使用Docker的同学来说,无疑是十分方便和简单的。
对于使用docker的同学来说,最好的一点就是不需要依赖网络等其他环境因素。当然不足的就是运行时间成本可能相对较多,同时还会占用自己电脑比较大的硬盘空间,对电脑配置有一定的要求。

3.学院大型机

学院大型机就是在远程服务器上进行自己的一系列操作,首先下载远程连接软件Xshell或其他远程连接APP。大气科学学院公共服务器需要先登录学校老大型机服务器,利用ssh 命令进入学院服务器。此处选择Xshell进行登录。
登录大型机前需要连接校园网,然后注销登录。
在这里插入图片描述
进入Xshell后,点击文件处新建一个会话,在主机输入学校大型机的IP地址。
然后选择登录提示符输入用户名和登录密码。点击登录
进入学校大型机后,使用ssh命令学院登录服务器(ssh gp1_X@ip)
登录成功后,进入linux系统,可以编译自己的WRF环境。
创建自己的学号文件夹
将学院的WRF相关文件复制到自己路径下(/data/public/Model)
由于大型机上相关依赖包已经配置完成,故直接安装即可。
在WRF-4.2.2文件夹下输入./configure
在这里插入图片描述
选择编辑器和编译方式,通常选择并行编译,选择34或者35即可。然后选择网格模式,选择3涡旋跟随网格。
继续输入 ./compile em_real开始编译需等待30min左右。
等待编译完成后看到
在这里插入图片描述
编译成功
接下来编译WPS
进入WPS-4.2输入 ./configure 选择wps编辑器和编译方式选择1或3都可
在这里插入图片描述
然后输入 ./compile 编译开始
编译结束后会出现3个.exe文件,编译成功。
此种环境编译方式相对简单,编译好后即可开始模拟。在大型机上编译不用担心运行内存溢出,可以多核运行,运行时间较快。但是也有一定的弊端,当多人同时使用时,运行可能较慢,需要断网链接。

4.搭建虚拟机从零开始配置

4.1安装文件的准备

/home/user/目录下创建Build_WRF文件并保存此三个压缩包
在这里插入图片描述
~/Build_WRF/目录下面创建LIBRARIES文件夹,放入此5个压缩包文件
在这里插入图片描述
测试文件夹/home/user/路径下创建TESTS文件夹放入测试压缩文件
在这里插入图片描述
以上文件可以在百度网盘或者官网中找到

4.2解压和环境变量设置

编译器的安装
sudo apt-get update
sudo apt-get install csh gfortran m4 build-essential

依赖库的安装
进入Build_WRF/LIBRARIES文件夹
sudo nano ~/.bashrc
export DIR=/home/用户名/Build_WRF/LIBRARIES
export CC=gcc
export CXX=g++
export FC=gfortran
export CFLAGS=-m64
export F77=gfortran
export FFLAGS=-m64

ctrl+x保存
source ~/.bashrc

进入LIBRARIES目录
安装netcdf-4.1.3
tar -zxvf netcdf-4.1.3.tar.gz
cd netcdf-4.1.3
./configure --prefix= D I R / n e t c d f − − d i s a b l e − d a p − − d i s a b l e − n e t c d f − 4 − − d i s a b l e − s h a r e d m a k e s u d o m a k e i n s t a l l s u d o n a n o   / . b a s h r c 加 入 环 境 变 量 e x p o r t P A T H = DIR/netcdf --disable-dap --disable-netcdf-4 --disable-shared make sudo make install sudo nano ~/.bashrc 加入环境变量 export PATH= DIR/netcdfdisabledapdisablenetcdf4disablesharedmakesudomakeinstallsudonano /.bashrcexportPATH=DIR/netcdf/bin: P A T H e x p o r t N E T C D F = PATH export NETCDF= PATHexportNETCDF=DIR/netcdf
保存退出
source ~/.bashrc

cd …/
tip:此处可以输入ls ${NETCDF}/include/
若没有出现文件则说明环境变量配置出错,可以全部删除重配置。

安装mpich
tar -zxvf mpich-3.0.4.tar.gz
cd mpich-3.0.4
./configure --prefix= D I R / m p i c h m a k e s u d o m a k e i n s t a l l 在 当 前 路 径 下 设 置 环 境 变 量 s u d o n a n o   / . b a s h r c e x p o r t P A T H = DIR/mpich make sudo make install 在当前路径下设置环境变量 sudo nano ~/.bashrc export PATH= DIR/mpichmakesudomakeinstallsudonano /.bashrcexportPATH=DIR/mpich/bin:$PATH
保存然后退出
source ~/.bashrc
cd…

tip2:此处可以分别输入
mpicc
mpif90
查看是否能找到命令,若不能找到命令则配置环境出错,重新安装此库即可

安装zlib
此环境变量的操作在Build_WRF/LIBRARIES/执行
sudo nano ~/.bashrc
export LDFLAGS=-L D I R / g r i b 2 / l i b e x p o r t C P P F L A G S = − I DIR/grib2/lib export CPPFLAGS=-I DIR/grib2/libexportCPPFLAGS=IDIR/grib2/include
保存并退出
source ~/.bashrc
tar -zxvf zlib-1.2.7.tar.gz
cd zlib-1.2.7
./configure --prefix=$DIR/grib2
make
sudo make install
cd…

安装libpng
tar -zxvf libpng-1.2.50.tar.gz
cd libpng-1.2.50
./configure --prefix=$DIR/grib2
make
sudo make install
cd…

安装jasper
tar -zxvf jasper-1.900.1.tar.gz
cd jasper-1.900.1
./configure --prefix=$DIR/grib2
make
sudo make install
cd…
输入
cd TESTS
进入测试目录
输入
tar -xvf Fortran_C_NETCDF_MPI_tests.tar
测试一
cp N E T C D F / i n c l u d e / n e t c d f . i n c . g f o r t r a n − c 0 1 f o r t r a n + c + n e t c d f f . f g c c − c 0 1 f o r t r a n + c + n e t c d f c . c g f o r t r a n 0 1 f o r t r a n + c + n e t c d f f . o 0 1 f o r t r a n + c + n e t c d f c . o − L {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/include/netcdf.inc.gfortranc01fortran+c+netcdff.fgccc01fortran+c+netcdfc.cgfortran01fortran+c+netcdff.o01fortran+c+netcdfc.oL{NETCDF}/lib -lnetcdff -lnetcdf
./a.out

测试二
cp N E T C D F / i n c l u d e / n e t c d f . i n c . m p i f 90 − c 0 2 f o r t r a n + c + n e t c d f + m p i f . f m p i c c − c 0 2 f o r t r a n + c + n e t c d f + m p i c . c m p i f 900 2 f o r t r a n + c + n e t c d f + m p i f . o 0 2 f o r t r a n + c + n e t c d f + m p i c . o − L {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/include/netcdf.inc.mpif90c02fortran+c+netcdf+mpif.fmpiccc02fortran+c+netcdf+mpic.cmpif9002fortran+c+netcdf+mpif.o02fortran+c+netcdf+mpic.oL{NETCDF}/lib -lnetcdff -lnetcdf
mpirun ./a.out

4.3WRF编译

cd Build_WRF
tar -zxvf WRFV4.0.TAR.gz
cd WRF
./configure
此时编译结束后看到的是编辑器的选择和运算方式
可以先选择34
然后选择1

./compile em_real >& compile.log &
tail -f compile.log
然后等待编译(时间较长,半个小时左右),编译看到四个.exe文件后即可以ctrl+c结束编译
若出现错误未成功应该是环境变量配置错误,可以查看compile.log编译日志查看错误提示。大概率环境配置错误。
cd …

4.4WPS配置

cd Build_WRF/
tar -zxvf WPSV4.0.TAR.gz
cd WPS
sudo nano ~/.bashrc
修改环境变量
export JASPERLIB= D I R / g r i b 2 / l i b e x p o r t J A S P E R I N C = DIR/grib2/lib export JASPERINC= DIR/grib2/libexportJASPERINC=DIR/grib2/include

ctrl+x保存 然后保存环境变量
source ~/.bashrc
./configure
./compile >& compile.log &
tail -f compile.log
等待编译结束环境搭建完成

此方法过程繁琐复制,具有一定的挑战性,但是在安装成功后会获得成就感,同时提高自己在linux环境下操作的熟练程度,并对安装里的各个细节进一步了解,收获较多。与其他在自己电脑安装存在一样的问题,运行时间成本太大,容易内存溢出,对电脑硬件要求较高。

总结

以上多目前所知道的安装方法大致总结及概略描述,对比以上几种方法。对于Cygwin,Docker,虚拟机自己安装几种方法都需要电脑的硬件要求,运行文件处理相对方便,不用在服务器和自己电脑上互传文件。但是在实际运用中,多追求效率,节省时间,故一般在大型机上完成天气模拟。个人多用学院大型机完成天气模拟过程,其他方法可以辅助使用,加深自己对WRF模式的理解。(注:以上均为个人理解,错误之处请见谅)

安装包链接
链接:https://pan.baidu.com/s/1fID8nGTx-EvAcfKcLPljcA
提取码:mvto
复制这段内容后打开百度网盘手机App,操作更方便哦

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐