WRF 编译

Jun 3, 2019

WRF 编译

这里使用wrf3.9 版本为例

1. 下载wrf3.9包

官网:http://www2.mmm.ucar.edu/wrf/users/downloads.html
包名:WRFV3.9.TAR.gz

2. 编译环境

[root@redhat36 ~]# cat /etc/redhat-release
Red Hat Enterprise Linux Server release 6.5 (Santiago)

3. 依赖包

jasper-1.900.1.tar.gz
libpng-1.2.50.tar.gz
zlib-1.2.8.tar.gz
hdf5-1.8.13.tar.gz
mpich-3.2.1.tar.gz
netcdf-4.1.3.tar.gz

  1. 将所有包放在一个目录:例如 /home/renwei, 并在该目录下创建目录 all(用户存放所有依赖包编译安装后的文件,放在同一个目录便于管理,也可以放在不同目录)
  2. 安装依赖包
    可以先使用命令查看包是否已经安装:rpm -qa|grep jasper

    jasper

    1
    2
    3
    4
    tar zxzvf jasper-1.900.1.tar.gz
    cd jasper-1.900.1
    ./configure --prefix=/home/renwei/all
    make && make install

libpng

1
2
3
4
tar zxzvf libpng-1.2.50.tar.gz
cd libpng-1.2.50
./configure --prefix=/home/renwei/all
make && make install

zlib

1
2
3
4
tar zxzvf zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure --prefix=/home/renwei/all
make && make install

hdf5

1
2
3
4
tar zxzvf hdf5-1.8.13.tar.gz
cd hdf5-1.8.13
./configure --prefix=/home/renwei/all --with-zlib=/home/renwei/all --enable-fortran
make && make install

mpich

1
2
3
4
tar zxzvf mpich-3.2.1.tar.gz
cd mpich-3.2.1
./configure --prefix=/home/renwei/all
make && make install

创建环境变量文件 env.sh

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#netcdf4.4
export NETCDF=/home/renwei/all
export HDF5=/home/renwei/all
export PATH=$NETCDF/bin:$PATH
export LD_LIBRARY_PATH=$NETCDF/lib:$LD_LIBRARY_PATH
export CPPFLAGS='-I/home/renwei/all/include'
export CFLAGS='-I/home/renwei/all/include'
export LDFLAGS='-L/home/renwei/all/lib'
export CC=gcc
export CXX=g++
export FC=gfortran
export FCFLAGS=-m64
export F77=gfortran
export FFLAGS=-m64

netcdf

这里用的是4.1.3版本的netcdf,这个版本还没有把netcdf-fortran和netcdf-c拆开。比较新的版本已经把二者拆开了,新版本则必须两个都安装。

1
2
3
4
5
tar zxzvf netcdf-4.1.3.tar.gz
source env.sh
cd netcdf-4.1.3
./configure --prefix=/home/renwei/all --disable-dap
make && make install

如果出现不能找到 CC / FC, 则可以手动创建软连接

1
2
ln -s /usr/bin/gcc CC
ln -s /usr/bin/gfortran FC

4. 编译WRF

1
2
3
tar -zxvf WRFV3.9.TAR.gz
cd WRFV3
./configure

选择 34 和 1 . 执行

1
./compile em_real

build 完成后会产生 run目录。里面存放编译出来的 wrf.exe 和 real.exe.

5. 打包和使用

将 /home/renwei/all目录和 /home/renwei/WRFV3/run目录所有内容拷贝出来,则为wrf的运行环境
执行 wrf.exe / real.exe 前 设置 LD_LIBRARY_PATH 指向 all目录下的lib目录即可。

问题:

  1. 如果编译出现 找不到 librsl_lite.a, 则进入/home/renwei/WRFV3/external/RSL_LITE目录,手动编译试试
    如果不行,则打开makefile, 注释掉 CFLAGS、CPPFLAGS, 如下

    1
    2
    3
    4
    5
    6
    7
    8
    9
    OBJSL   = c_code.o buf_for_proc.o rsl_malloc.o rsl_bcast.o task_for_point.o period.o swap.o cycle.o f_pack.o f_xpose.o
    OBJS = $(OBJSL)
    OPTS =
    FFLAGS = $(OPTS)
    LIBS =
    M4 = m4 -Uinclude -Uindex -Ulen
    AR = ar
    #CFLAGS =
    #CPPFLAGS =
  2. 如果出现 “f_xpose.F90:22: Error: Can’t open included file ‘mpif.h’”,则手动执行以下命令

    1
    gfortran -I/home/renwei/netcdf413/include -o f_xpose.o  -c f_xpose.F90