==========================================
Best Practices for namelist.input Settings
==========================================
|
See below the default namelist.input file used for running the WRF model (which includes real.exe, wrf.exe, tc.exe, and ndown.exe). Further below are namelist parameter descriptions and suggested practices, along with some additional options that could be useful.
In the below file, some parameters are domain-dependent and therefore expect a setting for each domain, and others only expect a single entry. The number of domains used is determined by max_dom, whose settings tells WRF how many domains to process. It will only read the entries for the number of columns that match max_dom.
|
.. important::
**Do not remove information in additional columns and Do not add multiple settings for single setting parameters**. Doing so will create a running error.
|
|
.. code-block::
&time_control
run_days = 0,
run_hours = 36,
run_minutes = 0,
run_seconds = 0,
start_year = 2019, 2019,
start_month = 09, 09,
start_day = 04, 04,
start_hour = 12, 12,
end_year = 2019, 2019,
end_month = 09, 09,
end_day = 06, 06,
end_hour = 00, 00,
interval_seconds = 10800
input_from_file = .true.,.true.,
history_interval = 60, 60,
frames_per_outfile = 1, 1,
restart = .false.,
restart_interval = 7200,
io_form_history = 2
io_form_restart = 2
io_form_input = 2
io_form_boundary = 2
/
&domains
time_step = 90,
time_step_fract_num = 0,
time_step_fract_den = 1,
max_dom = 2,
e_we = 150, 220,
e_sn = 130, 214,
e_vert = 45, 45,
dzstretch_s = 1.1
p_top_requested = 5000,
num_metgrid_levels = 34,
num_metgrid_soil_levels = 4,
dx = 15000,
dy = 15000,
grid_id = 1, 2,
parent_id = 0, 1,
i_parent_start = 1, 53,
j_parent_start = 1, 25,
parent_grid_ratio = 1, 3,
parent_time_step_ratio = 1, 3,
feedback = 1,
smooth_option = 0
/
&physics
physics_suite = 'CONUS'
mp_physics = -1, -1,
cu_physics = -1, -1,
ra_lw_physics = -1, -1,
ra_sw_physics = -1, -1,
bl_pbl_physics = -1, -1,
sf_sfclay_physics = -1, -1,
sf_surface_physics = -1, -1,
radt = 15, 15,
bldt = 0, 0,
cudt = 0, 0,
icloud = 1,
num_land_cat = 21,
sf_urban_physics = 0, 0,
fractional_seaice = 1,
/
&fdda
/
&dynamics
hybrid_opt = 2,
w_damping = 0,
diff_opt = 2, 2,
km_opt = 4, 4,
diff_6th_opt = 0, 0,
diff_6th_factor = 0.12, 0.12,
base_temp = 290.
damp_opt = 3,
zdamp = 5000., 5000.,
dampcoef = 0.2, 0.2,
khdif = 0, 0,
kvdif = 0, 0,
non_hydrostatic = .true., .true.,
moist_adv_opt = 1, 1,
scalar_adv_opt = 1, 1,
gwd_opt = 1, 0,
/
&bdy_control
spec_bdy_width = 5,
specified = .true.
/
&grib2
/
&namelist_quilt
nio_tasks_per_group = 0,
nio_groups = 1,
/
|
|
|
&time_control Namelist Record
=============================
|
.. csv-table::
:escape: \
:header: parameter name, Description, Notes & Best Practice(s)
:widths: 15, 40, 45
run_days |br| run_hours |br| run_minutes |br| run_seconds, The duration for which the simulation should run, These parameters are ignored when running real.exe - only the beginning/ending date/time are used. |br| |br| When running wrf.exe these values overwrite the end dates if they are less than the end dates. If these are all set to *0* wrf.exe uses the beginning/ending date/time. |br| |br| These parameters are not domain-dependent - do not add additional columns when nesting. |br| |br| For simulations longer than one day\, both *run_days* and *run_hours* can be used\, or just *run_hours* (e.g.\, if the total run length is 36 hours\, *run_days* may be set to *1*\, and *run_hours* is set to *12*\, or just set *run_days=0* and *run_hours=36*.
start_year |br| start_month |br| start_day |br| start_hour, The starting date and time for each model domain, These settings will override the *run_* settings during real.exe. |br| |br| It is okay for a nest start time to be later than its parent domain start time. |br| |br| Additional options not included in the default namelist are *start_minutes* and *start_seconds*
end_year |br| end_month |br| end_day |br| end_hour, The ending date and time for each model domain, These settings will override the *run_* settings during real.exe. |br| |br| Additional options not included in the default namelist are *end_minutes* and *end_seconds*
interval_seconds, The periodic frequency of incoming data (from WPS) in seconds, *met_em* files must be available for all times being processed
input_from_files, A logical that determines whether a nested run will have input files for domains other than d01, Setting this to *true* for nested domains allows real.exe to create *wrfinput_d0* files for the nested domains (if this is set to *false* no *wrfinput_d0* files are created for the nested domains |br| |br| These files will then be read-in as input during the wrf.exe step.
history_interval, Frequency at which data is written to the history (wrfout) file, Default values are in minutes\, but an *_s* or *_h* can be appended to the end of the variable name (e.g.\, history_interval_s) to change this to seconds or hours |br| |br| The value can be different for different domains. |br| |br| This does not determine the frequency to output a new history file - that is determined by *frames_per_outfile* (see below). |br| |br| When troubleshooting to determine exactly where the model is crashing\, it may be best to set this to output at every time_step.
frames_per_outfile, How many *history_interval* time periods are written to each history file, Example 1: start time/date: 2024-08-29_00:00:00\, run_hours=6\, history_interval=180\, frames_per_outfile=1000 - only a single output file (*wrfout_d01_2024-08-29_00:00:00*) is created. The file will contain 3 output times (hour 00\, hour 03\, and hour 06) |br| |br| Example 2 start time/date: 2024-08-29_00:00:00\, run_hours=6\, history_interval=180\, frames_per_outfile=1 - three output files (*wrfout_d01_2024-08-29_00:00:00*\, *wrfout_d01_2024-08-29_03:00:00*\, and *wrfout_d01_2024-08-29_06:00:00*) are created. Each file will contain only a single output time. |br| |br| To see the times in each output file\, use the command ``ncdump -v Times wrfout_d0X_YYYY-MM-DD_hh:mm:ss`` (using the actual file name). |br| |br| If running a moving nest\, it is best to write one output per file in order to avoid plotting issues during post-processing.
restart, A logical that determines whether this is a restart run, This can only be set to *true* if restart files (*wrfrst_d0*) are available from a previous simulation
restart_interval, The interval at which restart files (*wrfrst_d0*) will be written, Restart files are always a single time per file. |br| |br| When running a very high-resolution or very long simulation\, it is wise to output restart files at a reasonable frequency in case the run stops in the middle for any reason. It is less-costly to start from a restart file\, than to start the run from the beginning.
io_form_history, The output format for history files (*wrfout_d0*), Available Options: 2 = netCDF (default; recommended); 1 = binary format (no supported post-processing software available); 4 = PHDF5 format (no supported post-processing software available); 5 = GRIB1 format; 10 = GRIB2 format; 11 = parallel netCDF format; 102 = split netCDF (no supported post-processing software available) |br| |br| *io_form_history=102* is useful when simulating a very large domain\, which can cause files to exceed the 4 GB maximum\, or when needing to write output very quickly. This is 1 file per processor. |br| |br| It is recommended to leave this set to *2* unless you have a great deal of experience with computing.
io_form_restart, The output format for restart files (*wrfrst_d0*), Available Options: 2 = netCDF (default; recommended); 102 = split netCDF |br| |br| *io_form_restart=102* can be useful when domain sizes are larger than 500x500. This option is easy to use for restart purposes (no experience necessary). This is 1 file per processor\, and with a restart run\, the same number of processors must be used as were used for the original simulation. |br| |br| It is recommended to leave this set to *2* unless you have a great deal of experience with computing.
io_form_input, The output format of the input files (*met_em.d0*), Available Options: 2 = netCDF (default; recommended); 102 = split netCDF (no supported post-processing software available) |br| |br| *io_form_input=102* allows real.exe to read-in split *met_em* files\, and write split *wrfinput* files. To use this option\, the same number of processors must be used for both real.exe and wrf.exe\, which could be very limiting. |br| |br| There is no option for splitting the *wrfbdy_d01* file. |br| |br| It is recommended to leave this set to *2* unless you have a great deal of experience with computing.
io_form_boundary, The output format of the boundary file (*wrfbdy_d01*), Available Options: 2 = netCDF (default; recommended); 4 = PHDF5 format (no supported post-processing software available); 5 = GRIB1 format; 10 = GRIB2 format; 11 = parallel netCDF format |br| |br| It is recommended to leave this set to *2* unless you have a great deal of experience with computing.
debug_level, Increasing this value provides more printed information in the run log files, Setting this to anything other than *0* rarely provides any useful information for error reasoning\, and instead clutters the log file\, making it difficult to read\, and increasing the size. This parameter is not included in the default namelist file\, and it is recommended to not add it\, or to set it to *0* if it is already in the namelist. |br| |br| `See How can I debug the code to find where the model is stopping `_ for better debugging alternatives.
|
|
|
&domains Namelist Record
========================
|
.. csv-table::
:escape: \
:header: parameter name, Description, Notes & Best Practice(s)
:widths: 15, 40, 45
time_step, Time step (in seconds) for model integration, It is recommended to keep this value equal to\, or less than\, 6xDX (in km). |br| |br| When using many vertical levels and/or with map-scale-factors much larger than 1\, a smaller *time_step* will be required. |br| |br| If the model is stopping due to CFL errors (which indicate the model is becoming unstable)\, decreasing this value to about 4xDX (or perhaps even 3xDX) can be helpful. |br| |br| It is recommended to use a time step that evenly divides into the *history_interval* so that output times will be evenly spaced.
time_step_fract_num |br| time_step_fract_den, Numerator and denominator settings for a fractional time step, E.g.\, if desiring a time step of 60.3 seconds\, set *time_step=60*; *time_step_fract_num=3*; and *time_step_fract_den=10*
max_dom, The number of domains used in the simulation, The model will not read any more columns than the number specified here. So\, for e.g.\, of the namelist includes four columns\, but *max_dom=1*\, only the information in the first column will be read by the model.
e_we |br| e_sn, Each domain's full west-east and south-north dimensions (or grid spaces), The values given to these parameters should be the same as those used for these parameters in *namelist.wps* |br| |br| Domains should not be smaller than 100x100 grid spaces.
e_vert, The number of vertical (or Eta) levels onto which real.exe will interpolate the incoming data, This number must be the same for each domain. |br| |br| real.exe calculates reasonable levels from the number of levels requested. To see a list of these levels\, use the command ``ncdump -v ZNW file_name``. |br| |br| To overwrite the levels calculated\, use the *eta_levels* namelist parameter to specify the desired levels (`see &domains namelist options in the WRF Users' Guide `_ for specifics on *eta_levels*. |br| |br| It is not recommended to use fewer than 35 levels. Typically 40-60 levels is recommended. Higher model tops require more levels for a constant dZ.
dzstretch_s, surface stretch factor when using *auto_levels_opt=2*, `See Setting Model Vertical Levels in the WRF Users' Guide `_ for additional information.
p_top_requested, The pressure top (in Pa) to use in the model, This level must be available in the incoming WPS data. |br| |br| The default and recommended value is 5000 Pa\, and it is not suggested to use a level any lower (in the atmosphere) than this.
num_metgrid_levels, The number of incoming (from WPS input data) vertical levels. This is determined by the input data used, If unsure about the number of levels in the data\, you can use the following command: ``ncdump -h met_em.d01. >& log.ncdump`` and look for the value near the top of the *log.ncdump* file.
num_metgrid_soil_levels, The number of incoming (from WPS input data) vertical soil levels. This is determined by the input data used, If unsure about the number of levels in the data\, you can use the following command: ``ncdump -h met_em.d01. >& log.ncdump`` and look for the value near the top of the *log.ncdump* file.
dx |br| dy, Grid distance (or grid resolution) in the x and y directions, The values for nested domains are based on the value for d01 and the *parent_grid_ratio*. For e.g.\, if *max_dom=2*; *parent_grid_ratio=1\, 3*; and *dx*=*dy*=12000*\, because this is a 3:1 ratio\, the value calculated for d02 will be 4000\, but only the value for d01 is required in the namelist. |br| |br| These values must be the same as those in the input file (*met_em.d0*). Use the command ``ncdump -h met_em.d01. >& log.ncdump`` to determine this value.
grid_id, The domain number, The coarsest grid should be set to 1. |br| |br| The values given correspond to each domain. For e.g.\, the parent domain is set to 1; a nest inside that parent is set to 2; a nest inside that nest is set to 3\, etc.
parent_id, The domain number (ID) of each domain's parent, These should be set to the same values as were given in *namelist.wps*. `See Best Practices for namelist.wps <./namelist.wps_best_practices.html>`_ for additional information.
i_parent_start |br| j_parent_start, The parent domain coordinates at the x and y (or i and j) location that overlaps the starting point for the nest in the i and j directions, These should be set to the same values as were given in *namelist.wps*. `See Best Practices for namelist.wps <./namelist.wps_best_practices.html>`_ for additional information.
parent_grid_ratio, The nesting ratio relative to the domain's parent, These should be set to the same values as were given in *namelist.wps*. `See Best Practices for namelist.wps <./namelist.wps_best_practices.html>`_ for additional information.
parent_time_step_ratio, This is how the model defines the *time_step* for nest domains, This should be set to 1 for the coarsest domain. |br| |br| It is not mandatory to match these values to the *parent_grid_ratio*; however\, it is recommended to do so unless you are very familiar with the model. |br| |br| It is recommended to keep the ratios the same for each domain\, unless you are very knowledgeable of the model and have a good reason to not do so.
feedback, This determines whether feedback (two-way nesting) will be used when using nesting, When feedback is on (*feedback=1*)\, coarse domain field values are overwritten by the child domain field values (average of cell values for mass points\, and average of the cell-face values for horizontal momentum points) at coincident points. |br| |br| For masked fields\, only the single point value at the collocating points is fed back. |br| |br| If *parent_grid_ratio* is even\, an arbitrary choice of the southwest corner point value is used for feedback\, which is why an odd *parent_grid_ratio* is recommended. |br| |br| When feedback is off (*feedback=0*)\, it is equivalent to a one-way nested run since nest results are not reflected in the parent domain.
smooth_option, Determines whether smoothing is used for the parent domain in the area of the nest if feedback is on (*feedback=1*), Three options are available: 0 = no smoothing; 1 = 1-2-1 smoothing; 2 = smoothing-desmoothing |br| |br| It is typically recommended to keep this option set to 0.
|
|
|
&physics Namelist Record
========================
|
.. seealso::
For all physics options listed below, see the following resources for additional information:
* `Physics chapter in the WRF Users' Guide `_
* `Physics presentations given during the WRF tutorial <./events/tutorial.html>`_
* `Physics references <./physics_refs.html>`_
|
.. csv-table::
:escape: \
:header: parameter name, Description, Notes & Best Practice(s)
:widths: 15, 40, 45
physics_suite, A set of physics options that performs well for a given application\, and is supported by a sponsoring group, Options are *tropical* and *CONUS*. |br| |br| This setting determines the values for *mp_physics*\, *cu_physics*\, *bl_pbl_physics*\, *sf_sfclay_physics*\, *sf_surface_physics*\, *ra_sw_physics*\, *ra_lw_physics* |br| |br| `See Physics Suites <./physics_suites.html>`_ for detailed information.
mp_physics, Microphysics scheme option, The value should be the same for each domain. If a different option is used for one or more domains\, the model chooses the most complex scheme to use for all domains.
cu_physics, Cumulus parameterization scheme option, For a grid size >10 km\, a cumulus scheme is necessary. It is not necessary when the grid size is < 4km. In between 4km and 10km is a somewhat gray area - try to avoid this range if possible. If you must use this size\, try the GF (*cu_physics=3*) or MSKF (*cu_physics=11*) scheme\, which are scale-aware.
ra_sw_physics, Shortwave radiation scheme option\, which determines computation of clear-sky and cloudy solar fluxes, The same option should be used for each domain. |br| |br| It is recommended to use the RRTMG scheme (option 4).
bl_pbl_physics, Planetary boundary layer (PBL) scheme option - used to distribute surface fluxes with boundary layer eddy fluxes and allow for PBL growth by entrainment, This option should be used for domains of grid size > 500 meters
sf_sfclay_physics, Surface layer physics scheme option, Some options only work with specific *bl_pbl_physics* and/or *sf_surface_physics* options. See the `Physics chapter in the WRF Users' Guide `_ for details. |br| |br| The same option should be used for each domain.
sf_surface_physics, Land surface model (LSM) scheme option, *num_soil_layers* must match this option. |br| |br| The same option should be used for each domain.
radt, Minutes between radiation physics calls during model integration, It is recommended to use 1 minute per km of dx (e.g.\, set to 10 for 10 km parent domain). |br| |br| If using a high-resolution domain and compute time is a concern\, then it is okay to set *radt* to 10-15 min\, along with setting *swint_opt*. |br| |br| The same option should be used for each domain.
bldt, Minutes between boundary layer physics calls during model integration, The same option should be used for each domain. |br| |br| The recommended setting is *0* (every time step) since this does not use much computation.
cudt, Minutes between cumulus physics calls during model integration, The same option should be used for each domain. |br| |br| The recommended setting is *0* (every time step) since this does not use much computation. |br| |br| When using the KF scheme (*cu_physics=1*) this is also used for averaging time for the vertical velocity trigger. |br| |br| This options is not used by the G3 (*cu_physics=5*)or GD (*cu_physics=93*) schemes.
icloud, Option to compute cloud fraction for radiation, ""
num_land_cat, The number of land categories in the input static geogrid data, This value must match the value produced during WPS/geogrid. |br| |br| Available options are: 24: for USGS (default); 28: for USGS if including lake category; 20: for MODIS; 21: for MODIS if including lake category; 40: for NCLD
sf_urban_physics, Option that determines which (if any) urban scheme option is used, The same option should be used for each domain.
fractional_seaice, Turning on (*=1*) tells the model to treat seaice as a fractional field, This option only works with *sf_sfclay_physics=1\,2\,3\,4\,5\,7\,91* |br| |br| When turning this option on\, *seaice_threshold=0* must also be set. |br| |br| When *fractional_sea_ice=0*\, a flag is used for ice or no ice.
isfflx, Determines heat and moisture fluxes from the surface, Use this option to turn off surface sensible and latent heat fluxes for some of the surface physics options. |br| |br| This option may be used to control how surface fluxes are used in idealized simulations (e.g.\, LES). See the `Physics chapter in the WRF Users' Guide `_ for details.
ifsnow, This option can be turned off to remove snow effects for the simple soil model (*sf_surface_physics = 1*), ""
|
|
|
&dynamics Namelist Record
=========================
|
.. csv-table::
:escape: \
:header: parameter name, Description, Notes & Best Practice(s)
:widths: 15, 40, 45
hybrid_opt, Dynamical coordinate option, Options are *0* - uses the original WRF terrain-following coordinate that was default for WRFV3; *1* - uses the Klemp cubic form for etac\, which is the default for WRFV4
w_damping, Vertical velocity damping flag, Options are *1* - with damping; *0* - without damping |br| |br| For real-time/operational runs\, this should always be turned on for model stability (it is only activated when required) |br| |br| Do not use this option for budget studies.
diff_opt, Turbulence and mixing option, ""
km_opt, Eddy coefficient option, ""
diff_6th_opt, 6th order numerical diffusion option, ""
diff_6th_factor, 6th order numerical diffusion non-dimensional rate, The maximum value is 1.0\, which corresponds to complete removal of 2dx wave in one timestep.
base_temp, Base state sea-level (surface) temperature (in K), This option can help to improve simulations when the model top is higher than 20 km (~ 50 mb) |br| |br| This option is only available for real data simulations. |br| |br| This is a representative temperature at sea-level in the middle of the domain\, regardless of the topography height at that point. |br| |br| Typical values range from 270-300 K. |br| |br| This value must be set to the same value through initialization\, model runs\, and restarts.
damp_opt, Upper-level damping flag, ""
zdamp, Damping depth (in meters) from the model top, ""
dampcoef, Damping coefficient (also see *damp_opt* above), ""
khdif, Horizontal diffusion constant (in m\ :sup:`2`/s), ""
kvdif, Vertical diffusion constant (in m\ :sup:`2`/s), ""
non_hydrostatic, Whether running the model in hydrostatic or non-hydrotstatic (default) mode, ""
moist_adv_opt, Positive-definite or monotonic advection to help eliminate over/under prediction of moisture, Options are: *0* - advection with no bounds or filters in place; *1* - positive-definite advection of moisure (default); *2* - monotonic option
scalar_adv_opt, Positive-definite advection of scalars, Options are: *0* - advection with no bounds or filters in place; *1* - positive-definite advection of moisure (default); *2* - monotonic option
gwd_opt, Gravity wave drag option, Can be used for all grid sizes with appropriate input fields from geogrid |br| |br| Options are: *0* - off; *1* - gravity wave drag and blocking; *3* - gravity wave drag\, blocking\, small-scall gravity drag and turbulent orographic form drag.
|
|
|
&bdy_control Namelist Record
============================
|
.. csv-table::
:escape: \
:header: parameter name, Description, Notes & Best Practice(s)
:widths: 15, 40, 45
spec_bdy_width, The number of rows for specified boundary value nudging, This value is the total of *spec_zone* and *relax_zone* (see below). |br| |br| A wider boundary zone may work better for coarser driving data. |br| |br| The max value that should be used is *10*.
specified, Specified boundary conditions, The first row and column are specified with external model values (*spec_zone = 1*\,which should not be changed). |br| |br| The rows and columns in *relax_zone* have values blended from an external model and WRF. |br| |br| The value of *relax_zone* may be changed\, as long as *spec_bdy_width = spec_zone + relax_zone*. |br| |br| This can be used with *periodic_x* in tropical channel simulations. |br| |br| This can only be turned on (*.true.*) for domain 01 - must be false for all other domains. |br| |br| This is for real data cases only.
spec_zone, The number of points in the specified zone (specific boundary condition option), Leave this set to the default of 1.
relax_zone, The number of points in the relaxation zone (specific boundary condition option), A wider boundary zone may work better for coarser driving data.
nested, Nested boundary conditions, This must be set to *true* for nests. |br| |br| This can be used for real or idealized cases.
|
|
|
|
|