本文是我在自己安装WRF和WPS的时候一边安装一遍撰文写下来的,保证其可行性,且每一步都有截图,小伙伴们跟着步骤一定可以成功。
本文参考了https://developer.aliyun.com/article/634880的博文,由于该博主是17年发的帖子,当时版本是WRF3.9.1,对于4.0以后的版本有一些小变动,因此我对其进行了一个更新完善。感谢该博主对我的帮助!
文中提到的源代码在最后我都会给出百度云链接或者源网址,请放心安装!
- 系统环境测试
首先对编译需要的gfortran,cpp,gcc检查是否安装,版本是否匹配。
which gfortran
which cppwhich gcc
gfortran --version
gcc --versiong++ --version
能显示路径说明已安装,版本检查也未出现。
接下来在安装WRF的文件夹下创建两个文件夹。一个是Build_WRF,一个是TESTS。
然后下载Fortran and C Tests Tar File文件,并放入TESTS文件夹下,对编译器做测试。解压完毕。
一共有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是否可行。
./TEST_csh.csh
./TEST_perl.pl
./TEST_sh.sh
显示7个绿色的success就说明测试通过。
- 安装依赖库
首先在Build_WRF文件夹下面创建一个LIBRARIES的文件夹。然后下载所需的依赖库。mpich-3.0.4,netcdf-4.1.3,Jasper-1.900.1,libpng-1.2.50,zlib-1.2.7(文末给链接)
把这些压缩包全部放到LIBRARIES下面。
接着设置环境变量开始安装。
1.netcdf安装
这里用的是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
这里注意要在你的LIBRARIES目录下进行,并修改第一个export的路径(一定要复制全LIBRARIES的路径,不然会跳很多error,导致安装失败!)
出现这个界面说明安装成功
2.mpich安装
如果不需要并行运算,可以不安装这个库。这里还是安装一下。
tar xzvf mpich-3.0.4.tar.gz
cd mpich-3.0.4
./configure --prefix=$DIR/mpich
make
make installexport PATH=$DIR/mpich/bin:$PATH
这里注意要返回你的LIBRARIES目录下进行
结果没有跳error就可以啦
3.zlib安装
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
这里注意要返回你的LIBRARIES目录下进行
结果没有跳error就可以啦
4.libpng安装
tar xzvf libpng-1.2.50.tar.gz
cd libpng-1.2.50
./configure --prefix=$DIR/grib2
make
make install
这里注意要返回你的LIBRARIES目录下进行
结果没有跳error就可以啦
5.jasper安装
tar xzvf jasper-1.900.1.tar.gz
cd jasper-1.900.1
./configure --prefix=$DIR/grib2
make
make install
这里注意要返回你的LIBRARIES目录下进行
结果没有跳error就可以啦
- 依赖库兼容性测试
接下来对安装完的依赖库兼容性做测试。测试文件为Fortran_C_NETCDF_MPI_tests.tar(官网可下载,文末给链接)
- Fortran+C+NetCDF
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
结果显示success则通过
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
结果显示success则通过。
- 编译WRF
从WRF4.0版本之后,源代码集成到了github上,不需要像以往一样下载安装包了,我们可以直接使用命令行拷贝代码。进入LIBRARIES下,
git clone https://github.com/wrf-model/WRF
git clone https://github.com/wrf-model/WPS
这时候就可以发现WRF和WPS已经出现在你的Build_WRF下。如果是学校大型机不能连通Internet的情况下,则自行下载后上传!上传之后进行解压编译。
unzip WRF-master.zip
cd WRF-master
./configure
选择34,后选择1
成功后执行以下命令(需等待大概半小时)
./compile em_real >& log.compile
完成后输入
ls -ls main/*.exe
结果出现4个exe文件,那么恭喜你WRF就安装成功啦!
- 编译WPS
同样的回到Build_WRF目录下,进行WPS的解压
unzip WPS-master.zip
cd WPS-master
./clean
export JASPERLIB=$DIR/grib2/lib
export JASPERINC=$DIR/grib2/include
export WRF_DIR=../WRF-master
./configure
这里我们选择3,然后出现successful说明一切顺利!
然后运行如下命令进行编译:
./compile >& log.compile
完成后输入以下命令检查:
ls -ls *.exe
结果出现3个exe文件,那么恭喜你WPS安装成功啦!
文中用到的压缩包在这里:https://pan.baidu.com/s/1iLXPJRsqhOtHas--YUYQ_Q 提取码146g
小伙伴们也可以到WRF官网自行下载:
https://www2.mmm.ucar.edu/wrf/users/download/get_sources_new.php