最近从新把WRF学习提上事宜,因此开始从新鼓捣WRF。 因为WRF-DA的运行须要依赖WPS程序,这里就填下以前两篇WRF-DA模块编译中挖的坑。即WRF主程序的编译与安装。若是不太清楚的WRF与WRF-DA相关的能够去翻下前两篇博客。php
博客地址git
最近原本准备换VitualBox来玩虚拟机,结果不当心玩脱了,把以前编译安装好WRF-DA模块的Ubuntu系统删除了,因此只好重头再来了。因此这回我是从WRF主程序等一一安装完,最后再来安装WRF-DA模块。不过这一次按照网上原来的教程装了好屡次都失败了,不得已之下,我去请教了WRF官方邮箱。他们给我提供了一份官方安装教程,结果一次成功。这里介绍下这份教程的过程。github
首先对编译须要的gfortran,cpp,gcc检查是否安装,版本是否匹配。测试
which gfortran which cpp which gcc gfortran --version gcc --version g++ --version
能显示路径说明已安装,版本检查也未出现。 能够发现gfortran并未安装。ui
apt install gfortran
接下来在安装WRF的文件夹下建立两个文件夹。一个是Build_WRF,一个是TESTS。 而后下载Fortran and C Tests Tar File文件,并放入TESTS文件夹下,对编译器作测试。 解压完毕。code
一共有7个测试。 首先是对Fortran和C的编译器作测试。教程
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
接下来测试下csh,perl,sh是否可行。ip
./TEST_csh.csh ./TEST_perl.pl ./TEST_sh.sh
能够发现csh测试不经过。解决方案为安装tcsh。get
apt install tcsh
安装完,测试经过。
首先在Build_WRF文件夹下面建立一个LIBRARIES的文件夹。而后下载所需的依赖库。
mpich-3.0.4 netcdf-4.1.3 Jasper-1.900.1 libpng-1.2.50 zlib-1.2.7
把这些压缩包所有放到LIBRARIES下面。
接着设置环境变量开始安装。
这里用的是4.1.3版本的netcdf,这个版本尚未把netcdf-fortran和netcdf-c拆开。比较新的版本已经把两者拆开了,新版本则必须两个都安装。
exprot DIR=/home/Build_WRF/LIBRARIES export CC=gcc export CXX=g++ export FC=gfortran export FCFLAGS=-m64 export F77=gfortran export FFLAGS=-m64 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 export PATH=$DIR/netcdf/bin:$PATH export NETCDF=$DIR/netcdf
虽然网上有不少教程要求先安装zllib和hdf5后安装netcdf,可是我决定按官方教程走走看。
若是不须要并行运算,能够不安装这个库。这里仍是安装一下。
tar xzvf mpich-3.0.4.tar.gz cd mpich-3.0.4 ./configure --prefix=$DIR/mpich make make install export PATH=$DIR/mpich/bin:$PATH
export LDFLAGS=-L$DIR/grib2/lib export CPPFLAGS=-I$DIR/grib2/include tar xzvf zlib-1.2.7.tar.gz cd zlib-1.2.7 ./configure --prefix=$DIR/grib2 make make install
tar xzvf libpng-1.2.50.tar.gz cd libpng-1.2.50 ./configure --prefix=$DIR/grib2 make make install
tar xzvf jasper-1.900.1.tar.gz cd jasper-1.900.1 ./configure --prefix=$DIR/grib2 make make install
接下来对安装完的依赖库兼容性作测试。 测试文件
tar -xf Fortran_C_NETCDF_MPI_tests.tar 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
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的源码,放在Build_WRF里面。 WRF3.9.1
gunzip WRFV3.9.1.1.TAR.gz tar -xf WRFV3.9.1.1.TAR cd WRFV3 ./configure
须要安装m4。
apt-get install m4
接着configure一下,出现以下界面。
选择34和1。
./compile em_real >& log.compile
接下来只要等待编译完成了。 用下面的语句检查是否生成exe。
ls -ls main/*.exe
接下来就是编译WPS。
gunzip WPSV3.9.1.TAR.gz tar -xf WPSV3.9.1.TAR cd WPS ./clean export JASPERLIB=$DIR/grib2/lib export JASPERINC=$DIR/grib2/include ./configure
出现以下界面
选择3,而后运行以下命令编译。
WRF_DIR = ../WRFV3 ./compile >& log.compile
上述的exe出现且不为红色能够初步认为编译安装成功。如何运行WRF后面再介绍。