Nudging#
Nudging is a form of external forcing that relaxes model fields towards a specified reference state, typically taken from analysis or reanalysis data. It can be used, for example, to keep a forecast close to observed large-scale conditions, or to spin up a model state consistent with an external data source.
A full mathematical description of the nudging scheme is given in the Science Guide. This page describes how to configure and use nudging.
Enabling nudging#
Nudging is enabled per-field via the namelist:external_forcing options
theta_forcing and wind_forcing. Setting either (or both) of these to
'nudging' activates the nudging scheme for potential temperature or the
horizontal wind components respectively:
[namelist:external_forcing]
theta_forcing='nudging'
wind_forcing='nudging'
The namelist:nudging namelist must then be configured as described
below.
Reference data files#
The external reference data used for nudging is read from a file specified
in the namelist:files namelist:
Option |
Description |
|---|---|
|
Path to the directory containing the nudging reference data file. |
|
Name of the file (within |
Configuring the nudging scheme#
The behaviour of the nudging scheme is controlled by the
namelist:nudging namelist:
Option |
Description |
|---|---|
|
Selects the nudging algorithm: |
|
Timescale, in hours, over which potential temperature, zonal wind and meridional wind respectively are relaxed towards the reference state. Setting a timescale to zero disables nudging of that field entirely. |
|
Times, in hours since the start of the run, over which the strength of nudging is ramped up linearly from zero to full strength. This allows nudging to be introduced gradually rather than as a step change. |
|
Time, in hours since the start of the run, at which nudging is switched off. |
|
Number of vertical levels on which the reference data for temperature and wind components are provided. |
|
Model levels defining the vertical extent over which nudging is applied at full strength. |
|
Model levels below/above which nudging is zero. Nudging is tapered
linearly between |
|
Model level enforced as a floor for the tropopause level used to
cap the vertical extent of nudging (see the Science Guide). Set to |
|
( |
|
( |
|
( |
Choosing the stencil extent and envelope width#
The spectral_stencil_extent and spectral_envelope_width options must
be chosen together, and some care is needed:
The Legendre-polynomial filter that underlies the convolution does not have compact support, so truncating it to a finite stencil is itself an approximation. The Gaussian envelope is what makes this truncation acceptable, by bringing the filter smoothly down to a small value by the edge of the stencil.
If
spectral_envelope_widthis too large relative tospectral_stencil_extent, the filter has not decayed sufficiently by the edge of the stencil. The abrupt truncation this causes can amplify, rather than damp, some wavenumbers, leading to noise or numerical instability rather than the intended scale-selective nudging.Conversely, if
spectral_envelope_widthis too small, the envelope suppresses part of the range of wavenumbers betweenspectral_kminandspectral_kmaxthat was intended to be retained, making the filter less selective than requested.Increasing
spectral_stencil_extentallows a largerspectral_envelope_widthto be used safely, but at the cost of a wider halo exchange and increased computational expense.
Because of this trade-off, it is recommended to test any new combination of
spectral_kmin, spectral_kmax, spectral_stencil_extent and
spectral_envelope_width for a given mesh resolution, checking that the
resulting weights decay smoothly across the stencil, before using it in
a forecast or research configuration.
Choosing the vertical extent of nudging#
The four vertical-level options must satisfy
nudging_level_taper_bottom \(\le\) nudging_level_bottom
\(\le\) nudging_level_top \(\le\) nudging_level_taper_top;
this ordering is enforced automatically when the namelist is checked.
Nudging is at full strength between nudging_level_bottom and
nudging_level_top, tapers linearly to zero outside this range, and is
exactly zero at and beyond nudging_level_taper_bottom /
nudging_level_taper_top. Setting a taper level equal to the
corresponding full-strength level removes the ramp on that side, giving an
abrupt step instead of a gradual transition.
Note that these levels are counted differently for the two sets of model levels that nudging acts on: levels holding potential temperature are counted from 0 at the surface, while levels holding density or the horizontal wind components are counted from 1/2 in the lowest level, since they are vertically staggered by half a level relative to the potential temperature levels (see the Science Guide). The same integer level values are used for both, so the two sets of levels see a consistent, vertically-aligned taper profile.
Capping nudging at the tropopause#
The upper end of the vertical range configured above (nudging_level_top
and nudging_level_taper_top) can additionally be capped by the model’s
own diagnosed tropopause level, so that nudging is switched off in the
stratosphere even where the tropopause is currently lower than these
configured levels (see the Science Guide). This behaviour is controlled by
nudging_min_tropopause_level, which sets a floor below which the
diagnosed tropopause level is never allowed to cap nudging:
Setting
nudging_min_tropopause_levelto0means nudging always follows the diagnosed tropopause level, wherever it is.Setting
nudging_min_tropopause_leveltonudging_level_taper_top(or higher) disables the dynamic capping, so nudging always extends up to the fixed levels configured above, regardless of the diagnosed tropopause.Intermediate values allow the diagnosed tropopause to lower the effective top of the nudged region, but prevent it from doing so below the specified floor.
Coarse-mesh nudging#
For efficiency, nudging may be computed on a mesh coarser than the one used by the dynamical core, with the resulting increment mapped back onto the dynamics mesh (see the Science Guide).
Coarse-mesh nudging is controlled from the namelist:multires_coupling
namelist:
Option |
Description |
|---|---|
|
If |
|
Tag-name of the coarser mesh to use when |