WRF学习之 ch5 WRF模式(三)运行WRF(d, e):(双向嵌套,单向嵌套)
Running WRF
参考自https://www2.mmm.ucar.edu/wrf/users/docs/user_guide_v4/v4.1/users_guide_chap5.html#Twoway
<>Table of Contents
• Introduction
• Installing WRF
• Running WRF
a. Idealized Case
b. Real Data Case
c. Restart Run
d. Two-Way Nested Runs
e. One-Way Nested Run Using ndown
f. Moving Nested Run
g. Analysis Nudging Runs
h. Observation Nudging
i. Global Run
j. DFI Run
k. SST Update
l. Using bucket_mm and bucket_J options
m. Adaptive Time Stepping
n. Stochastic Parameterization Schemes
o. Run-Time IO
p. Output Diagnostics
q. WRF-Hydro
r. Using IO Quilting
s. Using Physics Suites
t. Hybrid Vertical Coordinate.
• Examples of namelists for various applications
• Check Output
• Trouble Shooting
• Physics and Dynamics Options
• Summary of PBL Physics Options
• Summary of Microphysics Options
• Summary of Cumulus Parameterization Options
• Summary of Radiation Options
• Description of Namelist Variables
• WRF Output Fields
• Special WRF Output Variables
d. 双向嵌套运行
双向嵌套运行是其中同时运行多个不同网格分辨率的网格域并相互通信的运行:较粗糙的网格为嵌套提供边界值,并且嵌套将其计算反馈给较粗糙的域。该模型可以处理同一嵌套级别(无重叠嵌套, no overlapping nest)和多个嵌套级别(伸缩, telescoping)的多个域。
在准备嵌套运行时,请确保使用基本的basic nest选项(options 1)来编译。启动嵌套运行的大多数选项都是通过namelist处理的。namelist.input文件中具有多列条目的,所有变量都需要谨慎编辑。从namelist模板开始。以下是要修改的关键名称列表变量:
start_*, end_*: 嵌套的开始和结束时间
input_from_file: 嵌套是否需要输入文件(例如wrfinput_d02)。这通常用于real 数据案例,因为嵌套输入文件包含嵌套地形和土地信息。
fine_input_stream: 嵌套初始化中使用嵌套输入文件中的哪些字段。要使用的字段在Registry.EM中定义。通常,它们包括静态场(例如地形和土地使用)和遮盖的表面场(例如皮肤温度,土壤湿度和温度)。对于在比粗域晚的时间开始的嵌套很有用。
max_dom: 要运行的域总数。例如,如果要具有一个粗略域和一个嵌套,请将此变量设置为2。
grid_id: wrfout命名约定中使用的域标识符。最粗糙的网格的grid_id必须为1。
parent_id: 用于指示嵌套的父域。使用grid_id值。
i_parent_start/j_parent_start: 嵌套域在其父域中的左下角起始索引。这些参数应与namelist.wps中的相同。
parent_grid_ratio: 父级与嵌套域之间的整数网格大小比。通常,在实际数据应用中使用奇数比率。
parent_time_step_ratio: 嵌套域的整数时步比。尽管通常将它们设置为相同,但它可能与parent_grid_ratio不同。
feedback: 这是定义双向嵌套(或单向嵌套)运行的**关键设置**。启用feedback后,在嵌套点的重合点处,变量的值(质点的单元格值的平均值和水平动量点的单元格面值的平均值)会覆盖粗网格域的值。对于masked的变量场,仅反馈collocating points处的单点值。如果parent_grid_ratio是偶数,则将西南角点值的任意选择用于反馈。这就是最好在此选项中使用奇数parent_grid_ratio的原因。当关闭feedback后,它等效于单向嵌套运行,因为嵌套结果不会反映在父域中。
smooth_option: 如果启用了feedback,则这是嵌套区域中父域的平滑选项。共有三个选项:0 =不平滑;1 = 1-2-1平滑;2 =平smoothing-desmoothing。
3-D 理想个例
对于3D理想个例,不需要嵌套输入文件。此处的关键是namelist.input文件的规范。该模型的作用是从粗网格场内插嵌套所需的所有变量。设置
input_from_file = T, F,
真实数据个例
对于真实数据个例,支持三个输入选项。第一个类似于运行理想个例。那就是从粗网格将所有气象场内插到细网格(input_from_file = T,F)。此选项的缺点很明显:一个将不会获得高分辨率的静态场的信息(例如地形,土地利用率等)。
第二个选项是,为每个网格设置input_from_file = T,这意味着该子网格网格将读取一个网格的wrfinput文件。此选项的局限性在于,它需要该子网格与该粗网格同时启动。
第三个选项是,除了为每个域设置input_from_file = T之外,还为每个域设置fine_input_stream = 2。为什么取值为2?这是基于Registry设置的,该设置指定要从辅助输入流2读取的某些场。此选项可以:从粗网格,静态网格和masked场中内插获取的的3-D气象场,以及从子网格的wrfinput中获取的时间变化地面场;因此,它允许嵌套晚于0时开始。设置fine_input_stream = 0等效于第二个选项。
要运行real.exe进行嵌套运行,必须首先运行WPS并为所有嵌套创建数据。假设WPS运行24小时,从2000年1月24日1200 UTC开始,两重的嵌套案例。那么,应在WPS目录中生成以下文件:
met_em.d01.2000-01-24_12:00:00
met_em.d01.2000-01-24_18:00:00
met_em.d01.2000-01-25_00:00:00
met_em.d01.2000-01-25_06:00:00
met_em.d01.2000-01-25_12:00:00
met_em.d02.2000-01-24_12:00:00
通常,仅需要嵌套网格输入文件的第一个时间段即可创建嵌套wrfinput文件。将所有这些文件链接或移动到运行目录。编辑namelist.input文件,并为所有相关变量设置正确的值(如前页所述)(特别是,将max_dom设置为要运行的域的总数),以及物理选项。输入以下内容以运行:
./real.exe >& real.out
或者
mpirun –np 4 ./real.exe
如果成功,会创建所有粗网格以及嵌套网格的input文件。对于2重网格例子,会创建如下:
wrfinput_d01
wrfinput_d02
wrfbdy_d01
运行WRF,输入
./wrf.exe
或
mpirun –np 4 ./wrf.exe
如果成功,模式会为区域1和区域2创建wrfout文件:
wrfout_d01_2000-01-24_12:00:00
wrfout_d02_2000-01-24_12:00:00
e. 使用ndown运行单向嵌套
WRF支持两个分开的单向嵌套选项。在本节,单向嵌套定义为当一个较细分辨率的网格运行时,作为较粗分辨率网格运行的后继,我中ndown程序是在这两个模拟之间运行的。较细网格的初始和侧边界条件是从粗网格运行获得的,获得了较高分辨率的地形场(如,地形,土地利用等),和masked的地面场(如土壤温度和湿度)。执行这个任务的程序就是ndown.exe.
*请注意,使用此程序需要将代码编译为嵌套nesting.
当使用单向嵌套时,粗网格对细网格的比率仅被限制为整数。建议使用小于或等于5的整数。还建议从粗网格运行中频繁输出(例如每小时)以提供更好的边界规范。在运行ndown时不要更改物理选项(可以在运行wrf时更改某些物理选项),如果打算使用ndown,请不要从Registry注册表中删除字段。
步骤1:运行粗网格模拟
如上所述,这与任何在单层域WRF运行没有什么不同。尽可能多地输出历史文件,这将为下一次运行模型提供更好,更频繁的边界条件。
步骤2:为两个domain运行geogrid.exe和metgrid.exe
如同运行双向嵌套一样,为两个domain运行geogrid.exe(提供geo_em.d01和geo_em.d02文件)和metgrid.exe。
这将为domain 1(met_em.d01.
步骤3:为2个domain 运行real.exe。
此步骤的目的是提取分辨率更高的陆地场和相应的被土地水掩盖的土壤场。
- 将met_em *文件复制到将要运行real.exe的目录中
- 编辑namelist.input文件,更改“ max_dom = 2”,并确保为第2个domain运行设置了第1列和第2列,并编辑了正确的开始时间和网格尺寸
- 运行real.exe。这将产生一个wrfinput_d01文件,一个wrfinput_d02文件和一个wrfbdy_d01文件
- 将wrfinput_d02文件重命名为wrfndi_d02
步骤 4: 运行ndown.exe,生成细网格初始条件和边界条件文件
- 从V3.2开始,必须在namelist.input的&time_control部分中添加 io_form_auxinput2 = 2 才能成功运行ndown.exe。(如果需要在运行ndown时优化refine垂直分辨率,请设置vert_refine_fact = integer(V3.2中的新增功能)。namelist或过程中不需要其他更改。另一种优化refine垂直分辨率的方法是使用工具程序v_interp(详细信息,请参见“Utilities and Tools”一章)。
- 更改namelist 变量interval_seconds,以反映粗网格模型运行的历史记录输出间隔
- 在运行ndown程序之前,请勿更改物理选项
- 运行ndown.exe,它使用来自粗网格wrfout文件的输入以及从上面的步骤3生成的wrfndi_d02文件。这将产生一个wrfinput_d02和wrfbdy_d02文件。
请注意,程序ndown可以串行运行或以MPI运行,这取决于选择的编译选项。但是,创建ndown程序时必须支持嵌套。要运行该程序,请键入
./ndown.exe
或者
mpirun –np 4 ./ndown.exe
步骤 5: 运行细网格WRF
- 将wrfinput_d02和wrfbdy_d02分别重命名为wrfinput_d01和wrfbdy_d01
- 将原始wrfout_d01 *文件重命名(或移动)到其他文件(或其他目录),以免覆盖它们。
- 编辑namelist.input,将所有细网格domain数据从第2列移至第1列,以便此运行仅适用于细网格domain。确保将time_step设置为符合细网格domain(通常为6 ### DX)。如果您将来需要重复此过程,则在此步骤之前将namelist.input保存到其他内容可能是有益的。将新编辑的namelist另存为namelist.input。
- 可以在两次run之间修改WRF模型的物理选项(ndown之前的WRF模型 和ndown之后的WRF模型,但是在运行ndown时,确实使用与第一次运行相同的物理选项use the same physics from the first run when running ndown),但通常情况下,陆面方案选项除外,因为不同方案具有不同的土壤深度。用户可以利用允许初始边界和横边界同时使用潮湿数组和标量数组的功能(分别是have_bcs_moist和have_bcs_scalar)。此选项仅在ndown处理之后的WRF模型运行期间使用。使用此选项,用户必须在预测之间,保持微物理方案不变。它的优点是,以前的WRF模型为所有微物理变量提供了实际的侧边界趋势,而不是简单的“零入流”zero inflow或“零梯度出流”zero outflow。
- 为该网格运行WRF
*请记住,此运行的输出将采用wrfout_d01 *的形式,但实际上将是域2的输出。这可能有助于重命名这些名称以避免将来的混乱。
为三个或更多域运行ndown.exe
可以使用ndown程序运行多个嵌套,但是该过程有点麻烦。由于编写代码的方式不同,它需要使用特定的文件名(特别是d01和d02),因此准确地遵循以下步骤很重要:
注意:此示例用于嵌套到第三个域(总共3个域),并假定您已经具有上一次运行的wrfout_d01 *文件。
步骤 A: 运行3个domain的geogrid.exe和metgrid.exe程序。您应该具有文件met_em.d01.,met_em.d02.和met_em.d03.
步骤 B: 在3个domain 运行real.exe
- 将 met_em*文件复制到real.exe程序所在的目录
- 编辑namelist.input文件,更改“ max_dom = 3”,并确保为第3个域运行设置了第1列,第2列和第3列,并编辑了正确的开始时间和网格大小。
- 运行real.exe。这将生成wrfinput_d01,wrfinput_d02,wrfinput_d03文件和wrfbdy_d01文件
- 将wrfinput_d02文件重命名为wrfndi_d02
步骤 C: 运行ndown.exe,生成domain02的网格初始条件和边界状态文件(请参阅上面的步骤4中的详细信息)
步骤 D: 运行WRF domain2 (请参阅上面的步骤5中的详细信息)。现在,您将拥有名为wrfout_d01 *的新文件,该文件将对应于domain02
步骤 E: 运行ndown.exe,生成domain 03网格的初始条件和边界条件文件
- 将wrfinput_d03文件重命名为wrfndi_d02(这是程序期望的名称)
- 确保namelist中&time_control节中仍然具有io_form_auxinput2 = 2
- 更改namelist变量interval_seconds,以反映粗网格模型的历史输出文件的间隔
- 在运行ndown程序之前,请勿更改物理选项
- 运行ndown.exe,它使用来自(新)粗网格wrfout文件和wrfndi_d02文件的输入。这将生成wrfinput_d02和wrfbdy_d02文件(实际上将与domain 03对应)。
步骤 F: 运行细网格(d03)
- 将wrfinput_d02和wrfbdy_d02分别重命名为wrfinput_d01和wrfbdy_d01
- 将wrfout_d01 *文件重命名(或移动)到其他文件(或其他目录),以免覆盖它们(记得这些文件与d02相对应)
- 编辑namelist.input,将所有细网格域数据从第3列移至第1列,以便此运行仅适用于细网格域。确保将time_step设置为符合细网格域(通常为6 * DX)。如果您将来需要重复此过程,则在此步骤之前将namelist.input保存到其他内容可能是有益的。将新编辑的名称列表另存为namelist.input
运行wrf.exe后,您将拥有新的wrfout_d01 *文件。这些将对应于域03。如果需要添加更多的嵌套,请遵循相同的格式,并保持命名约定不变。
下一页的图总结了使用程序ndown进行单向嵌套运行的数据流。
注:实际步骤
- 修改namelist,max_dom=3,运行ungrib,geogrid,metgrid,获得三个层次的met_em.d0*文件,运行real.exe,获得wrfinput_d01,wrfinput_d02,wrfinput_d03,wrfbdy_d01文件
- 修改namelist,max_dom=1,运行wrf,获得wrfout.d01文件,对应于最外层粗网格的wrfout_d01文件
- 文件改名,将wrfinput_d02===>wrfndi_d02, 随后运行nodwn.exe,获得wrfbdy_d02
- 将wrfout_d01*文件重命名。
- 修改namelist.input,将第二层网格的信息(网格数目s_we,e_we,s_sn,e_sn,s_vert,e_vert,水平分辨率dx,dy)移动到最左边一列,此外修改积分步长,参数化方案等。
- 运行wrf.exe, WRF将输出wrfout_d01文件(wrf认为的d01,实际对应的是第二层)
以上是运行两层网格单向嵌套时候的办法,如果需要为三个及以上的domain进行嵌套,则重复步骤3~6,注意在ndown和wrf.exe的时候将namelist的网格信息(max_dom,s_we,e_we,s_sn,e_sn,s_vert,e_vert,dx,dy,grid_id,parent_id,i_parent_start,j_parent_start,parent_grid_ratio)和文件维数对应。