Global Forecast System 工作流

脑海中应有的 图像

准备工作:

1.Download case study data.tar (Type:grib1 data)

tar -zxvf xxxxx and put them in DATA document

2.Get familiar the data

./until/glprint.exe ../DATA

WPS(Weather Pre-processing System) part

1.Set namelist.wps

namelist.wps文件非常重要 贯穿整个WPS过程

namelist.wps详解 :

其中以&符号开头的为配置模块名称。 &share 模块描述了通用配置选项,&geogrid 描述了geogrid.exe的配置选项,&ungrib 描述了 ungrib.exe的配置选项,&metgrid 描述了 metgrid.exe的配置选项。

可以先使用 ncl util/plotgrids.ncl 来查看即将绘制的投影范围

&share
 wrf_core = 'ARW',      !选内核,ARW(Advanced Research WRF)是科学研究, 
 NMM(nonhydrostatic mesoscale model)是用于业务预报
 max_dom = 1,      !模拟区域总数。
 start_date = '2005-08-28_00:00:00','2006-08-16_12:00:00',
 end_date   = '2005-08-29_00:00:00','2006-08-16_12:00:00',
 interval_seconds = 21600      !设置输入数据的时间间隔,单位为秒,6h=60*60*6=21600s
 io_form_geogrid = 2,          !gergrid.exe的输出格式(1=binary,2=NetCdf,3=GRIB1)
/

&geogrid
 parent_id         =   1,   1,   !父级区域编号
 parent_grid_ratio =   1,   3,   !嵌套时,每一级的比例,例如:1,3 最粗糙的域必须设置为1,第二个域为3说明精细网格需要3倍时间步长才能与粗糙域保持一致,在真实数据下必须使用奇数。

 i_parent_start    =   1,  31,   !嵌套区域的左下角起点在父级区域中的x起始方向,很明显最粗糙的区域永远都是1,1
 j_parent_start    =   1,  17,   !嵌套区域的左下角起点在父级区域中的y起始方向
 
e_we              =  74, 112,   !x轴方向上的格点数,很好理解,因为父级粗糙,所以总的格点数少,且嵌套网格的格点数-1后能够被3整除。
 e_sn              =  61,  97,   !y轴方向上的格点数
图片来源:xg1990.coom
 geog_data_res = '2deg+gtopo_10m+usgs_10m+10m+nesdis_greenfrac','2deg+gtopo_10m+usgs_10m+10m+nesdis_greenfrac'!设定地面资料的种类,解像度10m,5m,2m,30s分别对应着20km,10km,5km,1km.

 dx = 30000,   !设定格距,单位为m。实际上后可接上10000,但只要设定了父区域,程序便能够根据parent_grid_ratio算出嵌套区域的格距,当然,加上也没有关系。
 dy = 30000,

 map_proj = 'lambert',  !设定投影方式,在ARW中可选:'lambert', 'polar', 'mercator','lat-lon'.
 ref_lat   =  34.83,    
 ref_lon   = -81.03,   !定义了投影中心的经纬坐标,这样,根据投影中心坐标(ref_lat和ref_lon),x轴格点数(e_we),y轴格点数(e_sn),步长(dy和dy)总共六个参数,便可以确定总的研究范围。
 truelat1  =  30.0,    !这是因为设置的为lambert投影,所以需要设置两个truelat,具体请看后文投影方式详解。
 truelat2  =  60.0,
 stand_lon = -98.0,
 geog_data_path = 'PATH_TO_DATA/WPS_GEOG_LOW_RES' !静态资料来源路径,最好设置为绝对路径。
/

&ungrib
 out_format = 'WPS',  !中间文件格式,可以选择:'WPS','MM5','SI',一般选择WPS
 prefix = 'FILE',    !分配给中间文件的前缀,便于区分
/

&metgrid
 fg_name = 'FILE'    !通常与ungrib产出的文件前缀保持一致
 io_form_metgrid = 2,  !metgrid的输出格式,1='binary',2='NetCdf',3='GRIB1'
/

当然ungrib和metgrid中还有两个可选设置,为设置TBL的链接路径和设置文件输出路径,当在使用共享文件夹的时候这会很有用。

投影方式详解:

定义true_lat1和true_lat2由此确定纬度区间,然后将投影在圆锥上的地图沿母线展开,其中0度即为母线即stand_lon.此种投影适合在中纬度地区使用
图片来源:xg1990.com

2.geogrid.exe(对地表参数插值)

./geogrid.exe

这会创建:

geo_em.d0x.nc文件

3.link-in GFS Vtable(不是每次都linkGFS,根据实际需求来,但大多数情况都是Link GFS)

ln -sf ungrib/Variable_Tables/Vtable.GFS Vtable

这会创建:

GRIBFILE.AAA -> ../DATA/Katrina/avn_050828_00_00
GRIBFILE.AAB -> ../DATA/Katrina/avn_050828_00_06
GRIBFILE.AAC -> ../DATA/Katrina/avn_050828_00_12
GRIBFILE.AAD -> ../DATA/Katrina/avn_050828_00_18
GRIBFILE.AAE -> ../DATA/Katrina/avn_050828_00_24
GRIBFILE.AAF -> ../DATA/Katrina/avn_050828_00_30
GRIBFILE.AAG -> ../DATA/Katrina/avn_050828_00_36
GRIBFILE.AAH -> ../DATA/Katrina/avn_050828_00_42
GRIBFILE.AAI -> ../DATA/Katrina/avn_050828_00_48

4.Ungrib.exe (deal with data)

./ungrib.exe

这会创建:

FILE:2005-08-28_00
FILE:2005-08-28_06
FILE:2005-08-28_12
FILE:2005-08-28_18
FILE:2005-08-29_00

Tips:
1.ubgrib.log是非常重要的日志文件,可以帮助排查问题。
2.ungrib.exe 主要功能为从grib 数据中提取所需要的气象参数 ,即将各种来源的资料都整理为统一格式 的资料方便后续处理 .
3.Familiar the FILE data
/until/rd_intermediate.exe FILE:xxxx-xx-xx_xx

5.metgrid.exe( Interpolate the input data on our model domain )

./metgrid.exe

这会创建:

met_em.d01.2000-01-24_12:00:00.nc
met_em.d01.2000-01-24_18:00:00.nc
met_em.d01.2000-01-25_00:00:00.nc
met_em.d01.2000-01-25_06:00:00.nc
met_em.d01.2000-01-25_12:00:00.nc

WRF( Weather Research and Forecasting Model )part

1.进入WRF/test/em_real文件夹

2.连接由WPS处理后生成的met_em文件

ln -sf ../../../WPS/met_em.d01.2000-01* .

3.set namelist.input

namelist.input文件也非常重要,若没有正确的设置参数,就无法进行数据的模拟。

namelist.input文件详解:

 &time_control
 run_days                            = 0,
 run_hours                           = 12,
 run_minutes                         = 0,
 run_seconds                         = 0,       !模拟的时间为所有run_xxx相加
 start_year                          = 2005, 2000, 2000,
 start_month                         = 08,   01,   01,
 start_day                           = 28,   24,   24,
 start_hour                          = 00,   12,   12,
 end_year                            = 2005, 2000, 2000,
 end_month                           = 08,   01,   01,
 end_day                             = 29,   25,   25,
 end_hour                            = 00,   12,   12,
 interval_seconds                    = 21600  !与预处理程序输入的时间间隔保持一致
 input_from_file                     = .true.,.true.,.true., !没明白
 history_interval                    = 180,  60,   60, !以分钟为单位,多长时间输出模拟一次模拟结果
 frames_per_outfile                  = 1, 1000, 1000, !每个输出文件的输出时间,用来把输出文件分成小部分。
 restart                             = .false., 
 restart_interval                    = 720, !以分钟为单位,记录输出重启的时间间隔
 io_form_history                     = 2
 io_form_restart                     = 2
 io_form_input                       = 2
 io_form_boundary                    = 2     !全是指定格式
 /

 &domains
 time_step                           = 180,  !积分的时间步长,单位为秒,推荐为dx公里数的6倍,只能为整数
 time_step_fract_num                 = 0,    !小数部分的分子
 time_step_fract_den                 = 1,    !小数部分的分母,例如想将步长设为180.6秒,那time_ste=180,time_step_fract_num=6,time_step_fract_den=10 这样整数部分为180,小数部分为6/10
!********************time_step和history_interval需要设置合理,若history_interval不是time_step的倍数,那么就会在输出的时候造成无数据的情况。例如:time_step=3minutes,history_interval=8minutes,那么8/3不是整数,导致了在输出的时候没有模拟,也就没有模拟的数据。******************!
 max_dom                             = 1,    !计算区域个数
 e_we                                = 74,    112,   94,  !x方向(东西)终止时格点数
 e_sn                                = 61,    97,    91,  !y方向(南北)终止时格点数
 e_vert                              = 33,    33,    33,  !Z方向(垂直)终止时格点数
 p_top_requested                     = 5000,    !最高等压面 单位为帕
 num_metgrid_levels                  = 27,   !来源于WPS中metgrid的垂直层数,可用ncdump -h查询
 num_metgrid_soil_levels             = 4,    !来源于WPS中metgrid土壤插值层数,可用ncdump -h查询
 dx                                  = 30000, 10000,  3333.33,
 dy                                  = 30000, 10000,  3333.33,
 grid_id                             = 1,     2,     3,
 parent_id                           = 0,     1,     2,
 i_parent_start                      = 1,     31,    30,
 j_parent_start                      = 1,     17,    30,
 parent_grid_ratio                   = 1,     3,     3,
 parent_time_step_ratio              = 1,     3,     3,
 feedback                            = 1,
 smooth_option                       = 0
 /

 &physics
 mp_physics                          = 5,     5,     5,  !微物理参数化方案,有很多 需要选择适合的
 ra_lw_physics                       = 4,     4,     4,  !长波辐射方案 同上
 ra_sw_physics                       = 4,     4,     4,  !短波辐射方案 同上
 radt                                = 30,    30,    30,  !调用辐射物理方案的时间间隔,默认值为0,单位为分钟,一般取dx的公里数。
 sf_sfclay_physics                   = 1,     1,     1, !近地面层方案 同上
 sf_surface_physics                  = 2,     2,     2, !陆面过程方案 同上
 bl_pbl_physics                      = 1,     1,     1, !边界层方案 同上
 bldt                                = 0,     0,     0, !调用边界层物理方案的时间间隔
 cu_physics                          = 1,     1,     0, !积云参数化方案 同上
 cudt                                = 5,     5,     5, !调用积云参数化方案的时间间隔
 icloud                              = 1,  !辐射光学厚度中是否考虑云的影响
 cu_rad_feedback                     = .true.,.true.,.false.,
 num_land_cat                        = 24,
 sf_urban_physics                    = 0,     0,     0,
 /

 &fdda
 /

 &dynamics
 hybrid_opt                          = 2,
 w_damping                           = 0,  !垂直速度抑制标志选项 0=无抑制作用 1=有抑制作用
 diff_opt                            = 1,      1,      1,  !湍流和混合作用选项,0=没有或忽略
 km_opt                              = 4,      4,      4, !湍涡系数选项
 diff_6th_opt                        = 0,      0,      0, !6阶数字扩散 0=没有6阶扩散
 diff_6th_factor                     = 0.12,   0.12,   0.12,  !6阶数值扩散无量纲率(这两个参数都不明白)
 base_temp                           = 290.   !基本海平面温度
 damp_opt                            = 3,     !顶层抽吸作用标志选项,须在后设置zdamp和dampcoef参数
 zdamp                               = 5000.,  5000.,  5000.,  !模式顶部的抽吸厚度
 dampcoef                            = 0.2,    0.2,    0.2   !抽吸系数
 khdif                               = 0,      0,      0,   !水平扩散系数
 kvdif                               = 0,      0,      0,   !垂直扩散系数
 non_hydrostatic                     = .true., .true., .true.,  !模式动力框架参数,.true.为非静止力,.false.为静力
 moist_adv_opt                       = 1,      1,      1,   !0=none 
 scalar_adv_opt                      = 1,      1,      1,
 gwd_opt                             = 1,
 /

 &bdy_control
 spec_bdy_width                      = 5,   !边界过渡的总格点数。默认值为5.参数的大小至少为spec_zone和relax_zone的和
 specified                           = .true.,  !是否使用特定型边条件
 /

 &grib2
 /

 &namelist_quilt
 nio_tasks_per_group = 0,
 nio_groups = 1,
 /

 &dfi_control   !这一部分的参数都用于控制MPI异步通讯形式的i/o
 dfi_opt                             = 0
 dfi_nfilter                         = 7
 dfi_write_filtered_input            = .false.
 dfi_write_dfi_history               = .false.
 dfi_cutoff_seconds                  = 3600
 dfi_time_dim                        = 1000
 dfi_bckstop_year                    = 2000
 dfi_bckstop_month                   = 01
 dfi_bckstop_day                     = 24
 dfi_bckstop_hour                    = 11
 dfi_bckstop_minute                  = 00
 dfi_bckstop_second                  = 00
 dfi_fwdstop_year                    = 2000
 dfi_fwdstop_month                   = 01
 dfi_fwdstop_day                     = 24
 dfi_fwdstop_hour                    = 12
 dfi_fwdstop_minute                  = 30
 dfi_fwdstop_second                  = 00
/

4.real.exe

./real.exe

若无法运行则需要检查namelist.input参数设置,具体错误可以通过查看rsl.out.0000或rsl.error.0000文件

这会创建:

wrfinput_dxx
wrfbdy_dxx

5.wrf.exe

./wrf.exe

这会创建

wrfout_dxx_xxxx-xx-xx_xx:xx:xx

这样就获得了经过模拟后的数值,之后就可以利用各种绘图软件例如Grads、ncl、origin去进一步的处理,展示这些资料。