- 积分
- 243
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2012-7-2
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 green_tea789 于 2014-6-6 19:07 编辑
安装
--------------
1.去wrf官网(http://www.mmm.ucar.edu/wrf/users/download/get_source2.html)下载tar文件,要先注册。解压后有WPS和WRFV3目录。
2.在WRFV3目录下:
1)配置
在ubuntu和服务器上都安装了。 ubuntu用的是自带的gfortran编译器。查了一下是4核的,就用并行了(dmpar)。服务器用的是ifort编译器。
sudo ./configure
如果是服务器,不用sudo.
输入netcdf的路径.
选择编译器:
ubuntu系统我选7. Linux i486 i586 i686, gfortran compiler with gcc (dmpar)
服务器我选19. Linux x86_64 i486 i586 i686, ifort compiler with icc, SGI MPT (dmpar)
2)编译
sudo ./compile em_real
编译成功后在main目录下有real.exe和wrf.exe,没有就查看日志里的错误信息。
在我们这里服务器上需要用nodes命令 找绿色节点,比如n107-8
然后登录n107节点,用 ssh n107
在上面用compile.
否则出现错误:out of memeory
这个问题困扰我很久,查了好多资料都不知道是怎么回事。最后电话问信息中心管理员,一句话就搞定了。这个故事教育我们闭门造车一段时间没有突破后要勇于拉下脸去问人。
3.在WPS目录下:
1)配置
sudo ./configure
输入netcdf的路径.
选择编译器:
ubuntu系统我选16. Linux i486 i586 i686, gfortran (dmpar_NO_GRIB2)
服务器我选3. PC Linux x86_64, Intel compiler DM parallel, NO GRIB2
2)编译
sudo ./compile
3) 修改namelist.wps
下载WRFDomainWizard软件选取嵌套区域,然后根据它生成的namelist修改namelist.wps文件内的e_we,e_sn,ref_lat,ref_lon,truelat1,truelat2,stand_lon参数。
选区域的时候我用的是Lambert投影。
我的ubuntu系统用这个软件有点费劲,要先手动装jkd(java development kit),然后配置环境变量。
4)生成初始和边界条件
去官网(http://rda.ucar.edu/datasets/ds083.2/)把要模拟日期的fnl下载到data目录里。
执行download.csh的时候如果出现wget: unable to resolve host address `my-proxy.dmz'错误,把Csh download script里 wget改成 wget --no-proxy就行了.
然后运行以下代码:
\rm -f met_em* geo_em* FILE* GRIBFILE* PFILE* *~
./geogrid.exe
ls -l ungrib/Variable_Tables
ln -sf ungrib/Variable_Tables/Vtable.GFS Vtable
data="/disk3/zhang/WRF/data/fnl/200012"
./link_grib.csh $data/fnl*
./ungrib.exe
ls -l metgrid/METGRID.TBL*
./metgrid.exe
ls -lrt met_em*
wrf="/disk3/zhang/WRF"
wrfv3=$wrf/WRFV3
wps=$wrf/WPS
cd $wrfv3/test/em_real/
\rm -f met_em*
ln -s $wps/met_em* .
cd $wrfv3/run
\rm -f met_em* output* rsl* wrfinput_d* wrfbdy_d* *~
ln -s $wps/met_em* .
cd $wps
具体一些目录要根据个人情况修改。
4.到WRFV3/run目录下:
1)设置namelist.input里的参数,要跟WRFDomainWizard软件生成的namelist.input对应。
2)sudo ./real.exe
出错信息在rsl里,可以用tail -10 rsl.out.0000查看是否成功。
3)sudo mpirun -np 4 ./wrf.exe ; 我的机子用mpirun大约要节省一半的时间。
4)运行后,生成wrfout文件,然后用NCL作图软件编程处理。NCL开发了专门的WRF模块。注意ncl程序里要在wrfout文件后面加上.nc才行。
输出变量
-------------
1.如果是Registry_EM.COMMON里已经有的变量,就把直接把r改成rh,h代表history,就是在结果文件里。
2.如果没有,比如要加的变量是FRO_YU:
1)在phys/里一级一级地call出这个变量。
2)在dyn_em/module_first_rk_step_part1.F里加:FRO_YU=grid%fro_yu,
3)在Registry/Registry_EM.COMMON里加上变量在wrfout文件里的参数:
state real FRO_YU ikj misc 1 - i012rhdus "FRO_YU" "Froude number" "" ""
3. 有时候做了上述这些也没在wrfout文件里看到新变量,就有可能是物理参数化方案的选取原因。查看新变量在哪个物理参数化方案里,然后看namelist.input有没有选。
在运行日志文件里打印程序里的变量值/字符串
---------------------------------------------------------------
1)直接在程序里加 print也可以在rsl文件里看到输出。但如果想通过namelist.input里debug_level控制,就对debug_level任意设一个值,比如455。
2)在要打印的程序里加:
CALL get_wrf_debug_level(debug_level_yu)
if (debug_level_yu.eq.455) then
WRITE( message , * ) 'fro_yu test on file, timestep = ', itimestep
CALL wrf_message ( message )
endif
之前要对自定义本地变量debug_level_yu声明: integer debug_level_yu
3)然后在运行日志文件rsl.error.0001里就有了 fro_yu test 的字样。
如果你设的打印没有输出,看看是不是CASE的问题,check一下选的参数化方案。
|
评分
-
查看全部评分
|