WRF 入门
安装:
官网指南 compilation_tutorial
Installing and running WRF 3.8 on Linux Ubuntu LTS 16.04 with Intel i7 4-core (8-threads) cpu
视频教程:youtobe
日本https://sites.google.com/site/afcwrf/home
教程:WRF 3.9.1.1 在Ubuntu16.04 LTS 下的安装包括Chem kpp (气象家园转)
64位win7和ubuntu16.04LTS双系统下安装WRF 3.9.1.1 (WPS, WRFV, WRFDA, WRF_Chem)
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
首先先感谢 几位大神,以及我所参考的好多个帖子。吃水不忘挖井人,在此一一感谢。
小其其格及其帖子
(http://bbs.06climate.com/forum.php?mod=viewthread&tid=55032&extra=page%3D1)
ljh110011及其帖子
(http://bbs.06climate.com/forum.php?mod=viewthread&tid=33557)
Lrxwisdom及其帖子
(http://bbs.06climate.com/forum.php?mod=viewthread&tid=37339)
科研菜鸟(博客地址http://blog.sciencenet.cn/u/sanshiphy)
南方黑芝麻糊(发自内心的感谢这位超级大神!!,耐心回答了我很多问题)
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
所有软件的版本介绍
系统:Ubuntu 16.04 LTS(cat /etc/issue 查看)
WRF:V3.9.1.1 (WRFV3.9.1.1.TAR.gz;WRFV3-Chem-3.9.1.TAR.gz;WPSV3.9.1.TAR.gz;WRFDA_V3.9.1.tar.gz; WRFDomainWizard)
NETCDF (NetCDF-C V4.4.1; NetCDF-FORTRAN V4.4.4)
HDF5: V1.8.18; NCL: V6.4.0
库函数:zlib: V1.2.10;Jasper: V1.900.1 (要是版本过高会不生成ungrid.exe, 也有解决办法,后文提到) ; PNG:V1.6.26;Libjpeg.v9a
gcc 5.4.0 g++ 5.4.0 gfortran 5.4.0
byacc.1.9.tar.Z wgrib2.tgz
所有的软件都已经打包了好了,也是给自己以后留一个备份。
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Win&Ubuntu双系统
/boot, LinuxUUniversal_USB_Installer一定要首先更新一下系统,并且把所有的package都修复啦!
sudo apt-get upgrade
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
安装编译工具
1)进入Ubuntu后,打开左侧ubuntuSoftware,查找”新立得软件包管理器(synaptic)”,点击安装,然后等待自行完成。
2)perl(version 5 or later) (perl –v)
3)C shell(csh), Bourne shell (sh),这两个可以被tcsh兼容,所以只需安装tcsh
awk (which awk 若是usr/bin/awk返回,则说明OK)
4)接下来
apt-get install tcsh samba cpp m4 quota
tcsh --version
samba --version
cpp --version
m4 –version
检查是否成功
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
安装WRF编译工具
1)首先判断gcc,g++,gfortran版本是否一致
gcc --version
g++ --version
gfortran –version
基本上gfortran是没有的,然后正常安装即可
apt-get install gfortran
之后再检查一遍这三个是否一样。Ubuntu16.04里面这三个都是5.4.0版本的。
2)根据小其其格的说法,需要重新连接一遍,不然会寻址不到。
【重新链接gcc,g++,gfortran】
1.建立备份文件夹:
mkdir /usr/bin/gccbackup
mkdir /usr/bin/g++backup
mkdir /usr/bin/gfortranbackup
2.先将原来的链接改名,终端输入:
mv /usr/bin/gcc /usr/bin/gccbackup
mv /usr/bin/g++ /usr/bin/g++backup
mv /usr/bin/gfortran /usr/bin/gfortranbackup
3.重新链接
ln -s /usr/bin/gcc-5 /usr/bin/gcc
ln -s /usr/bin/gfortran-5 /usr/bin/gfortran
ln -s /usr/bin/g++-5 /usr/bin/g++
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
安装NetCDF
NetCDF的安装需要有HDF5lib,而HDF5的安装需要先有zlib和curl。所以先要安装zlib和curl。本人将zlib,curl, jpeg, png. Jasper 一起安装了,并且建立了一个JASPER文件夹将这几个lib与include都放在一起,方便后期的环境设置。
打开synaptic,点击搜索,输入libjpeg8,然后libjpeg8-dbg/libjpeg8-dev选项,前面没有打钩的。双击打钩标记,标记后会变绿色,点击应用,然后安装。
同理输入glibc,然后就会看到结果有三个红点的glibc选项,也apply。
同理输入grib2,然后就会看到结果有libgrib2c-dev/libgrib2c0d选项,也apply。
开始安装各个小东西
第一步解压,把下载好的都解压了,我这里是解压到/usr/local/src,安装完可以删除
tar -zxf zlib-1.2.10.tar.gz -C /usr/local/src
tar -zxf jpegsrc.v9a.tar.gz -C /usr/local/src
tar -zxf libpng-1.6.26.tar.gz -C /usr/local/src
tar -zxf jasper-1.900.1.zip -C /usr/local/src
接下来就是各种安装了
1. zlib
cd /usr/local/src/zlib-1.2.10/
./configure --prefix=/usr/local/zlib
make
make check
make install
2. curl
apt-get install curl
3. jpeg-9a
cd /usr/local/src/ jpeg-9a
./configure --prefix=/usr/local/libjpeg
make
make install
4. libpng
cd /usr/local/src/libpng-1.6.26
export LDFLAGS=-L/usr/local/zlib/lib
export CPPFLAGS=-I/usr/local/zlib/include
./configure --prefix=/usr/local/libpng
make
make install
5. jasper-1.900.1
cd /usr/local/src/jasper-1.900.1
. /configure --prefix=/usr/local/jasper
make
make install
我安装的是1.9,因为高版本在后面可能出现不了ungrib.exe
根据科研菜鸟理论 高版本的Jasper需要修改jas_image.h文件
cd /usr/local/jasper/include/jasper/
gedit jas_image.h(找到bool inmem_; 将前面的“//“去掉)
配置环境变量
mkdir /usr/local/JASPER
mkdir /usr/local/JASPER/lib
mkdir /usr/local/JASPER/include
cp -r /usr/local/zlib/lib/* /usr/local/JASPER/lib
cp -r /usr/local/libpng/lib/* /usr/local/JASPER/lib
cp -r /usr/local/jasper/lib/* /usr/local/JASPER/lib
cp -r /usr/local/zlib/include/* /usr/local/JASPER/include
cp -r /usr/local/libpng/include/* /usr/local/JASPER/include
cp -r /usr/local/jasper/include/* /usr/local/JASPER/include
gedit ~/.bashrc
在最后添加下面路径指向:
#for zlib
export ZLIB_HOME=/usr/local/zlib
export LD_LIBRARY_PATH=$ZLIB_HOME/lib:$LD_LIBRARY_PATH
#for libpng
export ZLIB_HOME=/usr/local/libpng
export LIBPNGLIB=/usr/local/libpng/lib
export LIBPNGINC=/usr/local/libpng/include
#set JASPER
export JASPER=/usr/local/JASPER
export JASPERLIB=/usr/local/JASPER/lib
export JASPERINC=/usr/local/JASPER/include
保存后退出
source ~/.bashrc
要是保存不了,就 chmod 修改一下你的权限吧
(JASPER的两个文件夹下分别有15个和7个文件)
安装配置hdf5
tar-xf hdf5-1.8.18.tar -C /usr/local/src
cd /usr/local/src/hdf5-1.8.18
./configure --prefix=/usr/local/HDF5 --with-zlib=/usr/local/zlib
make (会有很多警告,但是不影响)
make check
make install
make check-install
时间稍长
gedit ~/.bashrc
在最后添加下面:
# for hdf5
export CPPFLAGS=-I$PRO_PATH/usr/local/HDF5/include
export LDFLAGS=-L$PRO_PATH/usr/local/HDF5/lib
export LD_LIBRARY_PATH=$PRO_PATH/usr/local/HDF5/lib
保存后退出。
source ~/.bashrc
安装NetCDF-C
tar -zxf netcdf-c-4.4.1.tar.gz -C /usr/local/src
cd /usr/local/src/netcdf-c-4.4.1/
export CPPFLAGS=-I/usr/local/HDF5/include
export LDFLAGS=-L/usr/local/HDF5/lib
export LD_LIBRARY_PATH=$/usr/local/HDF5/lib
./configure --prefix=/usr/local/NETCDF --disable-netcdf-4
make
make check
make install
然后安装好。
安装NetCDF -fortran
tar -xzf netcdf-fortran-4.4.4.tar.gz -C /usr/local/src
cd /usr/local/src/netcdf-fortran-4.4.4/
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/local/NETCDF/lib
export CPPFLAGS=-I/usr/local/NETCDF/include
export LDFLAGS=-L/usr/local/NETCDF/lib
./configure --prefix=/usr/local/NETCDF FC=gfortran
make
make check
make install
接着设置环境变量
gedit ~/.bashrc
在最后添加下列语句:
#for netcdf
export PATH=/usr/local/NETCDF/bin:$PATH
export LD_LIBRARY_PATH=/usr/local/NETCDF/lib:$LD_LIBRARY_PATH
保存后退出
source ~/.bashrc
安装NCL
mkdir /usr/local/ncarg
tar -zxf ncl_ncarg-6.4.0.Linux_Debian8.6_x86_64_gnu492.tar.gz -C /usr/local/ncarg/
cd /usr/local/ncarg
gedit ~/.bashrc
在最后添加下列语句:
#for ncarg
Export NCARG_ROOT=/usr/local/ncarg
Export PATH=$NCARG_ROOT/bin:$PATH
Export MANPATH=$NCARG_ROOT/man:$MANPATH
Export DISPLAY=:0.0
export WRFIO_NCD_LARGE_FILE_SUPPORT=1(这一句用于WRF输出大数据)
保存后退出
source ~/.bashrc
检验NCL是否成功安装,新终端输入:
ncargversion
安装wgrib2
cd /usr/local
tar –zxvf wgrib2.tgz
cd grib2
export CC=gcc
export FC=gfortran
make
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
安装WRF
mkdir /home/yourname/model/
gedit ~/.bashrc
# for WRF
export JASPERLIB=/usr/local/JASPER/lib
export JASPERINC=/usr/local/JASPER/include
export NETCDF=/usr/local/NETCDF
source ~/.bashrc
tar -xzf WRFV3.9.1.1.TAR.gz -C /home/yourname/models
这时在/model出现了WRFV3的文件,进入WRFV3里面的arch文件夹,找到Config_new.pl文件,打开后,找到下面这句并做如下修改:
$I_really_want_to_output_grib2_from_WRF= "TRUE" ;
对应下面几行,找到并修改:
$sw_jasperlib_path= "/usr/local/JASPER/lib";
$sw_jasperinc_path= "/usr/local/JASPER/include";
保存后退出。
cd /home/yourname/models/WRFV3/
./configure
选择gcc、gfortran、serial那一行(第32项),输入:32,回车
在arch文件夹里面找到configure_new.defaults,打开,找到这一部分
#ARCH x86_64 Linux, gfortran compiler withgcc #serial smpar dmpar dm+sm
找到下面几行,做如下修改:
FORMAT_FIXED = -ffixed-form -cpp
FORMAT_FREE = -ffree-form -cpp -ffree-line-length-none
保存后退出。
在WRFV3目录下找到configure.wrf文件并打开,做如下修改:(同上)
FORMAT_FIXED = -ffixed-form -cpp
FORMAT_FREE = -ffree-form -cpp -ffree-line-length-none
保存后退出。
./compile em_real >&checkwrf.log
ls -ls main/*.exe
查看 main目录下若有 ndwon.exe\real.exe\wrf.exe\tc.exe,编译成功。若未编译成功,在 checkwrf.log中查看是否有 error,修正 error后,用./clean -a清除前次编译后,重新编译。
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
安装KPP
chongzika,如果您要查看本帖隐藏内容请回复
Flex:
mkdir /usr/local/flex
cd /usr/local/flex
tar -xzf flex.tar.gz
cd flex-2.5.3
./configure --prefix=/usr/local/flex
make
make install
Yacc:
gzip -d byacc.1.9.tar.Z
mkdir /usr/local/yacc
tar -xf byacc.1.9.tar -C /usr/local/yacc
make
gedit ~/.bashrc
# for chem
export WRF_CHEM=1 (编译 WRF_Chem)
export WRF_KPP=1(安装 KPP,0 表示不安装 KPP,若不安装 KPP,下面的环境变量不需要设置)
export PATH=/usr/local/yacc:$PATH
export PATH=/usr/local/flex/bin:$PATH
export YACC='/usr/local/yacc/yacc -d'
export FLEX=/usr/local/flex/bin/flex
export FLEX_LIB_DIR=/usr/local/flex/lib
source ~/.bashrc
设置前利用 which flex 和 which yacc 查一下系统原来是否安装有 flex/yacc 其它版本。如果有,必须在 PATH 路径中加入自己安装的 flex/yacc 执行程序路径,如上面标黄部分所示。
WRF-Chem
tar –xzf WRFV3-Chem-3.9.1.TAR.gz -C /home/yourname/models/WRFV3
打开WRF-Chem下的arch文件夹,找到Config_new.pl,打开并做如下修改:(同WRF)
$I_really_want_to_output_grib2_from_WRF = "TRUE" ;
对应下面几行,找到并修改:
$sw_jasperlib_path = "/usr/local/JASPER/lib";
$sw_jasperinc_path = "/usr/local/JASPER/include";
保存后退出。
cd /home/yourname/models/WRFV3
./clean -a (删除以前的 WRF 编译)
./configure
./compileem_real >&checkwrf.log
ls -ls main/*.exe
查看 main 目录下若有 ndwon.exe\real.exe\wrf.exe\tc.exe,编译成功
若未编译成功,在 checkwrf.log 中查看是否有 error,修正 error 后,用./clean -a 清除前次编译后,重新编译.
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
安装WPS
WRFV3 和WPS 必须在同一个父目录下。
tar -xzf WPSV3.9.1.1.TAR.gz -C /home/yourname/models/
cd /home/yourname/models/WPS
打开WPS下的arch文件夹,找到configure.defaults,打开,找到这一部分:
#ARCH Linux x86_64, gfortran # serial serial_NO_GRIB2 dmpardmpar_NO_GRIB2
在这部分里面做如下修改:
COMPRESSION_LIBS = -L/usr/local/JASPER/lib -ljasper -lpng -lpng16 -lz
COMPRESSION_INC = -I/usr/local/JASPER/include
FFLAGS =-ffree-form -cpp -O-fconvert=big-endian-frecord-marker=4
F77FLAGS =-ffixed-form -cpp -O -fconvert=big-endian-frecord-marker=4
保存后退出。
找到preamble文件,打开做如下修改:
WRF_DIR = /home/yourname/model/WRFV3
编辑环境信息
gedit ~/.bashrc
# for WPS
export JASPERLIB=/usr/local/JASPER/lib
export JASPERINC=/usr/local/JASPER/include
export LD_LIBRARY_PATH=/usr/local/jasper/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/local/libpng/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH=/usr/local/zlib/lib:$LD_LIBRARY_PATH
source ~/.bashrc
./configure
./compile > checkwps.log
ls -ls *.exe
检查当前目录中(/home/models/WPS)是否有名为geogrid.exe\ungrib.exe\metgrid.exe的链接文件,若有,编译成功。
ls -ls util/*.exe
检查当前目录中是否有如下exe,编译成功:
avg_tsfc.exe g1print.exeheight_ukmo.exe mod_levs.exe
calc_ecmwf_p.exeg2print.exe int2nc.exe rd_intermediate.exe
若未编译成功,在checkwps.log 中查看是否有error,修正error 后,用./clean-a清除前次编译后,重新编译。
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
安装WRFDA
打开WRFDA下的arch文件夹,找到Config_new.pl,打开并做如下修改: $I_really_want_to_output_grib2_from_WRF = "TRUE" ;
对应下面几行,找到并修改:
$sw_jasperlib_path = "/usr/local/JASPER/lib";
$sw_jasperinc_path = "/usr/local/JASPER/include";
保存后退出。
终端输入:
cd /home/yourname/model/WRFDA
./configure wrfda
选择gcc、gfortran、serial那一行(第32项),输入:32,回车
gedit configure.wrf
做如下修改:
FORMAT_FIXED = -ffixed-form -cpp
FORMAT_FREE = -ffree-form -cpp-ffree-line-length-none
保存后退出。
./compile all_wrfvar >&checkwrfda.log
cd var/build
ls *.exe
看看有没有da_wrfvar.exe文件,并且全部可执行文件不显示红色,那么WRFDA安装成功。
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
安装WRFDomainWizard
首先安装java
1.官网下载JDK
2.解压缩,放到指定目录
sudo mkdir/usr/lib/jvm
sudo tar -zxvf jdk-7u79-linux-x64.tar.gz -C /usr/lib/jvm
3.修改环境变量:
sudo gedit ~/.bashrc
文件的末尾追加下面内容:
#set oracle jdkenvironment
export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_60 ## 这里要注意目录要换成自己解压的jdk 目录
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
使环境变量马上生效
source ~/.bashrc
4.设置系统默认jdk 版本
sudo update-alternatives --install /usr/bin/java java/usr/lib/jvm/jdk1.7.0_79/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac/usr/lib/jvm/jdk1.7.0_79/bin/javac 300
sudo update-alternatives --install /usr/bin/jar jar /usr/lib/jvm/jdk1.7.0_79/bin/jar300
sudo update-alternatives --install /usr/bin/javah javah/usr/lib/jvm/jdk1.7.0_79/bin/javah 300
sudo update-alternatives --install /usr/bin/javap javap/usr/lib/jvm/jdk1.7.0_79/bin/javap 300
然后执行:
sudo update-alternatives--config java
若是初次安装jdk,会有下面的提示
There is only one alternative in link group java (providing/usr/bin/java):
/usr/lib/jvm/jdk1.7.0_60/bin/java
否者,选择合适的jdk
5.测试jdk
java –version
然后安装WRFDomainWizard
解压WRFDomainWizard.zip到/home/yourname/model下
终端输入:
cd /home/yourname/model/WRFDomainWizard
chmod +x run_DomainWizard
./run_DomainWizard
这样就出来一个图形界面 (你已经完全成功了)
感觉代码写的时候没啥事,到网页上之后,会有空格被吃掉的情况,大家一定要注意!!