WIN10子系统Ubuntu 20.04.3 LTS
根据Compiling WRF教程,主要补充一些细节。
一.需要用到的文件
WRFV4.0.TAR.gz
WPSV4.0.TAR.gz
ARWpost_V3.tar.gz
二.环境测试
>> which gfortran
>> which cpp
>> which gcc
如果没有可以通过
>>sudo apt-get install gcc cpp gfortran
获取安装,再重复上面的测试。然后查看gcc版本
>> gcc -version
创建两个新文件夹Build_WRF和TESTS
>> mkdir Build_WRF
>> mkdir TESTS
进入TESTS
>> cd TESTS
下载测试文件
>> wget https://www2.mmm.ucar.edu/wrf/OnLineTutorial/compile_tutorial/tar_files/Fortran_C_tests.tar
解压测试文件
>> tar -xf Fortran_C_tests.tar
开始测试
测试一
>> gfortran TEST_1_fortran_only_fixed.f
>> ./a.out
应出现 SUCCESS test 1 fortran only fixed format
测试二
>> gfortran TEST_2_fortran_only_free.f90
>> ./a.out
应出现Assume Fortran 2003: has FLUSH, ALLOCATABLE, derived type, and ISO C Binding
SUCCESS test 2 fortran only free format
测试三
>> gcc TEST_3_c_only.c
>> ./a.out
应出现SUCCESS test 3 c only
测试四
>> 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
应出现C function called by Fortran
Values are xx = 2.00 and ii = 1
SUCCESS test 4 fortran calling c
测试五
>> ./TEST_csh.csh
应出现SUCCESS csh test
测试六
>> ./TEST_perl.pl
应出现SUCCESS perl test
测试七
>> ./TEST_sh.sh
应出现SUCCESS sh test
一些基本操作说明
>>cd .. 表示返回上一级文件夹
>>cd 表示返回该用户最上一级文件夹
>>ls 查看该目录下所有文件
三.装库
进入Build_WRF文件夹,新建LIBRARIES文件夹
>> cd Build_WRF
>> mkdir LIBRARIES
>> 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
>> wget https://www2.mmm.ucar.edu/wrf/OnLineTutorial/compile_tutorial/tar_files/zlib-1.2.7.tar.gz
>> wget https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.8/hdf5-1.8.22/src/hdf5-1.8.22.tar.gz
下载好后,先修改环境变量。首先打开.bshrc
>>sudo nano ~/.bashrc
在最下面输入
export DIR=/home/ming/Build_WRF/LIBRARIES 这里按照你自己的路径填,例如ming是我的用户名
export CC=gcc
export CXX=g++
export FC=gfortran
export CFLAGS=-m64
export F77=gfortran
export FFLAGS=-m64
关闭文件ctrl+X,并Y保存修改。使修改后的.bashrc文件生效
source ~/.bashrc
就可以开始安装库了
由于后面还要安装WRFDA,所以这里先装zlib hdf5 再安装netcdf mpich libpng jasper
首先安装zlib
>> tar xzvf zlib-1.2.7.tar.gz
>> cd zlib-1.2.7
>> ./configure --prefix=$DIR/grib2
>> make
>> make install
>> cd ..
然后安装hdf5
>> tar -xvf hdf5-1.12.0.tar.gz
>> cd hdf5-1.12.0
>> ./configure --prefix=$DIR/hdf5
>> make
>> make install
再安装netcdf
>> tar xzvf 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
>> nano ~/.bashrc
依旧在.bashrc文件的最下面添加
>> export PATH=$DIR/netcdf/bin:$PATH
>> export NETCDF=$DIR/netcdf
关闭文件ctrl+X,并Y保存修改
>> source ~/.bashrc
修改生效
>> cd ..
再安装mpich
>> tar xzvf mpich-3.0.4.tar.gz
>> cd mpich-3.0.4
>> ./configure --prefix=$DIR/mpich
>> make
>> make install
依旧打开.bashrc文件
>> export PATH=$DIR/mpich/bin:$PATH
后关闭并source
>> cd ..
再安装libpng
>> tar xzvf libpng-1.2.50.tar.gz
>> cd libpng-1.2.50
>> ./configure --prefix=$DIR/grib2
>> make
>> make install
>> cd ..
再安装Jasper
>> tar xzvf jasper-1.900.1.tar.gz
>> cd jasper-1.900.1
>> ./configure --prefix=$DIR/grib2
>> make
>> make install
>> cd ..
四.测试库
进入TESTS文件夹
>> cd
>> cd TESTS
>> wget https://www2.mmm.ucar.edu/wrf/OnLineTutorial/compile_tutorial/tar_files/
Fortran_C_NETCDF_MPI_tests.tar
>> 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
应出现C function called by Fortran
Values are xx = 2.00 and ii = 1
SUCCESS test 1 fortran + c + netcdf
测试二
>> 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
应出现 C function called by Fortran
Values are xx = 2.00 and ii = 1
status = 2
SUCCESS test 2 fortran + c + netcdf + mpi
五.WRF
首先将下载好的WRFV4.0.TAR.gz放在Build_WRF文件夹下。可以直接通过windows窗口下的c盘,在文件资源管理器上方地址栏输入\\wsl$直达ubuntu,ubuntu下的/home里可以找到用户名文件夹,用户名文件夹里可以找到Build_WRF和TESTS文件夹。
直接解压WRFV4.0.TAR.gz
>> tar xzvf WRFV4.0.TAR.gz
>> cd WRF
>> ./configure
>> ./compile em_real >& log.compile 这里em_real还可以换成其他的em_quarter_ss、em_b_wave等等,详见参考文档,这里以em_real为例
>> ls -ls main/*.exe
应出现
wrf.exe
real.exe
ndown.exe
tc.exe
六.WPS
和WRF一样,在同一级目录解压,即在用户名文件夹下的Build_WRF里同时存在WRF和WPS文件夹。
解压后,先找到WPS文件夹下的/ungrib/src/ngl/g2/intmath.f文件,将其中的172行改为
iand(i,i-1_2)/=0 207行改为iand(i,i-1_1)/=0,或直接下载我的intmath.f文件替换原文件
链接:https://pan.baidu.com/s/1aYT8lzbQPfjLVBvHMh1ThA
提取码:1234
>> cd WPS
>> ./clean
进入.bashrc文件
>> export JASPERLIB=$DIR/grib2/lib
>> export JASPERINC=$DIR/grib2/include
退出并保存.bashrc文件,并source
>> ./configure
>> 1
>> ./compile >& compile.log &
>> tail -f compile.log
ctrl+c结束进程
>> ls -las *.exe
应出现三个可执行文件,类似:
0 lrwxrwxrwx 1 ming ming 23 Sep 9 16:26 geogrid.exe -> geogrid/src/geogrid.exe
0 lrwxrwxrwx 1 ming ming 23 Sep 9 16:26 metgrid.exe -> metgrid/src/metgrid.exe
0 lrwxrwxrwx 1 ming ming 21 Sep 9 16:26 ungrib.exe -> ungrib/src/ungrib.exe
七.地理数据
在Build_WRF文件夹下下载地理数据,下载地址http://www2.mmm.ucar.edu/wrf/src/wps_files/geog_10m.tar.gz
>> tar -zxvf geog_10m.tar.gz
>> mv geog WPS_GEOG mv表示更改文件夹名字,这里是将geog改为WPS_GEOG
再进入WPS文件夹修改namelist.wps文件
>> cd WPS
>> nano namelist.wps
将namelist.wps中的把geog_data_path = '/glade/p/work/wrfhelp/WPS_GEOG/'改成geog_data_path = '/home/你的用户名/Build_WRF/WPS_GEOG/'
八.ARW
在Build_WRF文件夹下解压ARWpost_V3.tar.gz
>> tar -zxvf ARWpost_V3.tar.gz
>> cd ARWpost/ 进入ARWpost文件夹
>> ls -las 查找所有文件
在ARWpost文件夹下
>> ./configure
Enter selection [1-3] : 3 这里选择3
在ARWpost文件夹下的src文件夹里修改Makefile文件
>> cd src/
>> nano Makefile
将Makefile文件中的
CPP = /lib/cpp -C -P -traditional 改成 CPP = /lib/cpp -P -traditional
-L$(NETCDF)/lib -I$(NETCDF)/include -lnetcdf 改成
-L$(NETCDF)/lib -I$(NETCDF)/include -lnetcdff -lnetcdf
再到ARWpost目录下修改configure.arwp文件
>> cd .. 由于上一步再src文件夹下,这里退出到ARWpost下
>> nano configure.arwp
将CPP = /lib/cpp -C -P -traditional 修改为 CPP = /lib/cpp -P -traditional
CFLAGS = -m64 修改为 CFLAGS = -fPIC -m64
一样的ctrl+x退出 Y保存
>> ./compile
>> ls -ls *.exe
最后应当生成 ARWpost.exe