【WRF安装第三期(Ubuntu)】搭建WRF编译所需系统-第三方依赖库安装

1 设置环境变量

根据前一博客所述-【WRF安装第二期(Ubuntu)】搭建WRF编译所需系统-系统环境检验,WRF安装的目录结构如下:

Build_WRF
  |-- TESTS
  |-- LIBRARIES
  |-- WPS
  |-- WRF
  |–DATA(输入场数据,位置可自选)
  |-- GEOG(地表静态数据,位置可自选)

在构建库之前,以下路径需要设置:

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.1 打开环境变量文本

环境安装完成后,还需要在系统中添加环境变量,下面展示的环境变量是全部的变量,包括后面需要添加的grib、netcdf等等依赖库的环境变量。

理论上以下环境变量设置有多种方式;~/.bashrc文件中修改设置目的在于少开几次环境变量的文本,少一点麻烦;直接在shell中输入指令只在本次shell中生效,再一次打开shell中则失效。

输入以下命令:

sudo nano ~/.bashrc

说明:nano是一个文本编辑器,.bashrc环境变量文本

得到以下界面:
在这里插入图片描述

1.2 输入环境变量设置

方向键把光标移至最底部,目前在最上面
然后在最底层复制(很多路径还不存在,没事,后面慢慢创建):
其实大致的意思就,C编译器用gcc,fortran编译器用gfortran诸如此类的东西。

#系统前置设置
export DIR=/home/(这里请输入自己的用户名文件夹)/Build_WRF/LIBRARIES
export CC=gcc
export CXX=g++
export FC=gfortran
export CFLAGS='-m64'
export F77=gfortran
export FFLAGS='-m64'
export LD_LIBRARY_PATH=$DIR/grib2/lib:$LD_LIBRARY_PATH
# netcdf
export PATH=$DIR/netcdf/bin:$PATH
export NETCDF=$DIR/netcdf
# mpich
export PATH=$DIR/mpich/bin:$PATH
# zlib
export LDFLAGS=-L$DIR/grib2/lib
export CPPFLAGS=-I$DIR/grib2/include
# WPS
export JASPERLIB=$DIR/grib2/lib
export JASPERINC=$DIR/grib2/include

在这里插入图片描述
键入:ctrl+X 然后键入Y 回车
即可退出文本编辑器。

1.3 重新生效环境变量

输入以下命令:

source ~/.bashrc

在这里插入图片描述

2 构建第三方依赖库(Building Libraries)

以下5个库必须安装:

mpich-3.0.4
netcdf-c-4.7.2
netcdf-fortran-4.5.2
Jasper-1.900.1
libpng-1.2.50
zlib-1.2.11

注意:这些库必须与安装WRF和WPS所用的编译器安装在一起。

支持库用途
zlib-1.2.7zlib是提供数据压缩用的函式库,是WPS(后面会提到)必须库。
netcdf-4.1.3读nc文件的。
mpich-3.0.4用于并行运算的工具,为的就是并行处理WRF,意思就是如果计算机是单核的,可以不装,哈哈。
libpng-1.2.50libpng是一款C语言编写的比较底层的读写PNG文件的跨平台的库,需要zlib支持。编译具有 GRIB2 功能的 WPS(特别是 ungrib)所必需的压缩库。
Jasper-1.900.1也是图片库,编译具有 GRIB2 功能的 WPS(特别是 ungrib)所必需的压缩库。

2.0 支持库的下载

第一步:进入Build_WRF目录,并创建LIBRARIES文件,命令行如下:

cd Build_WRF
mkdir LIBRARIES

终端窗口如下:
在这里插入图片描述

第二步:下载第三方库
在Build_WRF文件目录下,依次输入以下五条命令:

wget https://www2.mmm.ucar.edu/wrf/OnLineTutorial/compile_tutorial/tar_files/zlib-1.2.7.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/netcdf-4.1.3.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

这样,在Build_WRF文件下面就有有五个压缩包。
终端窗口如下:
在这里插入图片描述
第三步:进入LIBRARIES文件夹
执行以下命令:

# 进入LIBRARIES文件夹
cd LIBRARIES

终端窗口如下:
在这里插入图片描述

2.1 netcdf的安装【必要】

说明:

  • 旧版本安装(此处安装的是4.1.3版本):还没有把netcdf-fortran和netcdf-c拆开
#4.1.3版本
tar zxvf netcdf-4.1.3.tar.gz
cd netcdf-4.1.3
./configure --prefix=$DIR/netcdf --disable-dap \
 --disable-netcdf-4 --disable-shared
make
make install
 
cd ..                           

运行各行命令,得到的终端窗口如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
成功安装netcdf库。

  • 新版本安装:先安装c再安装fortran
    注意,必须先成功安装netcdf-c,才能安装netcdf-fortran,顺序不能颠倒。
#c
tar -zxvf netcdf-c-4.7.4.tar.gz
cd netcdf-c-4.7.4
./configure --prefix=$DIR/netcdf LDFLAGS=-L$DIR/netcdf/lib CPPFLAGS=-I$DIR/netcdf/include --disable-dap
make
make check
make install
 
cd ..
#Fortran
tar -zxvf netcdf-fortran-4.5.3.tar.gz
cd netcdf-fortran-4.5.3
./configure --prefix=$DIR/netcdf CPPFLAGS=-I$DIR/netcdf/include LD_LIBRARY_PATH=$DIR/netcdf/lib:$LD_LIBRARY_PATH LDFLAGS=-L$DIR/netcdf/lib
make
make check
make install
 
cd ..

注意最后要退回Build_WRF目录下

2.2 Mpich安装【非必要】-并行

说明:

2.2.1 下载mpich-3.0.4版本

假设已经设置了NetCDF安装中的所有“setenv”命令,您可以继续使用安装Mpich的命令。执行以下命令:

tar xzvf mpich-3.0.4.tar.gz
cd mpich-3.0.4
./configure --prefix=$DIR/mpich
make
make install
 
cd ..                           

在这里插入图片描述
在这里插入图片描述

2.2.2 下载mpich-4.1.2版本

报错:

configure: error: The Fortran compiler gfortran will not compile files that call
the same routine with arguments of different types.

解决方案1:下载mpich-4.1.2版本
下载-Versions-MPICH
在这里插入图片描述

下载安装包后,拷贝至Build_WRF目录下,执行以下命令:

tar xzvf mpich-4.1.2.tar.gz
cd mpich-4.1.2
./configure --prefix=$DIR/mpich
make
make install
 
cd ..                           

终端窗口如下:
在这里插入图片描述
在这里插入图片描述
完成终端界面如下:
在这里插入图片描述

2.3 zlib的安装

说明:zlib用于编译具有GRIB2功能的WPS(特别是ungrib)所需的压缩库

假设已经设置了NetCDF安装中的所有“setenv”命令,您可以继续使用安装zlib的命令。执行以下命令:

tar xzvf zlib-1.2.7.tar.gz
cd zlib-1.2.7
./configure --prefix=$DIR/grib2
make
make install
 
cd ..                           

在这里插入图片描述

2.4 libpng的安装

说明:libpng用于编译具有GRIB2功能的WPS(特别是ungrib)所需的压缩库
假设已经设置了NetCDF安装中的所有“setenv”命令,您可以继续使用安装libpng的命令。执行以下命令:

tar xzvf libpng-1.2.50.tar.gz
cd libpng-1.2.50
./configure --prefix=$DIR/grib2
make
make install
 
cd ..                           

在这里插入图片描述
在这里插入图片描述

2.5 jasper的安装

说明:jasper用于编译具有GRIB2功能的WPS(特别是ungrib)所需的压缩库
假设已经设置了NetCDF安装中的所有“setenv”命令,您可以继续使用安装jasper的命令。

tar xzvf jasper-1.900.1.tar.gz
cd jasper-1.900.1
./configure --prefix=$DIR/grib2
make
make install
 
cd ..                           

在这里插入图片描述
在这里插入图片描述

2.6 hdf5的安装【非必要】

说明: 官方教程未给出这个库的安装,应该是非必要支持库,用于处理hdf5数据的。

HDF5的版本非常重要,这里选用hdf5-1.8.22 .tar.gz

若使用更早的版本如hdf5-1.8.10.tar.gz,则在编译时,.c文件中会出现//这种代码,是符合旧标准的注释代码,但是在新标准里被判定为错误,导致代码无法正常编译。即使依照报错,修改文件中的//,也会有下一个文件继续报这个错,本人改了三个文件后,不知道后边还有多少个,终止,选择其他版本。
若使用较新版本,如hdf5-1.14.3.tar.gz,
则在编译NETCDF4.1.3时,其会用到HDF5旧版的一个东西,但是新版没有这个东西,会导致报错,本人查了很久才知道是这么回事。

综上所述,选用hdf5-1.8.22 .tar.gz

1、下载安装包

wget https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.8/hdf5-1.8.22/src/hdf5-1.8.22.tar.gz

终端窗口如下:
在这里插入图片描述

2、编译安装hdf5:编译时间较长

tar -xvf hdf5-1.8.22.tar.gz
cd hdf5-1.8.22
./configure --prefix=$DIR/hdf5
make
make install
 
cd ..                           

编译完成终端界面如下:
在这里插入图片描述
此时,你的LIBRARIES下应该至少有grib2 mpich netcdf三个文件夹,这说明你的依赖包安装成功,可以开始下一步的操作。
在这里插入图片描述

3 库兼容性测试(Library Compatibility Tests)

该测试目的在于对安装完的依赖库兼容性做测试,验证这些库是否能够与用于WPS和WRF构建的编译器一起工作。

3.1 下载测试包

第一步:从Build_WRF目录转到TESTS目录下

# 先从Build_WRF目录转到TESTS目录下
cd TESTS

TESTS目录下文件如下:
在这里插入图片描述

第二步:下载测试包

# 下载测试包
wget https://www2.mmm.ucar.edu/wrf/OnLineTutorial/compile_tutorial/tar_files/Fortran_C_NETCDF_MPI_tests.tar

终端界面如下:
在这里插入图片描述

3.2 解压测试包

输入以下命令:

tar -xf Fortran_C_NETCDF_MPI_tests.tar

没有反应,没关系,继续就好了。

3.3 测试

3.3.1 Test #1 Fortran + C + 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

终端窗口如下:
在这里插入图片描述

3.3.2 Test #2 Fortran + C + NetCDF + MPI

依次输入以下命令:

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

终端窗口如下:
在这里插入图片描述

至此,WRF运行所需的第三方依赖库安装完成。

参考

1、WRF官方教程-Building Libraries
2、CSDN博客-WRF模型安装教程(ububtu系统)-- II.第三方依赖库安装
3、CSDN博客-小白跑WRF第三天,安装三方依赖库
4、hdf5版本选择-WRF安装教程,零基础轻松安装,草履虫上午看到这个教程,下午就安装成功了

  • 37
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WW、forever

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值