(RESOLVED) Addressing a precipitation bias

Topics related to the dynamics/numerics of the WRF model
Post Reply
stormchasegenie
Posts: 35
Joined: Wed Oct 10, 2018 5:42 pm

(RESOLVED) Addressing a precipitation bias

Post by stormchasegenie » Thu Jan 21, 2021 9:07 pm

Greetings,

My name is Stefan, a postdoc at UCLA. I am finding a systematic wet bias in summertime in my 3-km experiment (see Fig A) across southeastern CA. One-way nesting is used. The ndown namelist and the run namelist are attached, and the 3-km experiment is run using BC information from a parent 9-km simulation.

Based on IVT, it seems as though there are "blobs" of moisture seeping into the domain (Fig. D) and increased surface evaporation at the surface (Fig. E). The 9-km forcing experiment is slightly wet- biased across the region. Since I am running with cu_physics off in the 3-km experiments, the vertical velocities resolved should be larger in the summertime, particularly under a monsoon regime, so I anticipate that, to reduce this wet bias, I should probably use w_damping = 1 (currently it is 0) or play around with my spec_bdy_width options (currently default).

What does w_damping do exactly? I know it "flexes" the vertical CFL condition, and when I ran a perturbation experiment with w_damping = 1, the results did not change much.

Does cugdx = 0 only work for GD cu_physics when dx < 5 km? It seems strange that this would be the case since you shouldn't really be using a CuP for such small grid spacings.

I am trying to figure out how to reduce this bias, but since this is a rather CPU intensive job, I thought you could lend some insight.

Thanks in advanceImage,
-Stefan

NAMELISTS

RUN 3-km
&time_control
run_days = 16,
run_hours = 0,
run_minutes = 0,
run_seconds = 0,
start_year = 2010, 2010, 2010, 2010
start_month = 08, 08, 08,
start_day = 16, 01, 01,
start_hour = 00, 00, 00,
end_year = 2010, 2010, 2010, 2010
end_month = 09, 09, 09,
end_day = 01, 01, 01,
end_hour = 00, 00, 00,
interval_seconds = 21600
input_from_file = .true.,.true.,.true.,
history_interval = 360, 360, 360,
frames_per_outfile = 1, 1, 1,
restart = .true.,
restart_interval = 14400,

write_hist_at_0h_rst = .true.
adjust_output_times = .true.,
override_restart_timers = .true.

io_form_history = 2
io_form_restart = 2
io_form_input = 2
io_form_boundary = 2

io_form_auxinput2 = 2

io_form_auxinput4 = 2
auxinput4_inname = "wrflowinp_d<domain>",
auxinput4_interval_m = 360, 360, 360, 360,

output_diagnostics = 1
auxhist3_outname = "minmax_d<domain>_<date>",
auxhist3_interval = 1440,
frames_per_auxhist3 = 1,
io_form_auxhist3 = 2

auxhist7_outname = "auxhist_d<domain>_<date>",
auxhist7_interval = 60,
frames_per_auxhist7 = 1, 1,
io_form_auxhist7 = 2

debug_level = 0,
/

&domains
time_step = 180,
use_adaptive_time_step = .true.
step_to_output_time = .true.
target_cfl = 1.2
max_step_increase_pct = 5, 51
starting_time_step = 18
max_time_step = 24
min_time_step = 12

time_step_fract_num = 0,
time_step_fract_den = 1,
max_dom = 1,
parent_id = 2, 2,
parent_grid_ratio = 3, 3,
i_parent_start = 45, 168
j_parent_start = 89, 131
s_we = 1, 1,
s_sn = 1, 1,
e_we = 244, 193,
e_sn = 493, 292,

e_vert = 40, 40, 40,
p_top_requested = 5000,
num_metgrid_levels = 26,
num_metgrid_soil_levels = 4,
dx = 3000, 3000,
dy = 3000, 3000,
grid_id = 3, 4,
parent_time_step_ratio = 3, 3,

feedback = 0,
smooth_option = 0
smooth_cg_topo = .true.,
/

&physics
mp_physics = 51, 51, 51,
cu_physics = 0, 0,
ra_lw_physics = 4, 4, 4,
ra_sw_physics = 4, 4, 4,
bl_pbl_physics = 1, 1, 1,
sf_sfclay_physics = 1, 1, 1,
sf_surface_physics = 4, 4, 4,
radt = 3, 3,
bldt = 0, 0, 0,
cudt = 0, 0, 0,
icloud = 1,
num_land_cat = 21,
sf_urban_physics = 0, 0, 0,
sst_update = 1,
sst_skin = 1,

sf_lake_physics = 1, 1, 1,
use_lakedepth = 1, 1, 1,

co2_ppmv = 386.50418
ch4_ppbv = 1845.6553

/

&noah_mp
opt_run = 1,
opt_sfc = 1,
opt_rsf = 1,
opt_snf = 1,
opt_rad = 1
/

&fdda
grid_fdda = 0
gfdda_inname = "wrffdda_d<domain>"
gfdda_interval_m = 360,
gfdda_end_h = 4800000,
io_form_gfdda = 2
fgdt = 0,
if_no_pbl_nudging_uv = 1
if_no_pbl_nudging_t = 1
if_no_pbl_nudging_q = 1
if_no_pbl_nudging_ph = 1
if_zfac_uv = 0
if_zfac_t = 0
if_zfac_q = 0
guv = 0.0003
gt = 0.0003
gq = 0.0
gph = 0.0003
xwavenum = 3
ywavenum = 3

/

&dynamics
hybrid_opt = 0,
w_damping = 0,
diff_opt = 2, 1, 1, 1,
km_opt = 4, 4, 4, 4,
diff_6th_opt = 0, 0, 0, 0,
diff_6th_factor = 0.12, 0.12, 0.12, 0.12,
base_temp = 290.
damp_opt = 3,
zdamp = 10000., 10000., 10000.,
dampcoef = 0.2, 0.2, 0.2, 0.2,
khdif = 0, 0, 0, 0.,
kvdif = 0, 0, 0, 0.,
non_hydrostatic = .true., .true., .true., .true.,
moist_adv_opt = 1, 1, 1, 1,
scalar_adv_opt = 1, 1, 1, 1,
gwd_opt = 0,
/

&bdy_control
spec_bdy_width = 5,
specified = .true.
/

&grib2
/

&namelist_quilt
nio_tasks_per_group = 0,
nio_groups = 1,
/


NDOWN

run_hours = 0,
run_minutes = 0,
run_seconds = 0,
start_year = 2009, 2009, 2009, 2009
start_month = 08, 08, 08,
start_day = 01, 01, 01,
start_hour = 00, 00, 00,
end_year = 2010, 2010, 2010, 2010
end_month = 09, 09, 09,
end_day = 01, 01, 01,
end_hour = 00, 00, 00,
interval_seconds = 21600
input_from_file = .true.,.true.,.true.,
history_interval = 360, 360, 360,
frames_per_outfile = 1, 1, 1,
restart = .false.,
restart_interval = 14400,

write_hist_at_0h_rst = .true.
adjust_output_times = .true.,
override_restart_timers = .true.

io_form_history = 2
io_form_restart = 2
io_form_input = 2
io_form_boundary = 2

io_form_auxinput2 = 2

io_form_auxinput4 = 2
auxinput4_inname = "wrflowinp_d<domain>",
auxinput4_interval_m = 360, 360, 360, 360,

output_diagnostics = 1
auxhist3_outname = "minmax_d<domain>_<date>",
auxhist3_interval = 1440,
frames_per_auxhist3 = 1,
io_form_auxhist3 = 2

auxhist7_outname = "auxhist_d<domain>_<date>",
auxhist7_interval = 60,
frames_per_auxhist7 = 1, 1,
io_form_auxhist7 = 2

debug_level = 0,
/

&domains
time_step = 120,
use_adaptive_time_step = .ture.
step_to_output_time = .true.
target_cfl = 1.2
max_step_increase_pct = 5, 51
starting_time_step = 180
max_time_step = 360
min_time_step = 120
time_step_fract_num = 0,
time_step_fract_den = 1,
max_dom = 2,
parent_id = 1, 2, 2,
parent_grid_ratio = 5, 3, 3,
i_parent_start = 36, 45, 168
j_parent_start = 19, 89, 131
s_we = 1, 1, 1,
s_sn = 1, 1, 1,
e_we = 271, 244, 193,
e_sn = 341, 493, 292,

e_vert = 40, 40, 40,
p_top_requested = 5000,
num_metgrid_levels = 26,
num_metgrid_soil_levels = 4,
dx = 9000, 3000, 3000,
dy = 9000, 3000, 3000,
grid_id = 2, 3, 4,
parent_time_step_ratio = 5, 3, 3,

feedback = 0,
smooth_option = 0
smooth_cg_topo = .true.,
/

&physics
mp_physics = 51, 51, 51,
cu_physics = 6, 0, 0,
ra_lw_physics = 4, 4, 4,
ra_sw_physics = 4, 4, 4,
bl_pbl_physics = 1, 1, 1,
sf_sfclay_physics = 1, 1, 1,
sf_surface_physics = 4, 4, 4,
radt = 9, 3, 3,
bldt = 0, 0, 0,
cudt = 0, 0, 0,
icloud = 1,
num_land_cat = 21,
sf_urban_physics = 0, 0, 0,
sst_update = 1,
sst_skin = 1,

sf_lake_physics = 1, 1, 1,
use_lakedepth = 1, 1, 1,

co2_ppmv = 386.50418
ch4_ppbv = 1845.6553

/

&noah_mp
opt_run = 1,
opt_sfc = 1,
opt_rsf = 1,
opt_snf = 1,
opt_rad = 1
/

&fdda
grid_fdda = 0
gfdda_inname = "wrffdda_d<domain>"
gfdda_interval_m = 360,
gfdda_end_h = 4800000,
io_form_gfdda = 2
fgdt = 0,
if_no_pbl_nudging_uv = 1
if_no_pbl_nudging_t = 1
if_no_pbl_nudging_q = 1
if_no_pbl_nudging_ph = 1
if_zfac_uv = 0
if_zfac_t = 0
if_zfac_q = 0
guv = 0.0003
gt = 0.0003
gq = 0.0
gph = 0.0003
xwavenum = 3
ywavenum = 3

/

&dynamics
hybrid_opt = 0,
w_damping = 0,
diff_opt = 2, 1, 1, 1,
km_opt = 4, 4, 4, 4,
diff_6th_opt = 0, 0, 0, 0,
diff_6th_factor = 0.12, 0.12, 0.12, 0.12,
base_temp = 290.
damp_opt = 3,
zdamp = 10000., 10000., 10000.,
dampcoef = 0.2, 0.2, 0.2, 0.2,
khdif = 0, 0, 0, 0.,
kvdif = 0, 0, 0, 0.,
non_hydrostatic = .true., .true., .true., .true.,
moist_adv_opt = 1, 1, 1, 1,
scalar_adv_opt = 1, 1, 1, 1,
gwd_opt = 0,
/

&bdy_control
spec_bdy_width = 5,
specified = .true.
/

&grib2
/

&namelist_quilt
nio_tasks_per_group = 0,
nio_groups = 1,
/
Attachments
WRF_help.pdf
(921.51 KiB) Downloaded 16 times

kwerner
Posts: 2287
Joined: Wed Feb 14, 2018 9:21 pm

Re: Addressing a precipitation bias

Post by kwerner » Thu Jan 28, 2021 5:33 pm

Hi Stefan,
I apologize for the delay in response. We've been preparing for our WRF tutorial taking place this week. Can you let me know which version of the model you are running? Thanks!
NCAR/MMM

stormchasegenie
Posts: 35
Joined: Wed Oct 10, 2018 5:42 pm

Re: Addressing a precipitation bias

Post by stormchasegenie » Fri Jan 29, 2021 12:09 am

No problem, thanks for the reply! Version 4.1.3.
-Stefan

kwerner
Posts: 2287
Joined: Wed Feb 14, 2018 9:21 pm

Re: Addressing a precipitation bias

Post by kwerner » Mon Feb 08, 2021 8:25 pm

Hi Stefan,
I again would like to apologize for the delay. I was out of the office last week and am trying to get caught up now. Thank you so much for your patience.

"w_damping" only affects the centers of strong updrafts, so its general effect should be fairly small. I've consulted with our physics expert. They said they think adaptive time stepping is likely unnecessary, and that the value of 180 is large. It is not clear that there is much strong convection here that requires it, and dt=5*dx should be fine. They really aren't sure why there would be more evaporation and precip in the nest, but you should check the values in land-uses, vegetation fraction, soil moisture difference and q2.

We also noticed that you are changing your "grid_id" and your "parent_id" for the ndown, and then the 3km simulation. You don't need to change those values, and we actually aren't sure how that could be affecting it - maybe not at all, but it would be a good test to set those back to the original values and run a quick test to see if that makes any difference. Also try turning off adaptive time-step.
NCAR/MMM

stormchasegenie
Posts: 35
Joined: Wed Oct 10, 2018 5:42 pm

Re: Addressing a precipitation bias

Post by stormchasegenie » Mon Feb 08, 2021 9:02 pm

Not a problem at all, thanks for the reply. I will dig into the ndown namelist a little.... I didn't know that was incorrect procedure, and I will conduct tests to make sure this wasn't an erroneous step. Meanwhile, I think the biases I am seeing are the result of a systematic wet vapor bias in the parent domain.

All my best,
-Stefan, UCLA

stormchasegenie
Posts: 35
Joined: Wed Oct 10, 2018 5:42 pm

Re: Addressing a precipitation bias

Post by stormchasegenie » Mon Feb 08, 2021 9:26 pm

As a follow up,

The use of a different grid_id and parent_id in ndown and in the "run" namelist doesn't change the results. Also, why do you recommend moving away from adaptive time stepping? It saves ~20% of the computing costs...

-Stefan

kwerner
Posts: 2287
Joined: Wed Feb 14, 2018 9:21 pm

Re: Addressing a precipitation bias

Post by kwerner » Thu Feb 11, 2021 11:28 pm

Hi Stefan,
Thanks for letting me know the result of the grid_id and parent_id. As for using adaptive time stepping, if you are seeing better/faster results with it, then it's perfectly fine to use. The physics specialist didn't think it was necessary, but you are the one running this simulation, so you know best what you're seeing! As for the systematic wet vapor bias - do you think this is the result of the input data, or something going wrong with the model?
NCAR/MMM

stormchasegenie
Posts: 35
Joined: Wed Oct 10, 2018 5:42 pm

Re: Addressing a precipitation bias

Post by stormchasegenie » Fri Feb 12, 2021 12:32 am

Thanks as always for the insight!

I am pretty sure that the biases that I am seeing are the result of biases from outer nests propagating into the 3-km inner grid. Since those biases are reasonable, I think I can live with the final biases that I have shown here.

Thanks again,
-Stefan

kwerner
Posts: 2287
Joined: Wed Feb 14, 2018 9:21 pm

Re: Addressing a precipitation bias

Post by kwerner » Fri Feb 12, 2021 11:32 pm

Stefan,
Great! Thanks for the update.
NCAR/MMM

Post Reply

Return to “Dynamics and Numerics”