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 NEMO/trunk/doc/latex/NEMO/subfiles – NEMO

source: NEMO/trunk/doc/latex/NEMO/subfiles/chap_ASM.tex

Last change on this file was 14530, checked in by nicolasmartin, 3 years ago

Revert commit 14526, can't use verbatim envs in macro

File size: 8.4 KB
Line 
1\documentclass[../main/NEMO_manual]{subfiles}
2
3\begin{document}
4
5\chapter{Apply Assimilation Increments (ASM)}
6\label{chap:ASM}
7
8%    {\em 4.0} & {\em D. J. Lea} & {\em \NEMO\ 4.0 updates}  \\
9%    {\em 3.4} & {\em D. J. Lea, M. Martin, K. Mogensen, A. Weaver} & {\em Initial version}  \\
10
11\chaptertoc
12
13\paragraph{Changes record} ~\\
14
15{\footnotesize
16  \begin{tabularx}{\textwidth}{l||X|X}
17    Release & Author(s) & Modifications \\
18    \hline
19    {\em   4.0} & {\em ...} & {\em ...} \\
20    {\em   3.6} & {\em ...} & {\em ...} \\
21    {\em   3.4} & {\em ...} & {\em ...} \\
22    {\em <=3.4} & {\em ...} & {\em ...}
23  \end{tabularx}
24}
25
26\clearpage
27
28The ASM code adds the functionality to apply increments to the model variables: temperature, salinity,
29sea surface height, velocity and sea ice concentration.
30These are read into the model from a NetCDF file which may be produced by separate data assimilation code.
31The code can also output model background fields which are used as an input to data assimilation code.
32This is all controlled by the namelist \nam{_asminc}{\_asminc}.
33There is a brief description of all the namelist options provided.
34To build the ASM code \key{asminc} must be set.
35
36%% =================================================================================================
37\section{Direct initialization}
38\label{sec:ASM_DI}
39
40Direct initialization (DI) refers to the instantaneous correction of the model background state using
41the analysis increment.
42DI is used when \np{ln_asmdin}{ln\_asmdin} is set to true.
43
44%% =================================================================================================
45\section{Incremental analysis updates}
46\label{sec:ASM_IAU}
47
48Rather than updating the model state directly with the analysis increment,
49it may be preferable to introduce the increment gradually into the ocean model in order to
50minimize spurious adjustment processes.
51This technique is referred to as Incremental Analysis Updates (IAU) \citep{bloom.takacs.ea_MWR96}.
52IAU is a common technique used with 3D assimilation methods such as 3D-Var or OI.
53IAU is used when \np{ln_asmiau}{ln\_asmiau} is set to true.
54
55With IAU, the model state trajectory ${\mathbf x}$ in the assimilation window ($t_{0} \leq t_{i} \leq t_{N}$)
56is corrected by adding the analysis increments for temperature, salinity, horizontal velocity and SSH as
57additional tendency terms to the prognostic equations:
58\begin{align*}
59  % \label{eq:ASM_wa_traj_iau}
60  {\mathbf x}^{a}(t_{i}) = M(t_{i}, t_{0})[{\mathbf x}^{b}(t_{0})] \; + \; F_{i} \delta \tilde{\mathbf x}^{a}
61\end{align*}
62where $F_{i}$ is a weighting function for applying the increments $\delta\tilde{\mathbf x}^{a}$ defined such that
63$\sum_{i=1}^{N} F_{i}=1$.
64${\mathbf x}^b$ denotes the model initial state and ${\mathbf x}^a$ is the model state after the increments are applied.
65To control the adjustment time of the model to the increment,
66the increment can be applied over an arbitrary sub-window, $t_{m} \leq t_{i} \leq t_{n}$,
67of the main assimilation window, where $t_{0} \leq t_{m} \leq t_{i}$ and $t_{i} \leq t_{n} \leq t_{N}$.
68Typically the increments are spread evenly over the full window.
69In addition, two different weighting functions have been implemented.
70The first function (namelist option \np{niaufn}{niaufn}=0) employs constant weights,
71\begin{align}
72  \label{eq:ASM_F1_i}
73  F^{(1)}_{i}
74  =\left\{
75  \begin{array}{ll}
76    0     &    {\mathrm if} \; \; \; t_{i} < t_{m}                \\
77    1/M &    {\mathrm if} \; \; \; t_{m} < t_{i} \leq t_{n} \\
78    0     &    {\mathrm if} \; \; \; t_{i} > t_{n}
79  \end{array}
80            \right.
81\end{align}
82where $M = m-n$.
83The second function (namelist option \np{niaufn}{niaufn}=1) employs peaked hat-like weights in order to give maximum weight in the centre of the sub-window,
84with the weighting reduced linearly to a small value at the window end-points:
85\begin{align}
86  \label{eq:ASM_F2_i}
87  F^{(2)}_{i}
88  =\left\{
89  \begin{array}{ll}
90    0                           &    {\mathrm if} \; \; \; t_{i}       <     t_{m}                        \\
91    \alpha \, i               &    {\mathrm if} \; \; \; t_{m}    \leq t_{i}    \leq   t_{M/2}   \\
92    \alpha \, (M - i +1) &    {\mathrm if} \; \; \; t_{M/2}  <    t_{i}    \leq   t_{n}       \\
93    0                            &   {\mathrm if} \; \; \; t_{i}        >    t_{n}
94  \end{array}
95                                   \right.
96\end{align}
97where $\alpha^{-1} = \sum_{i=1}^{M/2} 2i$ and $M$ is assumed to be even.
98The weights described by \autoref{eq:ASM_F2_i} provide a smoother transition of the analysis trajectory from
99one assimilation cycle to the next than that described by \autoref{eq:ASM_F1_i}.
100
101%% =================================================================================================
102\section{Divergence damping initialisation}
103\label{sec:ASM_div_dmp}
104
105It is quite challenging for data assimilation systems to provide non-divergent velocity increments.
106Applying divergent velocity increments will likely cause spurious vertical velocities in the model. This section describes a method to take velocity increments provided to \NEMO\ ($u^0_I$ and $v^0_I$) and adjust them by the iterative application of a divergence damping operator. The method is also described in \citet{dobricic.pinardi.ea_OS07}.
107
108In iteration step $n$ (starting at $n=1$) new estimates of velocity increments $u^{n}_I$ and $v^{n}_I$ are updated by:
109
110\begin{equation}
111  \label{eq:ASM_dmp}
112  \left\{
113    \begin{aligned}
114      u^{n}_I = u^{n-1}_I + \frac{1}{e_{1u} } \delta_{i+1/2} \left( {A_D
115          \;\chi^{n-1}_I } \right) \\ \\
116      v^{n}_I = v^{n-1}_I + \frac{1}{e_{2v} } \delta_{j+1/2} \left( {A_D
117          \;\chi^{n-1}_I } \right) \\
118    \end{aligned}
119  \right.,
120\end{equation}
121
122where the divergence is defined as
123
124\[
125  % \label{eq:ASM_div}
126  \chi^{n-1}_I = \frac{1}{e_{1t}\,e_{2t}\,e_{3t} }
127  \left( {\delta_i \left[ {e_{2u}\,e_{3u}\,u^{n-1}_I} \right]
128      +\delta_j \left[ {e_{1v}\,e_{3v}\,v^{n-1}_I} \right]} \right).
129\]
130
131By the application of \autoref{eq:ASM_dmp} the divergence is filtered in each iteration,
132and the vorticity is left unchanged.
133In the presence of coastal boundaries with zero velocity increments perpendicular to the coast
134the divergence is strongly damped.
135This type of the initialisation reduces the vertical velocity magnitude and
136alleviates the problem of the excessive unphysical vertical mixing in the first steps of the model integration
137\citep{talagrand_JAS72, dobricic.pinardi.ea_OS07}.
138Diffusion coefficients are defined as $A_D = \alpha e_{1t} e_{2t}$, where $\alpha = 0.2$.
139The divergence damping is activated by assigning to \np{nn_divdmp}{nn\_divdmp} in the \nam{_asminc}{\_asminc} namelist
140a value greater than zero.
141This specifies the number of iterations of the divergence damping. Setting a value of the order of 100 will result in a significant reduction in the vertical velocity induced by the increments.
142
143%% =================================================================================================
144\section{Implementation details}
145\label{sec:ASM_details}
146
147Here we show an example \nam{_asminc}{\_asminc} namelist and the header of an example assimilation increments file on
148the ORCA2 grid.
149
150\begin{listing}
151  \nlst{nam_asminc}
152  \caption{\forcode{&nam_asminc}}
153  \label{lst:nam_asminc}
154\end{listing}
155
156The header of an assimilation increments file produced using the NetCDF tool
157\mbox{\textit{ncdump~-h}} is shown below
158
159\begin{clines}
160netcdf assim_background_increments {
161dimensions:
162        x = 182 ;
163        y = 149 ;
164        z = 31 ;
165        t = UNLIMITED ; // (1 currently)
166variables:
167        float nav_lon(y, x) ;
168        float nav_lat(y, x) ;
169        float nav_lev(z) ;
170        double time_counter(t) ;
171        double time ;
172        double z_inc_dateb ;
173        double z_inc_datef ;
174        double bckint(t, z, y, x) ;
175        double bckins(t, z, y, x) ;
176        double bckinu(t, z, y, x) ;
177        double bckinv(t, z, y, x) ;
178        double bckineta(t, y, x) ;
179
180// global attributes:
181                :DOMAIN_number_total = 1 ;
182                :DOMAIN_number = 0 ;
183                :DOMAIN_dimensions_ids = 1, 2 ;
184                :DOMAIN_size_global = 182, 149 ;
185                :DOMAIN_size_local = 182, 149 ;
186                :DOMAIN_position_first = 1, 1 ;
187                :DOMAIN_position_last = 182, 149 ;
188                :DOMAIN_halo_size_start = 0, 0 ;
189                :DOMAIN_halo_size_end = 0, 0 ;
190                :DOMAIN_type = "BOX" ;
191}
192\end{clines}
193
194\subinc{\input{../../global/epilogue}}
195
196\end{document}
Note: See TracBrowser for help on using the repository browser.