New URL for NEMO forge!   http://forge.nemo-ocean.eu

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
chap_ASM.tex in branches/2017/dev_merge_2017/DOC/texfiles/chapters – NEMO

source: branches/2017/dev_merge_2017/DOC/texfiles/chapters/chap_ASM.tex @ 9376

Last change on this file since 9376 was 9376, checked in by nicolasmartin, 6 years ago

Global reorganisation of DOC directory: refactoring & cleaning of TeX source code for readability

File size: 7.4 KB
RevLine 
[6997]1\documentclass[NEMO_book]{subfiles}
2\begin{document}
[2298]3% ================================================================
4% Chapter Assimilation increments (ASM)
5% ================================================================
6\chapter{Apply assimilation increments (ASM)}
7\label{ASM}
8
[2474]9Authors: D. Lea,  M. Martin, K. Mogensen, A. Weaver, ...   % do we keep
[2298]10
11\minitoc
12
13
14\newpage
15$\ $\newline    % force a new line
16
[2483]17The ASM code adds the functionality to apply increments to the model variables:
[2298]18temperature, salinity, sea surface height, velocity and sea ice concentration.
[3294]19These are read into the model from a NetCDF file which may be produced by separate data
20assimilation code.  The code can also output model background fields which are used
[2474]21as an input to data assimilation code. This is all controlled by the namelist
[4147]22\textit{\ngn{nam\_asminc} }.  There is a brief description of all the namelist options
[2474]23provided.  To build the ASM code \key{asminc} must be set.
[2298]24
25%===============================================================
26
[2349]27\section{Direct initialization}
28\label{ASM_DI}
[2298]29
[2349]30Direct initialization (DI) refers to the instantaneous correction
[2298]31of the model background state using the analysis increment.
[2349]32DI is used when \np{ln\_asmdin} is set to true.
[2298]33
[2349]34\section{Incremental Analysis Updates}
35\label{ASM_IAU}
[2298]36
37Rather than updating the model state directly with the analysis increment,
38it may be preferable to introduce the increment gradually into the ocean
39model in order to minimize spurious adjustment processes. This technique
40is referred to as Incremental Analysis Updates (IAU) \citep{Bloom_al_MWR96}.
41IAU is a common technique used with 3D assimilation methods such as 3D-Var or OI.
[2349]42IAU is used when \np{ln\_asmiau} is set to true.
[2298]43
[2483]44With IAU, the model state trajectory ${\bf x}$ in the assimilation window
[2298]45($t_{0} \leq t_{i} \leq t_{N}$)
[2483]46is corrected by adding the analysis increments for temperature, salinity, horizontal velocity and SSH
[2298]47as additional tendency terms to the prognostic equations:
[2349]48\begin{eqnarray}     \label{eq:wa_traj_iau}
[2298]49{\bf x}^{a}(t_{i}) = M(t_{i}, t_{0})[{\bf x}^{b}(t_{0})]
50\; + \; F_{i} \delta \tilde{\bf x}^{a} 
51\end{eqnarray}
[2483]52where $F_{i}$ is a weighting function for applying the increments $\delta
53\tilde{\bf x}^{a}$ defined such that $\sum_{i=1}^{N} F_{i}=1$.
54${\bf x}^b$ denotes the model initial state and ${\bf x}^a$ is the model state
55after the increments are applied.
[2298]56To control the adjustment time of the model to the increment,
57the increment can be applied over an arbitrary sub-window,
58$t_{m} \leq t_{i} \leq t_{n}$, of the main assimilation window,
59where $t_{0} \leq t_{m} \leq t_{i}$ and $t_{i} \leq t_{n} \leq t_{N}$,
60Typically the increments are spread evenly over the full window.
61In addition, two different weighting functions have been implemented.
62The first function employs constant weights,
[2349]63\begin{eqnarray}    \label{eq:F1_i}
[2298]64F^{(1)}_{i}
65=\left\{ \begin{array}{ll}
[2349]66   0     &    {\rm if} \; \; \; t_{i} < t_{m}                \\
67   1/M &    {\rm if} \; \; \; t_{m} < t_{i} \leq t_{n} \\
68   0     &    {\rm if} \; \; \; t_{i} > t_{n}
[2298]69  \end{array} \right.
70\end{eqnarray}
71where $M = m-n$.
72The second function employs peaked hat-like weights in order to give maximum
73weight in the centre of the sub-window, with the weighting reduced
[2483]74linearly to a small value at the window end-points:
[2349]75\begin{eqnarray}     \label{eq:F2_i}
[2298]76F^{(2)}_{i}
77=\left\{ \begin{array}{ll}
[2349]78   0                           &    {\rm if} \; \; \; t_{i}       <     t_{m}                        \\
79   \alpha \, i               &    {\rm if} \; \; \; t_{m}    \leq t_{i}    \leq   t_{M/2}   \\
80   \alpha \, (M - i +1) &    {\rm if} \; \; \; t_{M/2}  <    t_{i}    \leq   t_{n}       \\
81   0                            &   {\rm if} \; \; \; t_{i}        >    t_{n}
[2298]82  \end{array} \right.
83\end{eqnarray}
84where $\alpha^{-1} = \sum_{i=1}^{M/2} 2i$ and $M$ is assumed to be even.
[2349]85The weights described by \eqref{eq:F2_i} provide a
[2298]86smoother transition of the analysis trajectory from one assimilation cycle
[2349]87to the next than that described by \eqref{eq:F1_i}.
[2298]88
89%==========================================================================
[3294]90% Divergence damping description %%%
91\section{Divergence damping initialisation}
92\label{ASM_details}
[2298]93
[3294]94The velocity increments may be initialized by the iterative application of
95a divergence damping operator. In iteration step $n$ new estimates of
96velocity increments $u^{n}_I$ and $v^{n}_I$ are updated by:
97\begin{equation} \label{eq:asm_dmp}
98\left\{ \begin{aligned}
99 u^{n}_I = u^{n-1}_I + \frac{1}{e_{1u} } \delta _{i+1/2} \left( {A_D
100\;\chi^{n-1}_I } \right) \\
101\\
102 v^{n}_I = v^{n-1}_I + \frac{1}{e_{2v} } \delta _{j+1/2} \left( {A_D
103\;\chi^{n-1}_I } \right) \\
104\end{aligned} \right.,
105\end{equation}
106where
107\begin{equation} \label{eq:asm_div}
108\chi^{n-1}_I = \frac{1}{e_{1t}\,e_{2t}\,e_{3t} }
109                \left( {\delta _i \left[ {e_{2u}\,e_{3u}\,u^{n-1}_I} \right]
110                       +\delta _j \left[ {e_{1v}\,e_{3v}\,v^{n-1}_I} \right]} \right).
111\end{equation}
112By the application of \eqref{eq:asm_dmp} and \eqref{eq:asm_dmp} the divergence is filtered
113in each iteration, and the vorticity is left unchanged. In the presence of coastal boundaries
114with zero velocity increments perpendicular to the coast the divergence is strongly damped.
115This type of the initialisation reduces the vertical velocity magnitude  and alleviates the
116problem of the excessive unphysical vertical mixing in the first steps of the model
117integration \citep{Talagrand_JAS72, Dobricic_al_OS07}. Diffusion coefficients are defined as
118$A_D = \alpha e_{1t} e_{2t}$, where $\alpha = 0.2$. The divergence damping is activated by
119assigning to \np{nn\_divdmp} in the \textit{nam\_asminc} namelist a value greater than zero.
120By choosing this value to be of the order of 100 the increments in the vertical velocity will
121be significantly reduced.
122
123
124%==========================================================================
125
[2298]126\section{Implementation details}
127\label{ASM_details}
128
[4147]129Here we show an example \ngn{namasm} namelist and the header of an example assimilation
[2298]130increments file on the ORCA2 grid.
131
132%------------------------------------------namasm-----------------------------------------------------
[9376]133%\fortranfile{namelists/namasm}
[2298]134%-------------------------------------------------------------------------------------------------------------
135
[2474]136The header of an assimilation increments file produced using the NetCDF tool
137\mbox{\textit{ncdump~-h}} is shown below
[2298]138
[9376]139\begin{ccode}
[2298]140netcdf assim_background_increments {
141dimensions:
142        x = 182 ;
143        y = 149 ;
144        z = 31 ;
145        t = UNLIMITED ; // (1 currently)
146variables:
147        float nav_lon(y, x) ;
148        float nav_lat(y, x) ;
149        float nav_lev(z) ;
150        double time_counter(t) ;
151        double time ;
152        double z_inc_dateb ;
153        double z_inc_datef ;
154        double bckint(t, z, y, x) ;
155        double bckins(t, z, y, x) ;
156        double bckinu(t, z, y, x) ;
157        double bckinv(t, z, y, x) ;
158        double bckineta(t, y, x) ;
159
160// global attributes:
161                :DOMAIN_number_total = 1 ;
162                :DOMAIN_number = 0 ;
163                :DOMAIN_dimensions_ids = 1, 2 ;
164                :DOMAIN_size_global = 182, 149 ;
165                :DOMAIN_size_local = 182, 149 ;
166                :DOMAIN_position_first = 1, 1 ;
167                :DOMAIN_position_last = 182, 149 ;
168                :DOMAIN_halo_size_start = 0, 0 ;
169                :DOMAIN_halo_size_end = 0, 0 ;
170                :DOMAIN_type = "BOX" ;
171}
[9376]172\end{ccode}
173
[6997]174\end{document}
Note: See TracBrowser for help on using the repository browser.