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/branches/2019/dev_r11233_obsasm_docfixes/doc/latex/NEMO/subfiles – NEMO

source: NEMO/branches/2019/dev_r11233_obsasm_docfixes/doc/latex/NEMO/subfiles/chap_ASM.tex @ 11296

Last change on this file since 11296 was 11296, checked in by djlea, 5 years ago

#2297 Updates to OBS and ASM documentation - first sweep.

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