1、修改namelist.input文件
WPS完后进入WRF文件夹,首先修改namelist.input文件,通常只需要修改时间、化学机制等,大部分可以默认,但为了更好的模拟效果,还是要知道每个参数的含义!
1.1 time_control部分
&time_control
start_year = 2021, 2021, 2008,
start_month = 06, 06, 02,
start_day = 20, 20, 25,
start_hour = 00, 00, 00,
start_minute = 00, 00, 00,
start_second = 00, 00, 00,
end_year = 2021, 2021, 2008,
end_month = 07, 07, 05,
end_day = 10, 10, 31,
end_hour = 18, 18, 18,
end_minute = 00, 00, 00,
end_second = 00, 00, 00,
interval_seconds = 21600
上述代码是设置模拟运行的时间以及气象数据时间间隔,与namelist.wps一致,这里不做解释。
input_from_file = .true.,.true.,.true.,
history_interval = 60, 60, 60,
frames_per_outfile = 9999, 9999, 1000,
restart = .false.,
restart_interval_h = 6
io_form_history = 2
io_form_restart = 2
io_form_input = 2
io_form_boundary = 2
debug_level = 300
write_hist_at_0h_rst = .false.
auxinput5_inname = 'wrfchemi_<hr>z_d<domain>',
auxinput5_interval_m = 3600, 60, 60,
io_form_auxinput5 = 2,
frames_per_auxinput5 = 1, 12, 12,
auxinput6_inname = 'wrfbiochemi_d<domain>',
io_form_auxinput6 = 2,
force_use_old_data = T,
input_from_file:用于指定化学物质的初始条件、边界条件和排放数据是否从外部文件读取。设置为true时,会使用到real程序生成的wrfinput和wrfbdy开头的文件。
history_interval:表示模拟输出的时间间隔,单位为分钟。这里设置60,简单来说就是每60分钟输出一个模拟结果写入到结果文件中。
frames_per_outfile:结果文件包含时间步数的数量。这里设置为9999是为了只生成一个结果文件。
restart:允许你从一个已完成或中断的模拟的中间状态重新启动模型。这对于长时间的模拟、服务器重启或其他原因导致的中断非常有用。通过正确配置和使用重启功能,WRF可以从指定的时间点继续运行,而不必重新开始整个模拟。第一次模拟通常写false,即不从断点处运行。
restart_interval_h:重启文件生成的时间间隔。设置该参数的目的是为了在模型运行过程中定期保存模型的状态(即重启文件)。重启文件可以用于模型的重新启动,以便在意外中断后从最近一次保存的状态继续运行。
write_hist_ at_0h_rst:是否在生成的重启文件中写入历史文件,好像就是将中断时的输出数据写入,还需要进一步了解。
io_form_*:以io_form开头的参数通常是用来确定文件的格式,通常都是填2,NetCDF格式。
debug_level:改正的强度,可以简单理解为值越大,报错信息越详细。
auxinput*_interval:读取数据的时间间隔,以分钟为单位(*=4,表示下边界数据;*=5表示人为排放源数据;*=6表示生物源排放数据;*=7表示生物质燃烧数据;*=8表示GOCART背景下的排放数据),一般来说只设置5和6即可。
anxinput*_inname:读取数据的名称格式,系统会根据设置的格式找对应的文件。
frames_per_auxinput:用于控制模型读取辅助输入文件的频率,以模拟的时间步长为单位。
force_use_old_data: 在 WRF-Chem 中,外部输入数据(如化学排放数据、气象边界条件等)通常按照一定的时间间隔(如小时、天等)提供。然而,在某些情况下,外部输入数据可能会缺失或不完整。此时,该参数可以用来控制模型如何应对这些情况。如果设置为true,模型将会在当前时间步缺少数据的情况下,强制使用上一时间步的数据。这通常用于外部数据源不连续的情形,确保模型可以继续运行。
1.2 domains部分
&domains
time_step = 18,
time_step_fract_num = 0,
time_step_fract_den = 1,
max_dom = 2,
e_we = 130, 151, 316,
e_sn = 112, 151, 316,
e_vert = 35, 35, 30,
p_top_requested = 10000,
num_metgrid_levels = 35,
num_metgrid_soil_levels = 4,
dx = 3000, 1000, 3000,
dy = 3000, 1000, 3000,
grid_id = 1, 2, 3,
parent_id = 1, 1, 2,
i_parent_start = 1, 37, 32,
j_parent_start = 1, 34, 75,
parent_grid_ratio = 1, 3, 3,
parent_time_step_ratio = 1, 3, 3,
feedback = 1,
smooth_option = 0,
/
- 与namelist.wps类似的参数在这不在解释。
time_step:表示模型模拟的时间步长,即模拟相邻时刻间隔,一般设置为最外层分辨率(km)的4~6倍。
time_step_fract_num:表示时间步长的分数部分,用于精确控制时间步长,一般不用的。
time_step_fract_den:表示时间步长的小数部分,一般不用。
e_vert:表示输出场的垂直层数,设置大小据说和参数化方案选取以及气象数据有关,一般不小于num_metgrid_levels,具体还需要进一步研究。
p_top_requested:最高层的气压值,单位为Pa。
num_metgrid_levels:输入场的大气层数,要根据气象数据设置,使用命令ncdump -h * >& log生成头文件进行查看。
num_metgrid_soil_levels:土壤层数,GFS数据通常包括4个土壤层。
gird_id:区域的id,从1开始。
parent_time_step_ratio:父子域时间不长比率。
feedback:父域与子域的反馈,1表示有反馈。
smooth_option:平滑处理以减少地形数据或其他输入数据的不规则形,从而改善模型的计算稳定性和结果的准确性,推荐设置0。
1.3 physics部分
- 物理方案的设置复杂多样,这里只介绍方案的含义,具体设置多看文献哈。
- 某些参数的解释和设置可能不准确。
&physics
mp_physics = 2, 2, 3, 微物理过程方案
ra_lw_physics = 1, 1, 3, 长波辐射方案
ra_sw_physics = 1, 1, 3, 短波辐射方案
radt = 3, 3, 3, 长短波辐射输入间隔(min),建议设置与外层分辨率相同(km)
sf_sfclay_physics = 1, 1, 1, 地表过程方案
sf_surface_physics = 2, 2, 2, 陆面参数化方案
bl_pbl_physics = 1, 1, 1, 边界层方案
bldt = 0, 0, 0, 边界层物理响应时间
cu_physics = 5, 5, 0, 积云方案
cudt = 5, 5, 0, 积云物理响应时间
cu_rad_feedback = .true, .true, .true,
isfflx = 1,
ifsnow = 0,
icloud = 1,
surface_input_source = 1,
num_soil_layers = 4,
num_land_cat = 21,
sf_urban_physics = 0, 0, 1,
tmn_update = 1,
sst_skin = 1,
progn = 1, 1,
mp_zero_out = 0,
maxiens = 1,
maxens = 3,
maxens2 = 3,
maxens3 = 16,
ensdim = 144,
sst_update = 0
/
cu_rad_feedback:是否启用积云辐射反馈。
isfflx:是否计算地表热通量。
ifsnow:是否考虑雪的物理过程,只有当sf_surface_physics=1时才会起作用。
icloud:是否考虑云的物理过程。
surface_input_source:指定了地表数据的输入来源,1表示geo_em.do1.nc。
num_soil_layers:在土壤模型中使用的垂直土壤层的数量。
num_land_cat:模型中的地表分类数量。
sf_urban_physics:模拟城市地表的物理过程。
tmn_update:是否在模型运行时更新地表的最小温度。
sst_skin:是否使用海表温度数据。
progn:是否进行预报计算。
mp_zero_out:是否在模型运行过程中将某些变量设置为零。
maxiens:指定模型中可以处理的最大化学组分数量。
maxens:该参数定义了模型中能够处理的最大化学物质或组分的数量。
maxens2:该参数定义了模型中可以处理的最大化学预报集(或多个预报集)的数量。
maxens3:该参数定义了模型中可以处理的最大化学方案集合的数量。
ensdim:该参数控制模型可以处理的化学预报集或组分的维度。
sst_update:是否实时更新海洋表面温度,如何设置1,则需要在time_control部分加入anxinput4参数及相应数据。
auxinput4_inname = 'wrflowinp_d<domain>'
auxinput4_interval = 60
1.4 fdda部分
- 该部分是wrf同化部分,目前还不做,之后做的时候再做解释哈。
&fdda
grid_fdda = 0, 0, 0,
gfdda_inname = 'wrffdda_d<domain>',
gfdda_end_h = 9999, 9999, 2000,
gfdda_interval_m = 360, 360, 360,
fgdt = 0, 0, 0,
if_no_pbl_nudging_uv = 0, 0, 0,
if_no_pbl_nudging_t = 1, 1, 1,
if_no_pbl_nudging_q = 1, 1, 1,
if_zfac_uv = 0, 0, 0,
k_zfac_uv = 10, 10, 10,
if_zfac_t = 0, 0, 0,
k_zfac_t = 10, 10, 10,
if_zfac_q = 0, 0, 0,
k_zfac_q = 10, 10, 10,
guv = 0.003, 0.003, 0.003,
gt = 0.003, 0.003, 0.003,
gq = 0.003, 0.003, 0.003,
if_ramping = 1,
dtramp_min = 60.0,
io_form_gfdda = 2,
/
1.5 dynamics部分
- 这一部分的参数也是比较难理解,详细准确信息看官方文档或问ChatGPT哈。
&dynamics
w_damping = 0,
diff_opt = 1,
km_opt = 4,
diff_6th_opt = 0, 0, 0,
diff_6th_factor = 0.12, 0.12, 0.12,
base_temp = 290.
damp_opt = 0,
zdamp = 5000., 5000., 5000.,
dampcoef = 0.2, 0.2, 0.2,
khdif = 0, 0, 0,
kvdif = 0, 0, 0,
non_hydrostatic = .true., .true., .true.,
moist_adv_opt = 2, 2, 1,
scalar_adv_opt = 2, 2, 1,
chem_adv_opt = 2, 2, 2,
tke_adv_opt = 1, 1,
/
w_damping:是否对垂直风速分量(w)应用平滑处理或阻尼。
diff_opt:水平扩散方案的类型。
km_opt:该参数指定了用于计算垂直混合和扩散的混合方案类型。
diff_6th_opt:该参数指定了使用第六阶扩散方案时的具体配置或选项。
diff_6th_factor:该参数用于调节第六阶水平扩散方案的扩散系数因子。
base_temp:该参数用于指定一个参考或基础温度,这个温度值可能被用作一些物理过程的初始条件或计算基准。
damp_opt:指定了模型中使用的阻尼方案类型。
zdamp:在模型顶部垂直层中应用阻尼的强度。强度越高,模型顶层的扰动减弱得越多。
dampcoef:这个参数定义了模型顶部和底部区域应用的阻尼系数。阻尼系数决定了这些区域内的数值耗散程度,通过减少数值噪声和振荡,帮助确保模拟的物理合理性和数值稳定性。
khdif:这个参数定义了水平动量扩散的系数。
kvdif:垂直扩散系数(m2/s)。
non_hydrostatic:是否采用非静力的动力学框架。
moist_adv_opt:指定了模型中用于模拟水汽平流的数值方案。
scalar_adv_opt:指定了模型中用于模拟标量(如气溶胶浓度、化学物质浓度等)平流的数值方案。
chem_adv_opt:指定了用于模拟化学物种平流的数值方案。
tke_adv_opt:用于指定湍流动能(TKE)的对流(advective)处理选项。
1.6 bdy_control部分
&bdy_control
spec_bdy_width = 5,
spec_zone = 1,
relax_zone = 4,
spec_exp = 0.33,
specified = .true., .false., .false.,
nested = .false., .true., .false.,
/
spec_bdy_width:指定了在边界区域进行平滑处理的宽度(以网格点数量计)。
spec_zone:指定了在模型边界内进行特定处理的网格点数量,通常设置为 5 到 10 个网格点。
relax_zone:指定了从模型边界向内的网格点数,用于逐步“放松”边界条件或其他处理,从而实现平滑的过渡。
spec_exp:定义了在模型边界区域应用化学物质浓度平滑时所使用的经验指数。
specified:是否使用指定数据进行初始化或边界条件设置
nested: 是否启用嵌套网格。
1.7 chem部分
- 这一部分比较重要,许多参数的解释可以查看用户文档(User Docs (noaa.gov))。
&chem
kemit = 1,
chem_opt = 8, 8, 0,
chem_in_opt = 1, 1,
bio_emiss_opt = 3, 3,
photdt = 30, 30,
chemdt = 1.8, 0.6,
bioemdt = 1.8, 0.6,
io_style_emissions = 1,
emiss_inpt_opt = 101, 101, 111,
emiss_opt = 4, 4, 3,
phot_opt = 2, 2, 3,
gas_drydep_opt = 1, 1, 1,
aer_drydep_opt = 1, 1, 1,
ne_area = 200,
biomass_burn_opt = 0, 0, 1,
plumerisefire_frq = 60, 60, 30,
dust_opt = 1,
dmsemis_opt = 0,
seas_opt = 1,
opt_pars_out = 1,
gas_bc_opt = 1, 1,
gas_ic_opt = 1, 1,
aer_bc_opt = 1, 1,
aer_ic_opt = 1, 1,
gaschem_onoff = 1, 1,
aerchem_onoff = 1, 1,
wetscav_onoff = 0, 0,
cldchem_onoff = 1, 1,
vertmix_onoff = 1, 1,
chem_conv_tr = 0, 0,
aer_ra_feedback = 1, 1,
have_bcs_chem = .true., .true.,
aer_op_opt = 1,
/
kemit:输入的排放数据的垂直层数,0<kemit<e_vert。
chem_opt:不同的化学机制,详细信息可查看官方文档。
chem_in_opt:使用哪种初始化学场(0:使用理想轮廓初始化化学场;1:使用模拟数据初始化学场)。
bio_emiss_opt:生物源排放选项,通常填3,即使用MEGAN生物排放源数据。
photdt:光解程序使用的更新时间间隔(min)。
chemdt:化学物质在模拟中的更新频率(min)。
bioemdt:生物排放源数据更新频率(min)。
io_style_emissions:排放源文件格式,(0:无排放源数据读取;1:两个12h的排放数据;2:特定排放数据)
emiss_inpt_option:排放源符合哪种化学机制的分配框架。
emiss_opt:人为排放源选项。
phot_opt:光解指数选项。
gas_drydep_opt:气体干沉降。
aer_drydep_opt:气溶胶干沉降。
ne_area:用于MEGAN生物源排放,提供特定化学选项使用的化学物种的最低总数。最好设置一个大于所有化学物质的值。
biomass_burn_opt:生物质燃烧选项。
plumerisefire_frq:调用生物质燃烧羽流上升子程序的时间间隔。
dust_opt:灰尘选项。
dmsemis_opt:如何处理和应用排放数据文件。
seas_opt:海盐选项。
opt_pars_out:光学特性输出。
gas_bc_opt:气体物质的边界条件设置。
gas_ic_opt:气体物质的初始条件设置。
aer_bc_opt:气溶胶物质的边界条件设置。
aer_ic_opt:气溶胶物质的边界条件设置。
gaschem_onoff:是否启用气体化学。
aerchem_onoff:是否启用气溶胶化学。
wetscav_onoff:是否启用湿沉降化学。
cldchem_onoff:是否启用云化学。
vertmix_onoff:是否启用垂直混合化学。
chem_conv_tr:是否在模型中启用对流传输过程对化学物质的影响。
aer_ra_feedback:气溶胶与辐射之间的反馈。
have_bcs_chem:是否使用预设的化学边界条件数据。
aer_op_opt:指定气溶胶光学属性。
1.8 namelist_quilt部分
&namelist_quilt
nio_tasks_per_group = 0,
nio_groups = 1,
/
nio_tasks_per_group:这个参数决定了每个 I/O 任务组中的任务数量。设置合适的值可以优化 I/O 操作的性能,特别是在处理大量数据时。
nio_groups:指定模型在处理输入和输出操作时使用的任务组的数量。
1.9 总结
正确的修改namelist.input是模式顺利运行的前提,虽然里面有很多难懂的参数,但使用大多数参数使用默认值即可完成多数的模拟实验,需要注意参数有:time_control部分的起止时间、重启文件的相关设置;domains部分的模拟步长、e_vert、num_metgrid_levels;physics部分的num_soil_layers、num_land_cat;chem部分的kemit、chem_opt、chem_in_opt、bio_emiss_opt、emiss_inpt_opt、emiss_opt。