WRFCHEM Namelist Options
Much of the following is based on the WRF-Chem user guides. For more information on these topics, please use the following links:
AWR Version 3 Modeling System User's Guide http://www2.mmm.ucar.edu/wrf/users/docs/user_guide_V3/contents.html
A Description of the Advanced Research WRF Version 3 (Skamarock et. al., 2008) http://www.mmm.ucar.edu/wrf/users/docs/arw_v3.pdf
WRF/Chem Version 3.2 User's Guide (Peckham et. al., 2010) http://www.scribd.com/doc/44862216/Users-Guide
WRF/Chem Version 3.3 User's Guide (Peckham et. al., 2011) http://ruc.noaa.gov/wrf/WG11/Users_guide.pdf
Guide on setting model output through the namelist: http://www.mmm.ucar.edu/wrf/OnLineTutorial/Class/cases/reg.htm
These are the standard namelist.input options to be used
RONOCO Summer Campaign Namelist
This is the namelist for the single Domain run, the restart files from which will be used for all the nested domain runs.
&time_control run_days = 0, run_hours = 0, run_minutes = 0, run_seconds = 0, start_year = 2010, 2010, 2010, start_month = 07, 07, 07, start_day = 13, 13, 13, start_hour = 00, 00, 00, start_minute = 00, 00, 00, start_second = 00, 00, 00, end_year = 2010, 2010,2010, end_month = 07, 07, 07, end_day = 16, 30, 30, end_hour = 00, 00, 00, end_minute = 00, 00, 00, end_second = 00, 00, 00, interval_seconds = 21600, input_from_file = .true.,.true.,.true., history_interval = 360, 60, 60, frames_per_outfile = 1, 1, 1, restart = .false., restart_interval = 360, io_form_history = 2, io_form_restart = 2, io_form_input = 2, io_form_boundary = 2, auxinput1_inname = "met_em.d<domain>.<date>", auxinput6_inname = 'wrfbiochemi_d01', auxinput7_inname = 'wrffirechemi_d<domain>', auxinput8_inname = 'wrfchemi_gocart_bg_d<domain>', auxinput5_interval_m = 60, 60, 60, auxinput7_interval_m = 86400, 86400, 86400, auxinput8_interval_m = 86400, 86400, 86400, io_form_auxinput2 = 2, io_form_auxinput5 = 2, io_form_auxinput6 = 0, io_form_auxinput7 = 0, io_form_auxinput8 = 0, debug_level = 0, / &dfi_control / &Options for adaptive time step use_adaptive_time_step = .true., step_to_output_time = .true., target_cfl = 1.2, 1.2,1.2, max_step_increase_pct = 5, 51,51, starting_time_step = -1, -1,-1, max_time_step = -1, -1,-1, min_time_step = -1, -1,-1, adaptation_domain = 1, / &domains time_step = 90, time_step_fract_num = 0, time_step_fract_den = 1, max_dom = 1, s_we = 1,1,1, e_we = 134,157,202, s_sn = 1,1,1, e_sn = 146,175,268, s_vert = 1, 1, 1, e_vert = 28, 28, 28, num_metgrid_levels = 17, dx = 15000,5000,1666.667, dy = 15000,5000,1666.667, grid_id = 1,2,3, parent_id = 1,1,2, i_parent_start = 1,53,63, j_parent_start = 1,37,23, parent_grid_ratio = 1,3,3, parent_time_step_ratio = 1,3,3, feedback = 1, smooth_option = 0, p_top_requested = 5000, zap_close_levels = 50, 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., / &physics mp_physics = 2, 2, 2, progn = 1, 1, 1, ra_lw_physics = 4, 4, 4, ra_sw_physics = 2, 2, 2, radt = 5, 5, 5, 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, cugd_avedx = 1, cudt = 0, 0, 0, isfflx = 1, ifsnow = 1, icloud = 1, surface_input_source = 1, num_soil_layers = 4, sf_urban_physics = 1, 1, 1, mp_zero_out = 2, mp_zero_out_thresh = 1.e-12 maxiens = 1, maxens = 3, maxens2 = 3, maxens3 = 16, ensdim = 144, cu_rad_feedback = .true., / &fdda / &dynamics rk_ord = 3, w_damping = 1, diff_opt = 1, km_opt = 4, base_temp = 290. damp_opt = 0, zdamp = 5000., 5000., 5000., dampcoef = 0.01, 0.01, 0.01, diff_6th_opt = 0, diff_6th_factor = 0.12, khdif = 0, 0, 0, kvdif = 0, 0, 0, non_hydrostatic = .true., .true., .true., moist_adv_opt = 2, 2, 2, scalar_adv_opt = 2, 2, 2, chem_adv_opt = 2, 2, 2, tke_adv_opt = 2, 2, 2, tracer_adv_opt = 2, 2, 2, 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, / &bdy_control spec_bdy_width = 5, spec_zone = 1, relax_zone = 4, specified = .true., .false., .false., periodic_x = .false., .false., .false., symmetric_xs = .false., .false., .false., symmetric_xe = .false., .false., .false., open_xs = .false., .false., .false., open_xe = .false., .false., .false., periodic_y = .false., .false., .false., symmetric_ys = .false., .false., .false., symmetric_ye = .false., .false., .false., open_ys = .false., .false., .false., open_ye = .false., .false., .false., nested = .false., .true., .true., / &grib2 / &namelist_quilt nio_tasks_per_group = 0, nio_groups = 1, / &chem kemit = 5, chem_opt = 402, 402, 402, bioemdt = 30, 6, 6, photdt = 30, 30, 30, chemdt = 4, 1.333,0.444, frames_per_emissfile = 1, io_style_emissions = 2, emiss_inpt_opt = 121,121,121, emiss_opt = 10, 10,10, chem_in_opt = 0, 0,0, phot_opt = 2, 2,2, gas_drydep_opt = 1, 1,1, aer_drydep_opt = 1, 1,1, bio_emiss_opt = 1, 1,1, gas_bc_opt = 0, 0,0, gas_ic_opt = 0, 0,0, aer_bc_opt = 0, 0,0, aer_ic_opt = 0, 0,0, gaschem_onoff = 1, 1,1, aerchem_onoff = 1, 1,1, wetscav_onoff = 1, 1,1, cldchem_onoff = 1, 1,1, vertmix_onoff = 1, 1,1, chem_conv_tr = 1, 1,1, seas_opt = 2, dust_opt = 0, dmsemis_opt = 0, biomass_burn_opt = 0,0,0, plumerisefire_frq = 30,30,30, have_bcs_chem = .true., .true.,.true., aer_ra_feedback = 1,1,1, /
How To Define Time Control And Domains In The Namelist File
How to implement the adaptive time step option
To make the model use adaptive time steps, add these lines to your namelist.input file at the end of the &domain section:
&Options for adaptive time step use_adaptive_time_step = .true., .true., step_to_output_time = .true., .true., target_cfl = 1.2, 1.2, max_step_increase_pct = 5, 51, starting_time_step = -1, -1, max_time_step = -1, -1, min_time_step = -1, -1, adaptation_domain = 1,
Physics Parameterisations - Identified Problems and Recommendations
The following is a series of recommendations physics options thus far identified when using WRf-Chem version 3.2.1 with Crimech gas phase chemistry and Mosaic aerosol (chem_opt = 401). The current recommended physics parameterisations for running the UK domain in summer are as follows (for set-up with parent grid dx~15km, first nest dx~5km, second nest dx~1.6km, SAN 10/10/11):
&physics mp_physics = 2, 2, 2, progn = 1, 1, 1, ra_lw_physics = 4, 4, 4, ra_sw_physics = 2, 2, 2, radt = 5, 5, 5, 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, cugd_avedx = 1, cudt = 0, 0, 0, isfflx = 1, ifsnow = 1, icloud = 1, surface_input_source = 1, num_soil_layers = 4, sf_urban_physics = 1, 1, 1, mp_zero_out = 2, mp_zero_out_thresh = 1.e-12 maxiens = 1, maxens = 3, maxens2 = 3, maxens3 = 16, ensdim = 144, cu_rad_feedback = .true., /
- The available physical parameterisations can be broken down into the following 5 broad categories:
- Microphysics (mp_physics)
Radiation (ra_lw_physics & ra_sw_physics)- split into longwave (LW) and shortwave (SW) radiation.
Surface (sf_sfclay_physics & sf_surface_physics).
- Planetary Boundary Layer (bl_pbl_physics).
- Cumulus Parameterisation (cu_physics).
- The following should always be used when using chemistry. If these options are not turned on, the WRF advections scheme has a tendency to produce unrealistically low values, known as "digging holes" (Peckham, 2010)
chem_adv_opt = 2, moist_adv_opt = 2, scaler_adv_opt = 2, diff_6th_opt = 0,
- IMPORTANT - in previous runs, we have not defined the scaler_adv_opt in the namelist. We need to put the extra line in the namelist defining this option, or it may cause errors SAN 28/09/12
scaler_adv_opt = 2,
- Currently, the only microphysics option compatible with wet scavenging in version 3.2 is the Lin microphysics scheme. Morrinson 2-moment will be available with V 3.3. Set progn = 1 when using Lin schem scheme. This sets up a prognostic cloud droplet number, turning the Lin scheme into a second-moment microphysical scheme.
mp_physics = 2, progn = 1,
- The only cumulus parameterisation that can be used with WRF-Chem is the Grell scheme:
cu_physics = 5,
Only use with dx > 2km. If dx<=2km, set cu_physics = 0.
If 2km<dx<10km, set cugd_avedx=3. This allows for subsidence between cells. If dx>10km, set cug_avedx=1. cudg_avedx is a global variable, so if nesting, set to what it should be for the largest grid resolution, and turn cu_physics off for dx <5km.
- The choice of PBL scheme is contentious, it is recommended to carry a sensitivity study comparing the YSU and MYJ schemes and use the most suitable scheme. The PBL scheme must be used with the correct associated surface layer scheme.
- To use the YSU scheme:
sf_sfclay_physics = 1, sf_surface_physics = 2, sf_pbl_physics = 1,
- To use MYJ scheme:
sf_sfclay_physics = 2, sf_surface_physics = 2, sf_pbl_physics = 2,
- It was found that due to its higher BL, the YSU results in more diluted chemical and aerosol concentrations. In addition, the MYJ generally simulates the nighttime atmosphere better. We therefore chose to use the MYJ scheme for the RONOCO campaign.
- We should switch off the idealised chemical profiles:
gas_bc_opt = 0, gas_ic_opt = 0, aer_bc_opt = 0, aer_ic_opt = 0,
- If the chemistry timestep is set to 0 (chem_dt = 0) then it will automatically be set to the same as the meteorological timestep. It is recommended that this be the case for best results. However, this will slow the running of the model, and a longer timestep may be necessary.
running with biomass burning emissions
BUG WARNING: If using MOSAIC aerosol, please use the Manchester house developed version of WRF-chem, or the emissions will not be read in correctly.
Prior to running WRf-chem, you will have needed to create wrffire_chemi files for each domain and day you are running for, using PREP-chem and convert_emiss.
Set the following options in the namelist:
In &time_control, set the auxput setting for fire emissions (aux_input 7):
auxinput7_inname = 'wrffirechemi_d<domain>_<date>', auxinput7_interval_m = 1440, frames_per_auxinput7 = 1, io_form_auxinput7 = 2,
In &chem, turn on the fire emissions settings:
biomass_burn_opt = 1, plumerisefire_frq = 30,
- If running with the Manchester developed versions of WRF-chem, you may also turn on the diurnal cycle for biomass burning emissions:
bburn_diurnal = .true.,
How To Set-up For Nesting
When using nesting with WRF-Chem, make sure WRF-Chem is compiled for nesting (select 1 = basic when running configure before you compile WRF-Chem).
- There are 3 ways to run nesting in WRF:
- 1-way concurrent
- 2-way concurrent
1-way consecutive using ndown.exe
- 1-way consecutive should not be used when running with WRF-Chem, as microphysical variables are not passed between nests.
Setting up the WPS for nesting
The convention for writing namelists with nests is to write the value for each variable for the outermost nest first, with the value for each further nest separated by commas. Not all variables need to be defined for each nest. Check the files registry.wrfvar and registry.chem; all variables with dimension = max_domains need to be set for each domain.
- Set max_dom to be equal to the number of nests.
- Define the start_date and end_date for each domain. It is not necessary for the nests to start or end at the same time. However, an inner domain cannot start before or finish after its parent.
- Set parent_id = 1, 1, 2, 3,...
- parent_grid_ratio is the horizonatal resolution ratio between each nest and its parent. It must be an integer ratio. For two-way nesting, it is recommended that it is an odd integer. For the most coarse domain, this is set to 1.
- The position of each nest in its parent domain is defined by entering the coordinates of the bottom left corner of each domain in i_parent_start and j_parent_start.
The size of each domain is defined using e_we and e_sn. The width and length of each domain must satisfy the formula: e_we - 1 = nr, where r is the parent_grid_ratio and n is a positive integer.
- Define the resolution only for the most coarse domain.
Running concurrent nests
As for the namelist.wps, when running multiple domains at the same time the namelist must be edited with multiple columns for many variables.
- Set the start/end times, max_dom, parent_id, i/j start points, domain dimensions and grid ratio as done for the namelist.wps. In addition, you will need to explicitly define the grid_id and the parent_time_step_ratio. The time step ratio is usually the same as the grid ratio.
In &time_control For real data runs, set input_from_file = .true., .true,...
- If the fine grid has the same start time as its parent, set fine_input_stream = 0, 0,... If they start at different times, set fine_input_stream = 0, 2, ...
- Set aux_input_5_interval_m = 60, 60, ...
In &domains, set feedback = 0 for one-way nesting, or 1 for two-way nesting.
- smooth_option defines the smooth option used for the parent domain over the area of the finer domain when using two-way nesting. Can be set to 0, 1 or 2. 0 = no smoothing, 1 1-2-1 smoothing, 2 = smoothing-desmoothing
grid_id = 1, 2, 3, ...
In the &bdy_control section, set specified = .true., .false., ... This defines whether the domain inputs boundary conditions from file or not. As a nested domains use the outer domain to define its boundaries, this needs to be false for them.
nested = .false., .true, ...
In general, the physics and chemistry options should be set to be the same for each domain. Make sure progn = 1, 1, ... if using mp_physics = 2 . The possible exceptions to this rule are as follows:
The cumulus physics options need to be set for each grid to be appropriate for the size of the domain. If dx <5km, set cu_physics = 0. Please see the above instructions for more details.
- For timestep options (e.g. chemdt, cudt etc.), these should be scaled according to the grid ratio, unless they are set to 0 (i.e. to be called every timestep). An exception to this is the radt option, which should be the same for all domains, generally 1 minute per km of resolution.
If using cu_physics=5, cugd_avedx should be declared once for all domains. If largest domain has dx>10km, set cugd_avedx = 1, else cugd_avedx = 3.
Changes in namelist from v3.2 to v3.3.1
cu_diag has been added, and should be set to 1 when chem_conv_tr=1 in the &chem section
frames_per_emissfile has been removed as an option
frames_per_auxinput5 replaces frames_per_emissfile for controlling the number of data times per emission file. If it is not included then wrf will assume that *all* emissions are in the first file!
Special options for long simulations
It is necessary to include some options (in the namelist in &physics section) for long simulations. These options include:
sst_update = 1,
Option for updating the sea surface temperature. Turn this on before running real.exe so that that the SST values for the entire duration of the model run are set up in the wrflowinp_d<domain> files. When running wrf.exe, the model will be reading in the SST vaues from these files. Also dont forget to add in the &time_control section of the namelist.input:
&time_control . . . auxinput4_inname = "wrflowinp_d<domain>", auxinput4_interval = 360,360, io_form_auxinput4 = 2,
other options needed for long simulations (add in the &physics section of namelist):
usemonalb = .true.,
- set to true to use monthly averaged albedo fields from geogrid instead of table values (recommended for sst_update=1)
tmn_update = 1,
- Its necessary to calculate and update the deep layer soil temperature (TMN) for long term simulations
sst_skin = 1,
- calculate skin SST useful for long simulations
bucket_mm = 100 or whatever value
- buckect reset value for water equivalent precipitation accumulations
Problem running sst_update=1 with feedback
- When sst_update=1 and feedback=1, the model crashes at the start of the inner domain. In order to overcome this problem we are currently updating the SST values to the restart files:
- 1) With sst_update=1, run real.exe to generate all the SST values (and albedo, vegefra etc) in wrflowinpt files for the entire duration of the model run.
- 2) Replace the SST, background albedo and vegefra values in wrfinput_d02 (inner domain) with those from the wrflowinpt_d02 file
- 3) with sst_update=1 begin wrf run for outer domain. Before the start of the inner domain there is obviosuly no feedback and hence the model is happy to read in SST values from wrflowinpt_d01 file.
- 4) The SST values are updated once every day (at midnight).
- 5) On the day before the start of the inner domain, switch off sst_update (sst_update=0) and replace the SST values in the wrfrestart file with those from wrflowinpt file (for the particular day and hour). Run the model for one day.
- 6) The restart will then use the new updated SST values
- 7) When the inner domain starts,for the inner domain the model will read wrfinput_d02 (and not wrflowinpt_d02) since sst_update flag is off. Hence we will have updated the SST values via the normal input file (wrfinput_d02) and not the wrflowinpt_d02 file.
- 8) Run the model until midnight again
- 9) update the wrfrestart_d01 and wrfrstart_d02 files with the SST values from the two wrflowinput files.
- 10) repeat steps 8 and 9 until we get to the end of the campaign.
!!! Note - these problems only seem to occur when the inner nest starts at a different time to the outer nest - test runs with feedback and SST updates successful over Brazilian domain with inner and outer nest starting at same time - SAN 09/01/13 !!!