Scheduled Downtime
On Friday 21 April 2023 @ 5pm MT, this website will be down for maintenance and expected to return online the morning of 24 April 2023 at the latest

Strange aerosol output near north and east boundary

This post was from a previous version of the WRF&MPAS-A Support Forum. New replies have been disabled and if you have follow up questions related to this post, then please start a new thread from the forum home page.

Greetings,

I am running a version of WRF-Chem version 3.5.1 with MOSAIC 8-bin chemistry with aqueous reactions. I am forcing the simulation via a larger WRF-Chem simulation using ndown. I successfully generated the wrfinput and wrfbdy files, and the simulation runs fine. However, between 18-24 h into the simulation, there develops a strange longitudinal (meridional) band where there is almost no aerosol output along the northern (eastern) boundary in the wrfout files. These swaths are ~10 gridpoints wide. This is problem seems to be only limited to aerosols, and the meteorology/gaseous species look just fine. Additionally, the problem doesn't propagate inwards during the simulation, reinforcing my belief that this is not an integration problem but an output problem. I have tinkered around with the tile_sz_* variables, but to no avail.

I have also been tinkering around with the number of processors and nodes I am running this simulation on, and interestingly, changing the number of nodes changes the time it takes for this problem to develop. However, I have only ran the simulation for 24 h maximum before this problem crops up. Of note, I can run the simulation for a month with no issues besides this apparent tiling problem. I am planning to use this WRF-CHem output to force yet another simulation, so these missing ribbons of aerosol output are frustrating. See below the namelist.input file.

Any suggestions?

All the best,
-Stefan
a &time_control
run_days = 5,
run_hours = 0,
run_minutes = 0,
run_seconds = 0,
start_year = 2008, 2008, 2008, 2008,
start_month = 10, 10, 10, 10,
start_day = 01, 01, 01, 01,
start_hour = 00, 00, 00, 00,
start_minute = 00, 00, 00, 00,
start_second = 00, 00, 00, 00,
end_year = 2008, 2008, 2008, 2008,
end_month = 11, 11, 11, 11,
end_day = 01, 01, 01, 01,
end_hour = 00, 00, 00, 00,
end_minute = 00, 00, 00, 00,
end_second = 00, 00, 00, 00,
interval_seconds = 21600,
input_from_file = .true.,.true.,.true.,.true.,
history_interval = 360,
frames_per_outfile = 1, 1, 1, 1,
write_hist_at_0h_rst = .true.
restart = .false.,
restart_interval = 1440,
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

!For chemistry
io_form_auxinput5 = 2, !Chemistry
io_form_auxinput6 = 0, !Biogenic
io_form_auxinput7 = 2, !Fire
io_form_auxinput8 = 2, !GOCART bg
io_form_auxinput12 = 0
io_form_auxinput13 = 0

auxinput5_inname = 'wrfchemi_d<domain>',
auxinput6_inname = 'wrfbiochemi_d01',
auxinput7_inname = 'fire_data/wrffirechemi_d<domain>_<date>',
auxinput8_inname = 'wrfchemi_gocart_bg_d<domain>',
auxinput12_inname = "wrf_chem_input",

auxinput5_interval_m = 144000,
auxinput7_interval_m = 60,
auxinput8_interval_m = 400000,
auxinput12_interval_m = 144000,
auxinput13_interval_m = 144000,

frames_per_auxinput6 = 1
frames_per_auxinput7 = 1
frames_per_auxinput8 = 1
frames_per_auxinput12 = 1
frames_per_auxinput13 = 1

debug_level = 0,

override_restart_timers = .true.

/

&domains
time_step = 150,
max_dom = 1,
e_we = 202, 408,
e_sn = 76, 408,
e_vert = 35, 35, 35
p_top_requested = 5000,
num_metgrid_levels = 38,
num_metgrid_soil_levels = 4,
dx = 37266.19, 3387.836,
dy = 37266.19, 3387.836,
grid_id = 1
i_parent_start = 223, 65,
j_parent_start = 92, 30,

parent_id = 1, 1,
parent_grid_ratio = 1, 11,

parent_time_step_ratio = 1, 5,
feedback = 0,
smooth_option = 00

zap_close_levels = 50
interp_theta = .true.
interp_type = 1
t_extrap_type = 2
force_sfc_in_vinterp = 0
use_levels_below_ground = .true.
use_surface = .true.
lagrange_order = 1
sfcp_to_sfcp = .true.,

tile_sz_x = 25,
tile_sz_y = 37,
/

&physics
mp_physics = 10, 10, 10, 10,
progn = 1,
ra_lw_physics = 4, 4, 4, 4,
ra_sw_physics = 4, 4, 4, 4,
radt = 30, 30, 30, 30,
sf_sfclay_physics = 1, 1, 1, 1,
sf_surface_physics = 2, 5, 5, 5,
bl_pbl_physics = 1, 1, 1, 1,
bldt = 0, 0, 0, 0,
cu_physics = 1, 1, 1, 1,
cu_rad_feedback = .false.,
cudt = 5, 5, 5, 5,
isfflx = 1,
ifsnow = 0,
icloud = 3,
surface_input_source = 1,
sst_update = 1,
num_soil_layers = 4,
mp_zero_out = 0,
topo_wind = 2,
/

bucket_mm = 1.e6
bucket_J = 1.e9

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

&dynamics
rk_ord = 3,
epssm = 0.3
w_damping = 1,
diff_opt = 1,
km_opt = 4,
diff_6th_opt = 1, 0, 0,
diff_6th_factor = 0.12, 0.12, 0.12,
base_temp = 290.
damp_opt = 3,
zdamp = 10000., 5000., 5000.,
dampcoef = 0.7, 0.2, 0.2
khdif = 0, 0, 0,
kvdif = 0, 0, 0,
non_hydrostatic = .true., .true., .true.,
chem_adv_opt = 2,
moist_adv_opt = 2, 1, 1,
scalar_adv_opt = 2, 1, 1,
tke_adv_opt = 2, 0, 0,
time_step_sound = 4, 4, 4,
h_mom_adv_order = 5, 5, 5,
v_mom_adv_order = 3, 3, 3,
h_sca_adv_order = 5, 5, 5,
v_sca_adv_order = 3, 3, 3,
fft_filter_lat = 45.,
/


&bdy_control

periodic_x = .false., .false., .false., .false.,
symmetric_xs = .false.,.false.,.false., .false.,
symmetric_xe = .false.,.false.,.false., .false.,
open_xs = .false.,.false.,.false., .false.,
open_xe = .false.,.false.,.false., .false.,

periodic_y = .false.,.false.,.false., .false.,
symmetric_ys = .false.,.false.,.false., .false.,
symmetric_ye = .false.,.false.,.false., .false.,
open_ys = .false.,.false.,.false., .false.,
open_ye = .false.,.false.,.false., .false.,

nested = .false., .false., .false., .false.,
polar = .false., .false., .false., .false.,

spec_bdy_width = 1,
spec_zone = 1,
relax_zone = 1,
specified = .true., .true., .true., .true.,

/


&grib2
/

&namelist_quilt
nio_tasks_per_group = 0,
nio_groups = 1,
/

&chem
kemit = 1,
kfire = 1,
chem_opt = 37, 37,
frames_per_emissfile = 1,
frames_per_fireemissfile = 1,
emi_inname = 'wrfchemi_d<domain>',
emi_outname = 'wrfchemi_d<domain>',
fireemi_inname = 'fire_data/wrffirechemi_d<domain>_<date>',
fireemi_outname = 'fire_data/wrffirechemi_d<domain>_<date>',
chem_in_opt = 1, 1,
io_form_emissions = 2,
io_style_emissions = 101,
io_style_fireemissions = 101,
chemdt = 0,
bioemdt = 60, 60,
photdt = 30, 30,
emiss_inpt_opt = 1, 1,
emiss_opt = 5, 5,
phot_opt = 2, 2,
gas_drydep_opt = 1, 1,
aer_drydep_opt = 101, 101,
aer_op_opt = 1, 1,
bio_emiss_opt = 1, 1,
gas_bc_opt = 16, 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 = 1, 1,
cldchem_onoff = 1, 1,
vertmix_onoff = 1, 1,
chem_conv_tr = 4, 4,
chem_conv_scav = 1, 1,
seas_opt = 3,
dust_opt = 11,
dmsemis_opt = 1,
biomass_burn_opt = 1, 1,
plumerisefire_frq = 60, 60,
emis_dust_factor = 0.75,
have_bcs_chem = .true., .false.,
aer_ra_feedback = 0, 0,
aer_aerodynres_opt = 2, 2,
ne_area = 64
/
 
hi Stefan,

Does this effect go up through the whole atmosphere, or is it only on one (or a few) model level(s)?

Could you also post a plot of the aerosol fields, so we can see what is happening?

cheers,
Doug
 
Thanks for the reply, Doug,

The problem pretty much goes upwards through every vertical level. However, there are a few tiles that have data at higher levels, but the large scale swath of bad aerosol data near the boundaries remains roughly unchanged. This problem never occurs at the western or southern boundary. I am assuming I cannot upload a picture that could clarify this problem. Finally, the swath of bad data remains roughly 10 grid points wide.

I have tried changing up nproc_*, the time steps, the output intervals, rerunning ndown, etc., but to no avail. Furthermore, I am confident that this is not a boundary condition issue; the wrfbdy file looks just fine. I have also changed the following in the namelist from what was posted previously:

gas_bc_opt = 0, 1,
gas_ic_opt = 0, 1,
aer_bc_opt = 0, 1,
aer_ic_opt = 0, 1,

Thanks again,
-Stefan
 
Hi Stefan,

There is a service for uploading data files (see the post on the front page for info) - so you might be able to use that?

Is there a lot of rain in these grid cells - could it be that your aerosol is being washed out?

For boundaries - I use the default values for my specified boundary width:
spec_bdy_width = 5,
spec_zone = 1,
relax_zone = 4,
your values of 1, 1, 1 for these seem rather narrow to me.

Also, have you tried running without the grid nudging options (setting grid_fdda = 0)?

cheers,
Doug
 
Hi Doug,

Thanks again for the reply. I have tried running with the default boundary options as well as with no nudging. The problem still remains. Interestingly, When I reduce the time step to 2 minutes, the model runs fine. I am looking into the output to see if there is any meteorological anomaly that could explain the output issue. There isn't a lot of precipitation in these grid cells, though.

I don't know why this problem would be time step sensitive near the boundaries.

All the best,
-Stefan
 
Hi Stefan,

That's good - I thought you probably would have tried those anyway, but it's wise to check the basics.

The guideline of 6*dx(km) for calculating the meteorological timestep is just that - a guideline. If you have to use a shorter timestep for a particular domain then do so. If you have complex terrain at the edge of your domain, then the change in terrain height due to differences in the grid resolution between the inner and outer domain (especially if the ratio of the domain grids is quite large) could cause numerical problems, which can only be dealt with by using shorter timesteps.

To reduce the computational cost of decreasing the meteorological timestep, you could decouple the chemistry timestep from it - chemdt=10 (or similar) should work fine (just make sure that all your other timesteps are clean integer multiples of the met time_step variable).

cheers,
Doug
 
Top