前言
在摸索了很多的WRF安装教程后,自己实践出的一套比较可行的安装路径
本方法适用于gfrotran7及以下版本安装WRF,若想通过gfortran7以上版本安装WRF,请参考:
在虚拟机的Ubantu22.04.3中在线安装WRF4及以上版本-CSDN博客(推荐)
文章仓促,如有错误,尽情谅解并告知,谢谢!
1.安装前准备
1.1导入gfortran7软件安装源
sudo apt-get update
sudo apt-get install vim -y
sudo vim /etc/apt/sources.list
#把以下这行加到文件的最后一行
deb https://mirrors.aliyun.com/ubuntu/ focal main universe
1.2 安装系统指令
sudo apt-get update
sudo apt install gcc-7 -y
sudo apt install gfortran-7 -y
sudo apt-get install cpp g++ m4 libxml2 libxml2-dev libhdf5-dev -y
sudo apt-get install libnetcdf-dev
sudo apt-get install csh -y
sudo apt-get install git -y
sudo apt install make
利用sudo命令可以以root管理员权限执行命令,sudo命令下安装的软件将作用于全局所有用户上。
sudo update-alternatives --install /usr/bin/gfortran gfortran /usr/bin/gfortran-7 100
把gfortran默认指向gfortran-7
1.3 设置好文件目录结构
创建文件夹,文件目录结构home/用户名/Build_WRF/(LIBRARIES TESTS WPS WRF)
mkdir Build_WRF
mkdir Build_WRF/TESTS
mkdir Build_WRF/LIBRARIES
1.4 测试编译器
添加目录位置变量,以简化指令的输入
注:该简化方式只在该终端窗口可用,是临时使用,退出后需重新输入
export DIR=/home/用户名/Build_WRF/LIBRARIES
echo $DIR #返回结果应该为/home/xxx/Build_WRF/LIBRARIES
从官网下载测试包
cd TESTS
wget https://www2.mmm.ucar.edu/wrf/OnLineTutorial/compile_tutorial/tar_files/Fortran_C_tests.tar
tar xvf Fortran_C_tests.tar
输入命令进行测试
gfortran TEST_1_fortran_only_fixed.f
./a.out
gfortran TEST_2_fortran_only_free.f90
./a.out
gcc TEST_3_c_only.c
./a.out
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
./TEST_csh.csh
./TEST_perl.pl
./TEST_sh.sh
成功完成测试后会显示7个SUCCESS
2.WRF相关库和依赖的安装
2.1 依赖包下载及解压
进入依赖包目录,下载依赖包并解压
cd $DIR
wget https://www2.mmm.ucar.edu/wrf/OnLineTutorial/compile_tutorial/tar_files/netcdf-4.1.3.tar.gz
wget https://www2.mmm.ucar.edu/wrf/OnLineTutorial/compile_tutorial/tar_files/mpich-3.0.4.tar.gz
wget https://www2.mmm.ucar.edu/wrf/OnLineTutorial/compile_tutorial/tar_files/jasper-1.900.1.tar.gz
wget https://www2.mmm.ucar.edu/wrf/OnLineTutorial/compile_tutorial/tar_files/libpng-1.2.50.tar.gz
wget https://www2.mmm.ucar.edu/wrf/OnLineTutorial/compile_tutorial/tar_files/zlib-1.2.7.tar.gz
tar xvf netcdf-4.1.3.tar.gz
tar xvf mpich-3.0.4.tar.gz
tar xvf jasper-1.900.1.tar.gz
tar xvf libpng-1.2.50.tar.gz
tar xvf zlib-1.2.7.tar.gz
2.2 配置环境变量
提前配置好环境变量,后面就不用再配置了
输入vi ~/.bashrc进入环境变量配置页面,输入i后在最后一行输入以下配置信息,按esc键后输入:wq,保存并离开,每次修改bashrc后都要终端输入source ~/.bashrc使其生效。
export NETCDF_classic=1
export DIR=/home/ubuntu/Build_WRF/LIBRARIES
export CC=gcc-7
export CXX=g++
export FC=gfortran-7
export FCFLAGS=-m64
export F77=gfortran-7
export FFLAGS=-m64
export JASPERLIB=$DIR/grib2/lib
export JASPERINC=$DIR/grib2/include
export LDFLAGS=-L$DIR/grib2/lib
export CPPFLAGS=-I$DIR/grib2/include
export PATH=/usr/bin/gfortran-7:$PATH
export PATH=$DIR/netcdf/bin:$PATH
export NETCDF=$DIR/netcdf
export PATH=$DIR/mpich/bin:$PATH
2.3 安装各个依赖包
注:按顺序安装很重要,每一步都成功再进行下一步,如果对并行运算没要求,可以不安装mpich
先安装好zlib才能安装hdf5,先安装netcdf-c,才能安装netcdf-fortran
安装zlib
cd $DIR/zlib-1.2.7
./configure --prefix=$DIR/grib2
make
make install
安装libpng
cd $DIR/libpng-1.2.50
./configure --prefix=$DIR/grib2
make
make install
安装jasper
cd $DIR/jasper-1.900.1
./configure --prefix=$DIR/grib2
make
make install
安装mpich
cd $DIR/mpich-3.0.4
./configure --prefix=$DIR/mpich
make
make install
安装netcdf
cd $DIR/netcdf-4.1.3
./configure --prefix=$DIR/netcdf --disable-dap --disable-netcdf-4 --disable-shared
make
make install
检查netcdf是否安装成功,运行以下代码,并查看netcdf/include文件夹下是否有netcdf.inc文件
nc-config --has-nc4
nf-config --has-nc4
安装成功后,你的LIBRARIES下应该至少有grib2、mpich、netcdf三个文件夹,这说明你的依赖包安装成功,可以开始下一步的操作
2.3 依赖包测试
下载测试包并解压
cd $DIR/../TESTS
wget https://www2.mmm.ucar.edu/wrf/OnLineTutorial/compile_tutorial/tar_files/Fortran_C_NETCDF_MPI_tests.tar
tar xvf Fortran_C_NETCDF_MPI_tests.tar
进行测试
测试netcdf
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
测试mpich
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
两项测试均显示SUCCESS表示成功
3、编译WRF和WPS
3.1 下载WPS和WRF
将会下载默认版本
cd ..
git clone --recurse-submodules https://github.com/wrf-model/WRF
git clone https://github.com/wrf-model/WPS
3.2编译WRF
cd $DIR/../WRF
./configure
编译方式有4种:serial(串行,即非并行)、smpar(内存共享并行)、dmpar(分布式并行)、dm+sm(同时使用dmpar和smpar),这里我选34和1
./compile -j 4 em_real &> log.compile
如果在$DIR/WRF/run 或 $DIR/WRF/test/em_real下成功生成四个exe文件,则表示安装成功
3.3编译WPS
cd $DIR/../WPS
./configure
我这里编译器选择3
./compile &> log.compile
在WPS文件夹下生成3个exe文件,则表示安装成功
4、WRF运行前数据导入
WRF运行需要静态地理数据和再分析数据,可以在相应官网上下载后传到ubuntu中
静态地理数据分为必选和可选:
http://www2.mmm.ucar.edu/wrf/users/download/get_sources_wps_geog.html
for tar in *.tar.bz2; do tar xvf $tar; done #(批量解压地理数据)
再分析数据常用NCAR数据集:
https://rda.ucar.edu/datasets/ds083.2/?hash=!access
最后的话:WRF4及以上版本的安装比较繁琐,不同类型的错误比较多,因此,有博主和UP主已经探索出了用conda和spack安装WRF的快捷方式,大家感兴趣可以去关注并尝试。
conda方式:
spack方式:
https://atmosferausm.github.io/tutorial_WRF/run_wrf/
https://www.bilibili.com/video/BV1G34y1g7J3/?spm_id_from=333.337.search-card.all.click