前言
在网上看了很多安装WRF的教程,发现部分教程主要针对的是WRF3.9及以下版本,而WRF4以后版本的netcdf分开安装,所以安装方式与之前不一样,难以借鉴,而官网给出的安装教程在部分细节常出现错误,所以,经过多次尝试终于成功,将自己的经验写下这个教程,供自己学习和参考
本文参考了ME1010博主的https://blog.csdn.net/ME1010/article/details/129914778?spm=1001.2014.3001.5501博文,该博文安装WRF的说明很完整体系,但本人结合自己的安装经历,在该博主的基础上简化了部分说明并完善方法三运行中的部分错误解决。感谢ME1010博主的分享。
本方法适用于gfrotran7以上版本安装WRF(推荐),若想通过gfortran7及以下版本安装WRF,请参考:
文章仓促,如有错误,尽情谅解并告知,谢谢!
1.安装前准备
1.1安装前的校验
which gfortran
which cpp
which gcc
该操作可用于查看 虚拟机是否安装了相关编译器,which
命令用于查找用户指定的命令(程序)所在的路径。当你在终端输入一个命令时,系统会根据环境变量 PATH
中定义的目录顺序去查找该命令。which
命令会显示这个命令实际的完整路径(如果找到了的话)。
gcc --version
gfortran --version
如果安装了gfortran编译器,可以查看其版本,我的是 gcc 11.4.0(Ubuntu 22.04.3),该版本编译mpich-3.0.4会出错,可以编译高版本的mpich,或选择gcc7及以下版本编译mpich-3.0.4
1.2 安装系统指令
sudo apt-get install libcurl4-openssl-dev -y
sudo apt-get install gfortran cpp gcc g++ m4 libxml2 libxml2-dev libhdf5-dev -y
sudo apt-get install git -y
sudo apt-get install csh -y
sudo apt install make
sudo apt install vim -y
利用sudo命令可以以root管理员权限执行命令,sudo命令下安装的软件将作用于全局所有用户上。
1.3 设置好文件目录结构
创建文件夹,文件目录结构home/用户名/Build_WRF/(LIBRARIES TESTS)
1.4 测试编译器
添加目录位置变量,以简化指令的输入
注:该简化方式只在该终端窗口可用,是临时使用,退出后需重新输入
export DIR=/home/用户名/Build_WRF
echo $DIR #返回结果应该为/home/xxx/Build_WRF
从官网下载测试包
cd $DIR/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/LIBRARIES
wget https://downloads.unidata.ucar.edu/netcdf-c/4.9.2/netcdf-c-4.9.2.tar.gz
wget https://downloads.unidata.ucar.edu/netcdf-fortran/4.6.1/netcdf-fortran-4.6.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/jasper-1.900.1.tar.gz
wget https://www2.mmm.ucar.edu/wrf/OnLineTutorial/compile_tutorial/tar_files/zlib-1.2.11.tar.gz
wget https://hdf-wordpress-1.s3.amazonaws.com/wp-content/uploads/manual/HDF5/HDF5_1_14_3/src/hdf5-1.14.3.tar.gz
wget https://www.mpich.org/static/downloads/4.1.2/mpich-4.1.2.tar.gz
tar xvf netcdf-c-4.9.2.tar.gz
tar xvf netcdf-fortran-4.6.1.tar.gz
tar xvf zlib-1.2.11.tar.gz
tar xvf libpng-1.2.50.tar.gz
tar xvf hdf5-1.14.3.tar.gz
tar xvf jasper-1.900.1.tar.gz
tar xvf mpich-4.1.2.tar.gz
2.2 配置环境变量
提前配置好环境变量,后面就不用再配置了
输入vi ~/.bashrc进入环境变量配置页面,输入i后在最后一行输入以下配置信息,按esc键后输入:wq,保存并离开,每次修改bashrc后都要终端输入source ~/.bashrc使其生效。
export DIR=/home/用户名/Build_WRF
export PATH=$DIR/LIBRARIES/mpich/bin:$PATH
export PATH=$DIR/LIBRARIES/netcdf/bin:$PATH
export NETCDF=$DIR/LIBRARIES/netcdf
export LD_LIBRARY_PATH=$DIR/LIBRARIES/netcdf/lib:$LD_LIBRARY_PATH
export JASPERLIB=$DIR/LIBRARIES/grib2/lib
export JASPERINC=$DIR/LIBRARIES/grib2/include
export LDFLAGS=-L$DIR/LIBRARIES/grib2/lib
export LD_LIBRARY_PATH=$DIR/LIBRARIES/grib2/lib:$DIR/LIBRARIES/hdf5/lib:$LD_LIBRARY_PATH
export CPPFLAGS=-I$DIR/LIBRARIES/grib2/include
2.3 安装各个依赖包
注:按顺序安装很重要,每一步都成功再进行下一步,如果对并行运算没要求,可以不安装mpich
先安装好zlib才能安装hdf5,先安装netcdf-c,才能安装netcdf-fortran
安装zlib
cd $DIR/LIBRARIES/zlib-1.2.11
./configure --prefix=$DIR/LIBRARIES/grib2
make
make install
安装libpng
cd $DIR/LIBRARIES/libpng-1.2.50
./configure --prefix=$DIR/LIBRARIES/grib2
make
make install
安装hdf5
cd $DIR/LIBRARIES/hdf5-1.14.3
./configure --prefix=$DIR/LIBRARIES/hdf5 --enable-fortran --enable-cxx --with-zlib=$DIR/LIBRARIES/grib2
make -j4 #加速编译
make install
安装jasper
cd $DIR/LIBRARIES/jasper-1.900.1
./configure --prefix=$DIR/LIBRARIES/grib2
make
make install
安装mpich
cd $DIR/LIBRARIES/mpich-4.1.2
./configure --prefix=$DIR/LIBRARIES/mpich
make -j4 #加速编译
make install
安装 netcdf-c
cd $DIR/LIBRARIES/netcdf-c-4.9.2
./configure --prefix=$DIR/LIBRARIES/netcdf --enable-dap --enable-netcdf4 --enable-shared LDFLAGS="-L$DIR/LIBRARIES/hdf5/lib -L$DIR/LIBRARIES/grib2/lib" CPPFLAGS="-I$DIR/LIBRARIES/hdf5/include -I$DIR/LIBRARIES/grib2/include"
make
make install
安装netcdf-fortran
cd $DIR/LIBRARIES/netcdf-fortran-4.6.1
./configure --prefix=$DIR/LIBRARIES/netcdf --enable-shared LIBS="-lnetcdf -lz" LDFLAGS="-L$DIR/LIBRARIES/netcdf/lib -L$DIR/LIBRARIES/grib2/lib" CPPFLAGS="-I$DIR/LIBRARIES/netcdf/include -I$DIR/LIBRARIES/grib2/include"
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
也可以选择访问git上下载自己所需版本http://Releases · wrf-model/WRF (github.com)
将会下载默认最新版本
cd $DIR
git clone --recurse-submodules https://github.com/wrf-model/WRF
git clone https://github.com/wrf-model/WPS
下载自己所需版本,建议这种方式,WRF4.5可能存在使用问题。(WPS与WRF放同一个文件夹下)
cd $DIR
wget https://github.com/wrf-model/WRF/archive/refs/tags/v4.3.3.tar.gz
wget https://github.com/wrf-model/WPS/archive/refs/tags/v4.3.1.tar.gz
tar -xf v4.3.1.tar.gz
tar -xf v4.3.3.tar.gz
mv WPS-4.3.1 WPS
mv WRF-4.3.3 WRF
3.2编译WRF
cd $DIR/WRF
./configure
编译方式有4种:serial(串行,即非并行)、smpar(内存共享并行)、dmpar(分布式并行)、dm+sm(同时使用dmpar和smpar),这里我选34(intel编译器选15)和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方式:
https://blog.csdn.net/ME1010/article/details/129914778
spack方式:
https://atmosferausm.github.io/tutorial_WRF/run_wrf/
https://www.bilibili.com/video/BV1G34y1g7J3/?spm_id_from=333.337.search-card.all.click