Dissipation
Note that there are some slides from the LMDZ Earth Climate Model tutorial sessions: https://lmdz.lmd.jussieu.fr/utilisateurs/formation/winter_2024 in the "Dynamics: grid/temporal discretization/stability/dissipation" course which can be helpful to learn about dissipation in the PCM, why it is there, how it is handled, and what are the underlying parameters.
Description
In the LMDZ grid point model, nonlinear interactions between explicitly resolved scales and subgrid-scale processes are parameterized by applying a scale-selective horizontal dissipation operator based on an $$n$$ time iterated Laplacian $$\Delta^n$$. For the grid point model, for instance, this can be written:
\begin{align}
\label{def:Wns}
\frac{\partial q}{\partial t} = \frac{(-1)^n}{\tau_{diss}}(\delta x)^{2n}\Delta^nq
\end{align}
where $$q$$ is a field component on which dissipation is applied, $$\delta x$$ is the smallest horizontal distance represented in the model and $$\tau_{diss}$$ is the dissipation timescale for a structure of scale $$\delta x$$. These operators are necessary to ensure the grid point model numerical stability. In practice, the operator is separately applied to three components :
- the divergence of the flow,
- the vorticity of the flow,
- potential temperature.
We classically use n = 1 for the divergence of the flow (nitergdiv=1
in run.def) and n = 2 for flow vorticity and potential temperature (nitergrot=2
and niterh=2
in run.def).
How to change it in the model
In practice, the values of $$n$$ and $$\tau_{diss}$$ are prescribed in the run.def with the keys:
- nitergdiv
- nitergrot
- niterh
for the values of $$n$$ on each field, and the associated time scales $$\tau$$ (in s):
- tetagdiv
- tetagrot
- tetatemp
In run.def, there is also a key idissip (depreciated) or dissip_period which is the rate (in dynamical steps) at which to apply the dissipation (and thus impacts on the overall time step of the dissipation).
In addition there are multiplicative factors on the dissipation that are applied going to the upper layers of the atmosphere (usually more dissipation is required in the upper atmosphere than the lower atmosphere since perturbations traveling upwards will grow in amplitude). These coefficients are:
- dissip_fac_mid : dissipation multiplicative factor in the middle atmosphere
- dissip_fac_up : dissipation multiplicative factor in the upper atmosphere
At which pressure/altitude the middle and upper atmosphere referred to above depends on another input flag: vert_prof_dissip
- if
vert_prof_dissip=0
(default setup for most planets) then the bottom of the transition zone between mid and upper atmosphere is set at the pressure (in Pa) provided by the input parameter dissip_pupstart (set in run.def) and extends over dissip_deltaz km (also set in run.def), assuming a transition zone scale height of dissip_hdelta km. - if
vert_prof_dissip=1
(default setup ifplanet_type=="mars"
!) then the transition between mid and upper atmosphere is set to start at a pseudo-altitude of 70 km, with a transition region of 30km (see inidissip.F for the details)
When the PCM runs it yields a digest of the dissipation multiplicative coefficients and timesteps (look for keyword "inidissip" in the output!) of the likes of:
Dissipation : Multiplication de la dissipation en altitude : dissip_fac_mid = 2.0000000000000000 dissip_fac_up = 20.000000000000000 Transition mid /up: Pupstart,delta = 1000.0000000000000 Pa 10.000000000000000 (km) inidissip: Time constants for lateral dissipation inidissip: dissip_period= 5 dtdiss= 870.83333333333326 dtvr= 174.16666666666666 pseudoZ(km) zvert dt(tetagdiv) dt(tetagrot) dt(divgrad) 0.0 1.0000004E+00 8.7083367E-02 8.7083367E-02 8.7083367E-02 0.0 1.0000096E+00 8.7084169E-02 8.7084169E-02 8.7084169E-02 0.1 1.0000957E+00 8.7091668E-02 8.7091668E-02 8.7091668E-02 0.2 1.0005771E+00 8.7133585E-02 8.7133585E-02 8.7133585E-02 0.5 1.0024163E+00 8.7293751E-02 8.7293751E-02 8.7293751E-02 0.9 1.0079124E+00 8.7772369E-02 8.7772369E-02 8.7772369E-02 1.4 1.0217973E+00 8.8981516E-02 8.8981516E-02 8.8981516E-02 2.1 1.0526661E+00 9.1669671E-02 9.1669671E-02 9.1669671E-02 3.1 1.1136968E+00 9.6984432E-02 9.6984432E-02 9.6984432E-02 4.3 1.2193074E+00 1.0618135E-01 1.0618135E-01 1.0618135E-01 5.7 1.3732887E+00 1.1959055E-01 1.1959055E-01 1.1959055E-01 7.5 1.5542353E+00 1.3534799E-01 1.3534799E-01 1.3534799E-01 9.6 1.7216407E+00 1.4992621E-01 1.4992621E-01 1.4992621E-01 12.1 1.8454911E+00 1.6071151E-01 1.6071151E-01 1.6071151E-01 14.9 1.9221312E+00 1.6738559E-01 1.6738559E-01 1.6738559E-01 18.1 1.9631130E+00 1.7095442E-01 1.7095442E-01 1.7095442E-01 21.4 1.9826551E+00 1.7265621E-01 1.7265621E-01 1.7265621E-01 24.8 1.9916537E+00 1.7343984E-01 1.7343984E-01 1.7343984E-01 28.1 1.9959119E+00 1.7381066E-01 1.7381066E-01 1.7381066E-01 31.4 1.9979711E+00 1.7398998E-01 1.7398998E-01 1.7398998E-01 34.8 1.9989834E+00 1.7407814E-01 1.7407814E-01 1.7407814E-01 38.1 1.9994871E+00 1.7412200E-01 1.7412200E-01 1.7412200E-01 41.4 1.9997400E+00 1.7414402E-01 1.7414402E-01 1.7414402E-01 44.8 1.9998677E+00 1.7415514E-01 1.7415514E-01 1.7415514E-01 48.1 1.9999325E+00 1.7416079E-01 1.7416079E-01 1.7416079E-01 51.4 1.9999655E+00 1.7416366E-01 1.7416366E-01 1.7416366E-01 54.8 1.9999823E+00 1.7416513E-01 1.7416513E-01 1.7416513E-01 58.1 1.9999910E+00 1.7416588E-01 1.7416588E-01 1.7416588E-01 61.4 1.9999954E+00 1.7416626E-01 1.7416626E-01 1.7416626E-01 64.8 1.9999976E+00 1.7416646E-01 1.7416646E-01 1.7416646E-01 68.1 1.9999988E+00 1.7416656E-01 1.7416656E-01 1.7416656E-01 71.4 1.9999997E+00 1.7416664E-01 1.7416664E-01 1.7416664E-01 74.8 2.0000019E+00 1.7416683E-01 1.7416683E-01 1.7416683E-01 78.1 2.0000163E+00 1.7416809E-01 1.7416809E-01 1.7416809E-01 81.4 2.0001218E+00 1.7417728E-01 1.7417728E-01 1.7417728E-01 84.8 2.0009008E+00 1.7424511E-01 1.7424511E-01 1.7424511E-01 88.1 2.0066545E+00 1.7474616E-01 1.7474616E-01 1.7474616E-01 91.4 2.0490550E+00 1.7843854E-01 1.7843854E-01 1.7843854E-01 94.8 2.3562671E+00 2.0519160E-01 2.0519160E-01 2.0519160E-01 98.1 4.3369577E+00 3.7767674E-01 3.7767674E-01 3.7767674E-01 101.4 1.1438614E+01 9.9611261E-01 9.9611261E-01 9.9611261E-01 104.8 1.8031963E+01 1.5702835E+00 1.5702835E+00 1.5702835E+00 108.1 1.9705847E+01 1.7160508E+00 1.7160508E+00 1.7160508E+00 111.4 1.9959620E+01 1.7381503E+00 1.7381503E+00 1.7381503E+00 114.8 1.9994525E+01 1.7411898E+00 1.7411898E+00 1.7411898E+00 118.5 1.9999423E+01 1.7416164E+00 1.7416164E+00 1.7416164E+00 123.5 1.9999971E+01 1.7416641E+00 1.7416641E+00 1.7416641E+00 129.8 1.9999999E+01 1.7416666E+00 1.7416666E+00 1.7416666E+00 137.1 2.0000000E+01 1.7416667E+00 1.7416667E+00 1.7416667E+00 144.5 2.0000000E+01 1.7416667E+00 1.7416667E+00 1.7416667E+00
Good to know rules and rules of thumb
- If your simulation shows numerical instabilities, a good idea is to increase dissipation. This means decreasing parameters $$\tau$$ and/or increasing dissip_fac_up (and to a lesser extent dissip_fac_mid).
- Optimal values for the dissipation timescales depends on the resolution of the horizontal grid. The higher the resolution, the more dissipation we need.
- Because dissipation is applied using an Explicit Euler time marching scheme, it is liable to be unstable if the time step is too large. This is tested at run-time by the model which will generate an error message of the likes of:
STOP : lateral dissipation is too intense and will generate instabilities in the model ! You must increase tetah (or increase dissip_period or increase day_step)