WRF安装第三期:搭建WRF编译所需系统-第三方依赖库安装
- 1 设置环境变量
- 1.0 支持库的下载
- 1.1 打开环境变量文本
- 1.2 输入环境变量设置
- 1.3 重新生效环境变量
- 2 构建第三方依赖库(Building Libraries)
- 2.0 进入LIBRARIES文件夹
- 2.1 netcdf的安装【必要】
- 2.2 Mpich安装【非必要】-并行
- 2.3 zlib的安装
- 2.4 libpng的安装
- 2.5 jasper的安装
- 2.6 hdf5的安装【非必要】
- 3 库兼容性测试(Library Compatibility Tests)
- 3.1 下载测试包
- 3.2 解压测试包
- 3.3 测试
- 3.3.1 Test #1 Fortran + C + NetCDF
- 3.3.2 Test #2 Fortran + C + NetCDF + MPI
- 参考
1 设置环境变量
根据前一博客所述-【WRF安装第二期(Ubuntu)】搭建WRF编译所需系统-系统环境检验,WRF安装的目录结构如下:
Build_WRF
|-- TESTS
|-- LIBRARIES
|-- WPS
|-- WRF
|–DATA(输入场数据,位置可自选)
|-- GEOG(地表静态数据,位置可自选)
1.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文件下面就有有五个压缩包。
在构建库之前,以下路径需要设置:
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 输入环境变量设置
#系统前置设置
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
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.7 | zlib是提供数据压缩用的函式库,是WPS(后面会提到)必须库。 |
netcdf-4.1.3 | 读nc文件的。 |
mpich-3.0.4 | 用于并行运算的工具,为的就是并行处理WRF,意思就是如果计算机是单核的,可以不装,哈哈。 |
libpng-1.2.50 | libpng是一款C语言编写的比较底层的读写PNG文件的跨平台的库,需要zlib支持。编译具有 GRIB2 功能的 WPS(特别是 ungrib)所必需的压缩库。 |
Jasper-1.900.1 | 也是图片库,编译具有 GRIB2 功能的 WPS(特别是 ungrib)所必需的压缩库。 |
2.0 进入LIBRARIES文件夹
执行以下命令:
# 进入Build_WRF文件夹
cd Build_WRF
# 创建LIBRARIES文件夹
mkdir LIBRARIES
# 进入LIBRARIES文件夹
cd LIBRARIES
2.1 netcdf的安装【必要】
说明:
- 旧版本安装:还没有把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 ..
- 新版本安装:先安装c再安装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安装【非必要】-并行
说明:
假设已经设置了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.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数据的。
wget https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.8/hdf5-1.8.22/src/hdf5-1.8.22.tar.gz
tar -xvf hdf5-1.8.22.tar.gz
cd hdf5-1.8.22
./configure --prefix=$DIR/hdf5
make
make install
cd ..
3 库兼容性测试(Library Compatibility Tests)
该测试目的在于对安装完的依赖库兼容性做测试,验证这些库是否能够与用于WPS和WRF构建的编译器一起工作。
3.1 下载测试包
第一步:从Build_WRF目录转到TESTS目录下
# 先从Build_WRF目录转到TESTS目录下
cd 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、小白跑WRF第三天,安装三方依赖库