Problems with long-time simulations of wrf-chem

Post Reply
wangzheng
Posts: 4
Joined: Mon Apr 20, 2020 9:31 am

Problems with long-time simulations of wrf-chem

Post by wangzheng » Tue Apr 21, 2020 2:44 am

I want to investigate how the dust direct radiative effect affects the climate of east Asia. The control test is the one without dust direct radiative effect. There are two ways to design the control test, but two designs have different results. The first way is to set dust concentration to 0 in chem/optical_driver.F, shown below

Code: Select all

do mm = p_dust_1, p_dust_5
  chem(:,:,:,mm) = 1.e-16 ! initial minimum value for chem
end do
call optical_averaging(...)
The other way is setting dust_opt=0 in namelist.input without changing code. The bias exists even if dust_opt=0 in the first test. The surface temperature bias can be as large as 10 degrees after long-time running.

This is my namelist.input

Code: Select all

&time_control            
run_days                 = 107,
run_hours                = 0,
run_minutes              = 0,
run_seconds              = 0,
start_year               = 2001,
start_month              = 05,
start_day                = 17,
start_hour               = 00,
start_minute             = 00,
start_second             = 00,
end_year                 = 2001,
end_month                = 09,
end_day                  = 01,
end_hour                 = 00,
end_minute               = 00,
end_second               = 00,
interval_seconds         = 21600,
input_from_file          = .true.,
history_interval         = 43200,
frames_per_outfile       = 1000,
restart                  = .false.,
restart_interval         = 43200,
io_form_history          = 2,
io_form_restart          = 2,
io_form_input            = 2,
io_form_boundary         = 2,
iofields_filename        = "myoutfields.txt",
auxhist24_outname        = "auxhist24_d<domain>.nc",
io_form_auxhist24        = 2,
auxhist24_interval       = 360,
frames_per_auxhist24     = 2000,
auxinput4_inname         = "wrflowinp_d<domain>",
auxinput4_interval       = 360,
io_form_auxinput4        = 2,
debug_level              = 0,
/

&domains                 
time_step                = 200,
time_step_fract_num      = 0,
time_step_fract_den      = 1,
max_dom                  = 1,
e_we                     = 188,
e_sn                     = 140,
e_vert                   = 35,
p_top_requested          = 5000,
num_metgrid_levels       = 27,
num_metgrid_soil_levels  = 2,
dx                       = 36000,
dy                       = 36000,
grid_id                  = 1,
parent_id                = 1,
i_parent_start           = 1,
j_parent_start           = 1,
parent_grid_ratio        = 1,
parent_time_step_ratio   = 1,
feedback                 = 1,
smooth_option            = 0,
sfcp_to_sfcp             = .true.,
/

&physics                 
mp_physics               = 2,
mp_zero_out              = 2,
ra_lw_physics            = 4,
ra_sw_physics            = 4,
radt                     = 36,
sf_sfclay_physics        = 1,
sf_surface_physics       = 4,
bl_pbl_physics           = 1,
bldt                     = 0,
topo_wind                = 1,
cu_physics               = 5,
cudt                     = 0,
cu_diag                  = 1,
cu_rad_feedback          = .true.,
cugd_avedx               = 1,
isfflx                   = 1,
ifsnow                   = 0,
icloud                   = 1,
surface_input_source     = 1,
num_soil_layers          = 4,
sf_urban_physics         = 0,
maxiens                  = 1,
maxens                   = 3,
maxens2                  = 3,
maxens3                  = 16,
ensdim                   = 144,
sst_update               = 1,
tmn_update               = 1,
sst_skin                 = 1,
/

&fdda                    
grid_fdda                = 0,
/

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

&bdy_control             
spec_bdy_width           = 10,
spec_zone                = 1,
relax_zone               = 9,
spec_exp                 = 0.33,
specified                = .true.,
nested                   = .false.,
/

&grib2                   
/

&namelist_quilt          
nio_tasks_per_group      = 0,
nio_groups               = 1,
/

&chem
chem_opt                 = 300,
chemdt                   = 10,
chem_in_opt              = 0,
kemit                    = 1,
io_style_emissions       = 2,
emiss_inpt_opt           = 1,
emiss_opt                = 0,
biomass_burn_opt         = 0,
plumerisefire_frq        = 30,
dmsemis_opt              = 1,
seas_opt                 = 1,
dust_opt                 = 0,
dust_schme               = 2,
dust_alpha               = 0.55,
dustwd_onoff             = 0,
bio_emiss_opt            = 0,
bioemdt                  = 30,
phot_opt                 = 0,
photdt                   = 30,
gas_drydep_opt           = 1,
aer_drydep_opt           = 1,
gas_bc_opt               = 1,
gas_ic_opt               = 1,
aer_bc_opt               = 1,
aer_ic_opt               = 1,
gaschem_onoff            = 1,
aerchem_onoff            = 1,
wetscav_onoff            = 0,
cldchem_onoff            = 0,
vertmix_onoff            = 1,
chem_conv_tr             = 1,
aer_ra_feedback          = 1,
aer_op_opt               = 1,
opt_pars_out             = 1,
have_bcs_chem            = .false.,
/
I guess that the bias is from the error of chem(dust), as without changing the code chem(dust) is actually 1.e-16~1.e-12(from boundary initialization). After long-time running, the error grows big. It's only my guess.
Is there any solution to constrain the bias of two control tests? Thanks.

jordanschnell
Posts: 141
Joined: Thu Feb 27, 2020 10:58 pm

Re: Problems with long-time simulations of wrf-chem

Post by jordanschnell » Tue Apr 21, 2020 8:08 pm

Hi,

If I correctly understand the issue you are having (large differences between your two methods of setting dust tracers to 0), I believe this is due to a mismatch between the timing of the optical driver and radiation driver calls. The optical driver is not called at every time step, and so in your first method, the dust values are only reset when the optical driver is called. So unless the current timestep is a multiple of both radt and photdt, there will be dust in the array when it makes it to radiation. That said, I would recommend either modify your code so that dust is set to 1e-16 right before radiation is called (e.g., look for where the array "aero" in module_radiation_driver.F is set, Line 1277 in the version i checked) or stick with dust_opt=0. Hope this helps!

Cheers,

Jordan

wangzheng
Posts: 4
Joined: Mon Apr 20, 2020 9:31 am

Re: Problems with long-time simulations of wrf-chem

Post by wangzheng » Wed Apr 22, 2020 3:21 am

Thanks for your suggestion. I have tested the two schemes by both setting dust_opt=0, and found the large difference. I am using RRTMG radiation scheme. RRTMG_SWRAD and RRTMG_LWRAD do not seem to use the variable "aero". I will start two new tests by both setting photdt=radt=36.

wangzheng
Posts: 4
Joined: Mon Apr 20, 2020 9:31 am

Re: Problems with long-time simulations of wrf-chem

Post by wangzheng » Thu Apr 23, 2020 2:22 am

By both setting dust_opt=0 and photdt=radt=36, the two schemes (whether or not set chem(dust)=1e-16 in optical driver) still show large differences.

jordanschnell
Posts: 141
Joined: Thu Feb 27, 2020 10:58 pm

Re: Problems with long-time simulations of wrf-chem

Post by jordanschnell » Mon Apr 27, 2020 8:28 pm

Hmm, see if you can save out the dust array at high-frequency to see when it clears. I see that you also have chemdt /= 0 - can you set this to 0? Another option might be to set chem(dust) in a location that you are sure will be called at every time step.

wangzheng
Posts: 4
Joined: Mon Apr 20, 2020 9:31 am

Re: Problems with long-time simulations of wrf-chem

Post by wangzheng » Tue May 05, 2020 3:37 am

I finally solved the problem by using nested domain. In my opinion, the 2nd domain do not need boundary condition, so no 1.e-12 appears in the boundary and chem(dust) equals 1.e-16 in all grids, introducing no difference whether or not setting chem(dust)=1.e-16. Maybe it is only a problem about numerical instability.

Post Reply

Return to “Chemistry-meteorology Interactions”