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