Nudging in LMDZ
Sommaire
The concept
For indepth theoretical explanations, see this doc in French (dated 2009, some code détails are obsolete): https://lmdz.lmd.jussieu.fr/le-coin-des-developpeurs/notes-techniques/ressources/guidage_LMDZ.pdf
Nudging is simply adding a forcing term to the GFD equation governing a variable $$V$$ to drive it towards a known value $$V_{analysis}$$ over a given time scale $$\tau$$: \begin{align} \frac{\partial V}{\partial t} = \frac{\partial V}{\partial t}_{GCM} + \frac{V_{analysis}-V}{\tau} \end{align} Where $$V$$ can be zonal wind u, meridional wind v, relative humidity Q, pressure P or temperature T
Nudging is often used in conjunction with zoomed configurations, where strong nudging towards reanalyses in enforced outside the zoomed region.
Nudging parameters in LMDZ
The master parameter to turn nudging on is ok_guide (most often all nudging parameters are put in a guide.def file included in run.def) which must be set to "y" (or equivalently ".true."):
ok_guide = y
("guide" means "nudge" in French).
Then one must select which fields will be nudged via the guide_* parameters:
guide_u=y guide_v=y guide_T=y guide_P=n guide_Q=n
In the example above, nudging is done on horizontal winds (u,v) and on temperature (T) only.
In addition, the user must provide two time scales $\tau$, for each of the nudged variables; one for the inner zoom area tau_max_* and another relative to outside the zoomed area tau_min_*. These time scales are stated in unit of days, e.g.
tau_min_u= 0.0208333 tau_max_u= 10. tau_min_v= 0.0208333 tau_max_v= 10. tau_min_T= 0.0208333 tau_max_T= 10.
In this example all 3 variables are nudged with a time scale of 10 days, i.e very loosely, within the zoomed region and a time scale of 30 minutes (30.*60/86400.= 0.0208333), i.e. very strongly, outside the zoomed region.
Caution:
Ne pas confondre constante de rappel et fréquence d'appel au guidage
Quand on guide :
- On lit les champs typiquement toutes les 6 heures (suivant la disponibiité des champs de guidage).
- On interpole linéairement en temps les champs de guidage.
- On rappelle à chaque pas de temps vers ces champs interpolés avec une constante définie dans guide.def avec les tau_min tau_max.
mais "je nudge à chaque pas de temps".
Nudging files
In addition to stating which variable is nudged and the related time scales, one must provide the fields towards which to nudge (these must be on the same grid as the simulation and must be created separately, e.g. using a re-interpolation of ERA-interim files). These files must be in the directory where LMDZ runs and must be called u.nc, v.nc, T.nc, etc.
Nudging contribution output
One can request that the nudging term be stored in an output file, guide_ins.nc by setting (in guide.def):
guide_sav=y
Nudging towards the wind zonal mean
Quelques précisions :
- Par défaut, on lit un état de guidage 4x / jour, pareil pour l'interpolation sur les niveaux du modèle. Mais ça peut être modifié (paramètres iguide_read, iguide_int).
- Il y a une option au cas où (guide_2D) pour lire un état de guidage 2D (latitude - Pression) et pas 3D.
- L'option guide_zon veut dire qu'on a un terme de rappel qui est uniforme suivant les longitudes :
- on calcule (u-ug) en chaque point
- puis on fait la moyenne zonale de ce nudging. ug n'est pas forcément symétrique ici, mais comme c'est linéaire...
Attention aux interférences avec guide_reg, le plus simple étant peut-être de commenter les lignes "if guide_reg..." dans la routine guide_zonave. Ne pas confondre constante de rappel et fréquence d'appel au guidage
14/12/2021