WRF安装
虚拟机 Ubuntu 22.04.1 LTS
aptitude,类似apt-get,但功能更强大
sudo apt-get install aptitude
WRF基础依赖软件及库安装(apt-get一键安装)
安装编译器 ( #编译c,c++,fottran语言统一使用一套编译器,使用gun系列,对应gcc,g++,gfortran,使用intel系列,对应icc,i++,ifort,或者使用pgi系列对应的。编译wrf和netcdf等要使用同一套系列,否则容易出错,此次使用gun系列)
sudo apt-get install gcc g++ gfortran
sudo apt-get install make
安装WPS需要的库libpng,zlib,jasper
sudo apt-get install libpng12*
sudo apt-get install zlib*
sudo apt-get install libjasper-dev
安装libjasper-dev报错
解决方法:添加源
sudo add-apt-repository "deb http://security.ubuntu.com/ubuntu xenial-security main"
sudo apt update
sudo apt install libjasper1 libjasper-dev
缺少公钥报错:
打开终端,下载公钥:
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 40976EAF437D05B5
PS:后面那个40976EAF437D05B5换成缺少的密钥,是什么就换成什么
安装用于并行的mpich
sudo apt-get install mpich
安装用于图形显示的
sudo aptitude install xorg-dev
安装另外的shell语言
sudo apt-get install csh
sudo apt-get install ksh
安装m4,暂时不知道用于啥,还没具体查
sudo apt-get install m4
HDF5与NECTCDF(手动编译安装)
前期准备,可以先设置HDF5和NETCDF的环境变量
例如把hdf5与netcdf安装在/home/zzy/app这个目录
在这两个目录建立hdf5和netcdf文件夹
mkdir hdf5
mkdir netcdf
设置环境变量
gedit ~/.bashrc
在文件中添加这些内容
export APP_DIR=$HOME/app #app这个目录用的频繁,给设置一个环境变量
export NETCDF=$APP_DIR/netcdf #设置netcdf的环境变量
export HDF5=$APP_DIR/hdf5
export PATH=$PATH:$NETCDF/bin:$HDF5/bin #在PATH后面加上netcdf和hdf5的bin路径
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$NETCDF/lib:$HDF5/lib
#在 LD_LIBRARY_PATH后面加上netcdf和hdf5的lib路径
(PATH和LD_LIBRARY_PATH都是系统有的环境变量,新安装软件,在他们后面加上对应的bin和lib路径就可)
修改完后,保存退出
执行 .bashrc脚本,使刚才设置的环境变量生效
source ~/.bashrc
HDF5下载:https://support.hdfgroup.org/ftp/HDF5/releases/
NETCDF下载:https://www.unidata.ucar.edu/downloads/netcdf/
HDF5
./configure --prefix=$HDF5 CC=gcc FC=gfortran CXX=g++ --enable-fortran --enable-fortran2003 --enable-cxx
make #(或者make -j 4 并行编译,4线程,线程数可根据自己的电脑选择)
make install
注解:–prefix=$HDF5, $HDF5是安装hdf5的路径,换成自己的
NETCDF
NetCDF高版本的C\C++\Fortran部分需要分开编译
先装C版本
./configure --prefix=$NETCDF CC=gcc FC=gfortran F77=gfortran CXX=g++ CPPFLAGS="-I$HDF5/include" LIBS="-L$HDF5/lib"
make #(或者make -j 4 # 并行编译,4线程,线程数可根据自己的电脑选择)
make check (可忽略)
make install
再装Fortran版本
./configure --prefix=$NETCDF CC=gcc FC=gfortran F77=gfortran CXX=g++ CPPFLAGS="-I$NETCDF/include" LIBS="-L$NETCDF/lib"
make #(或者make -j 4 # 并行编译,4线程,线程数可根据自己的电脑选择)
make check (可忽略)
make install
注解:$NETCDF是netcdf的路径,换成自己的
WRF与WPS
下载WRF和WPS,解压后,WRF和WPS一定要在同一个父目录
也可以用git clone(需要先安装git)
git clone --recurse-submodules https://github.com/wrf-model/WRF
git clone https://github.com/wrf-model/WPS
WRF
定位到WRF文件夹,终端中运行
./configure
根据使用的配置,即GNU编译器(gfortran/gcc)+ dmpar(mpich)选择33选项(34编译不成功,还不知道原因)。
serial 表示串行计算;
smpar 表示内存共享并行计算(shared memory option),即使用openMP,大部分多核电脑都支持这项功能;
dmpar 表示分布式并行计算(distributed memory option),即使用MPI 进行并行计算,主要用在计算集群,单个电脑就没必要用了;
dm+sm 表示同时使用openMP与MPI两种并行方式.
嵌套方式:选择1,即基础嵌套即可。
若出现错误:
因为ubuntu默认的sh是连接到dash的,又因为dash跟bash的不兼容所以出错了,执行时可以把sh换成 ’ bash 文件名.sh ’ 来执行,成功。
修改sh默认连接到bash的一种方法:
sudo dpkg-reconfigure dash
选择no 即可!
export J="-j 4" #设置并行编译的环境变量J ,4是核数,根据机器选(字面上设置的是核数,实际是线程)
./compile em_real >& compile_wrf.log
编译类型有以下几种
WRF-Chem(WRF大气化学模型)
em_real (3D真实情况)
em_quarter_ss (3D理想的情况下)
em_b_wave (3D理想的情况下)
em_les (3D理想的情况下)
em_heldsuarez (3D理想的情况下)
em_tropical_cyclone (3D理想的情况下)
em_hill2d_x (2D理想的情况下)
em_squall2d_x (2D理想的情况下)
em_squall2d_y ( 2d理想情况)
em_grav2d_x (2d理想情况)
em_seabreeze2d_x (2d理想情况)
em_scm_xy (1d理想情况)
真实情况编译完成后,在main目录下会出现ndown.exe,real.exe, tc.exe, wrf.exe这4个可执行程序;理想情况编译后会生成wrf.exe,ideal.exe 这2个可执行程序。
ls main/*exe # 出现 ndown.exe real.exe tc.exe wrf.exe即成功
WPS
先编译WRF,再编译WPS
WPS要和WRF在同一个父目录下
定位到WPS目录,终端执行:
./configure
选择1
./compile>& complie_wps.log
ls *exe # 出现geogrid.exe metgrid.exe ungrib.exe即成功
出现问题:编译后只生成了ungrib.exe。
解决方法:
修改./configure生成的configure.wps文件:
将“-lgomp”添加到configure.wps文件WRF_LIB变量中(只需将其附加到 -lnetcdf 之后)
重新执行
./compile>& complie_wps.log
生成geogrid.exe metgrid.exe ungrib.exe,完成!