Difference between revisions of "Variational Data Assimilation"

From WikiROMS
Jump to navigationJump to search
(Replaced content with "<div class="title">Variational Data Assimilation</div> <!-- Edit Template:Variational_Data_Assimilation_TOC to modify this Table of Contents--> <div style="float: left;ma...")   (change visibility)
 
Line 1: Line 1:
<div class="title">Variational Data Assimilation</div>
<div class="title">Variational Data Assimilation</div>


==Incremental, Strong Constraint 4D Variational Data Assimilation==
<!-- Edit Template:Variational_Data_Assimilation_TOC to modify this Table of Contents-->
<div style="float: left;margin: 0 20px 0 0;">{{Variational Data Assimilation TOC}}</div>__TOC__


This memo describes a series of calculations using the new preconditioned version of the ROMS [[Options#IS4DVAR|IS4DVAR]] algorithm based on the Lanczos algorithm. This driver in ROMS is referred to as [[cgradient_lanczos.h]] and will become the default and only [[Options#IS4DVAR|IS4DVAR]] option that will be available and maintained for ROMS.


The conjugate gradient solver for ROMS IS4DVAR is based on the Lanczos method as described by Fisher ([[Bibliography#FisherM_1997a|1997]], [[Bibliography#FisherM_1998a|1998]]). Two versions of preconditioning are available in ROMS IS4DVAR: these are "spectral" preconditioning as described by [[Bibliography#FisherM_1998|Fisher (1998)]], and "Ritz" preconditioning as described by [[Bibliography#TshimangaJ_2008a|Tshimanga ''et al.'' (2008)]]. The "spectral" and "Ritz" nomenclature used here follows that adopted by [[Bibliography#TshimangaJ_2008a|Tshimanga ''et al.'' (2008)]]. The actual implementation of both preconditioners is based on the PhD thesis of [[Bibliography#TshimangaJ_2007a|Tshimanga (2007)]].
==Introduction==
 
The model configuration used in all of the following experiments is the Intra-Americas Sea with <math>40~{\rm km}</math> resolution. Details of the model set-up, forcing, boundary conditions, and IS4DVAR configuration are described in [[Bibliography#PowellBS_2008a|Powell ''et al.'' (2008)]]. The multivariate balance operator is not used in any of these calculations, and only the initial conditions are adjusted. Familiarity with IS4DVAR and its implementation in ROMS is assumed.
 
 
===The Preconditioners===
 
Following [[Bibliography#TshimangaJ_2008a|Tshimanga ''et al.'' (2008)]] the cost function can be expressed in incremental form as:
 
 
{| class="eqno"
|<math display="block">
  J(\delta {\bf x}^k)=\frac{1}{2}
                      (\delta{\bf x}^k-{\bf d}_b^{k-1})^T
                      {\bf B}^{-1}(\delta{\bf x}^k-{\bf d}_b^{k-1})
                      +\frac{1}{2}
                      ({\bf G}^{k-1}\delta{\bf x}^k-{\bf d}_o^{k-1})^T
                      {\bf O}^{-1}({\bf G}^{k-1}\delta{\bf x}^k-{\bf d}_o^{k-1})
</math><!--\eqno{(1)}-->
|(1)
|}
 
 
where <math>{\bf x}</math> represents the ROMS state-vector; <math>\delta {\bf x}^k</math> is the state-vector increment for the <math>k^{\rm th}</math> outer-loop iterate; <math>{\bf d}_b^{k-1}={\bf x}_b-{\bf x}^{k-1}</math> is the deviation of the background state-vector <math>{\bf x}_b</math> from the <math>(k-1)</math> iterate; <math>{\bf d}_o^{k-1}={\bf y}-{\cal G}({\bf x}^{k-1})</math> is the innovation vector with respect to the observations <math>{\bf y}</math> and the <math>(k-1)</math> iterate; <math>{\cal G}({\bf x})\equiv {\bf H}{\cal M}({\bf x})</math> represents nonlinear ROMS state integrated to the observation times by NLROMS (<math>{\cal M}({\bf x})</math>), and interpolated to the observation locations by the observation operator <math>{\bf H}</math> (assumed linear for convenience); and <math>{\bf G}^{k-1}</math> denotes the corresponding time integrated and interpolated increment <math>\delta {\bf x}</math> where the tangent linear model (TLROMS) is linearized about the <math>(k-1)</math> interate, <math>{\bf x}^{k-1}</math>. The matrices <math>{\bf B}</math> and <math>{\bf O}</math> are the background error and observation error covariance matrices respectively.
 
Following [[Bibliography#WeaverAT_2003a|Weaver ''et al.'' (2003)]], a first level of inner-loop preconditioning is performed via a transformation of variable, <math>{\bf v}^k={\bf B}^{-\frac{1}{2}}\delta {\bf x}^k</math>, hereafter referred to as v-space. By default, this first level of preconditioning is always done in ROMS IS4DVAR. ROMS IS4DVAR now provides the option to perform a second level of inner-loop preconditioning. This is activated using the logical flags '''[[Variables#Lprecond|Lprecond]]''' and '''[[Variables#Lritz|Lritz]]''' in the [[s4dvar.in]] file. With '''[[Variables#Lprecond|Lprecond]]=.TRUE.''' preconditioning is activated according to the value of the flag '''[[Variables#Lritz|Lritz]]'''. With '''[[Variables#Lritz|Lritz]]=.FALSE.''' "spectral" preconditioning is performed, while with '''[[Variables#Lritz|Lritz]]=.TRUE.''', "Ritz" preconditioning is used.
 
The second level of preconditioning is only active for <math>k>1</math> (''i.e.'' when more than 1 outer-loop is employed). During the first outer-loop only the first level preconditioner in v-space is used. When '''[[Variables#Lprecond|Lprecond]]=.TRUE.''', a new transformation of variable is performed in the inner-loops according to <math>{\bf y}_k=\prod_{j=1}^{k-1} {\bf P}_j{\bf v}^k</math> where, following Tshimanga (2007):
 
{| class="eqno"
|<math display="block">
  {\bf P}_j = \prod_{i=1}^m [ {\bf I}-(1-\lambda_i^{\frac{1}{2}}){\bf u}_i{\bf u}_i^T ]
              ~~\text{for spectral preconditioning}
</math><!--\eqno{(2)}-->
|(2)
|}
 
{| class="eqno"
|<math display="block">
  {\bf P}_j = \prod_{i=1}^m [ {\bf I}-(1-\theta_i^{\frac{1}{2}}){\bf z}_i{\bf z}_i^T
              +\theta_i^{\frac{1}{2}}w_i{\bf z}_i{{\bf q}_m^j}^T ]
              ~~\text{for Ritz preconditioning}
</math><!--\eqno{(3)}-->
|(3)
|}
 
 
In (2) and (3), <math>i</math> refers to the inner-loop and <math>m</math> is the number of inner-loops used per outer-loop; <math>(\lambda_i,{\bf u}_i)</math> are estimates of the eigenvalue/eigenvector pairs of the Hessian matrix <math>{\bf A}</math>; <math>(\theta_i,{\bf z}_i)</math> are the Ritz value/Ritz vector pairs of <math>{\bf A}</math>; and <math>{\bf q}^j_m</math> is the Lanczos vector for the <math>m^{\rm th}</math> inner-loop of outer-loop <math>j</math>. The factor <math>w_i</math> arises from the formal error in the Ritz vectors <math>{\bf z}_i</math> of the Hessian matrix <math>{\bf A}</math> and is given by <math>w_i={\bf e}^T_m{\bf w}_i\delta_{m-1}/\theta_i</math>, where <math>{\bf Q}_j{\bf w}_i={\bf z}_i</math> and <math>{\bf Q}_j</math> is the matrix of Lanczos vectors from outer-loop <math>j</math>, the vector <math>{\bf e}_m=(0,\ldots,1,\ldots,0)</math> has zero elements except for the <math>m^{\rm th}</math> element which has a value of 1, and <math>\delta_{m-1}={{\rm q}^j_{m-1}}^T{\bf A}{\rm q}^j_m</math> (Fisher, 1997).
 
If, for example, 3 outer-loops are used, then two second level preconditioners will be employed, <math>{\bf P}_1</math> and <math>{\bf P}_2</math>. The preconditioner <math>{\bf P}_1</math> is applied in outer-loop <math>k=2</math> to convert from v-space to <math>{\rm y}_1</math>-space (<math>{\bf y}_1={\bf P}_1{\bf v}</math>), and is based on the Hessian eigenvectors or Ritz vectors computed during outer-loop <math>k=1</math>. The preconditioner <math>{\bf P}_2</math> is applied in outer-loop <math>k=3</math> and is based on the Hessian eigenvectors or Ritz vectors of outer-loop <math>k=2</math>. The change of variable in this case is <math>{\bf y}_2={\bf P}_2{\bf y}_1={\bf P}_2{\bf P}_1{\bf v}</math>, and converts from <math>{\rm y}_1</math>-space to <math>{\rm y}_2</math>-space. In this way the second level preconditioners derived from each subsequent outer-loop are applied sequentially.
 
 
===Illustrative Results===
 
All of the following experiments use ROMS configured for the Intra-Americas Sea with 40~km resolution in which only SST and SSH observations are assimilated ([[Bibliography#PowellBS_2008a|Powell ''et al.'', 2008]]). Data assimilation windows of 1~day, 3~days and 7~days were used.
 
 
====Spectral vs Ritz preconditioning====
 
As noted by [[Bibliography#TshimangaJ_2008a|Tshimanga ''et al.'' (2008)]], the accuracy of the Hessian eigenvectors <math>{\bf u}_i</math> that should be employed during spectral preconditioning is an important factor controlling the behavior the preconditioner. If the <math>{\bf u}_i</math> are normalized to have unit norm, then formally, the error can be defined as <math>\epsilon=\lambda_1^{-1}\|{\bf A}{\bf u}_i-\lambda_i {\bf u}_i\|</math> where <math>\lambda_1</math> is the estimate of the largest eigenvalue of the Hessian matrix <math>{\bf A}</math>. [[Bibliography#TshimangaJ_2008a|Tshimanga ''et al.'' (2008)]] found that if eigenvectors with unacceptably large <math>\epsilon</math> are used in the spectral preconditioner, the performance of the preconditioner can be significantly degraded. The same is true in ROMS as described below.
 
[[Image:cost_fig1.png||center|thumb|850px|'''Figure 1:''' The normalized cost function <math>J</math> computed within inner-loops (curves), and <math>J_{NL}</math> the cost function computed relative to the nonlinear model during outer-loops (open circles). The notation (m,n) refers to the number of outer-loops used, n, and the number of inner-loops per outer-loop, (m+1). The various cases shown are for a 1-day assimilation window: (30,1) no preconditioning (solid black line, black circles); (10,3) no preconditioning (<span style="color:#2E3192">'''solid dark blue line'''</span>, <span style="color:#2E3192">'''dark blue circles'''</span>); (10,3) and spectral preconditioning using 2 eigenvectors (<span style="color:#ED1C24">'''red curve'''</span>, <span style="color:#ED1C24">'''red circles'''</span>), 4 eigenvectors (<span style="color:#00A651">'''green curve'''</span>, <span style="color:#00A651">'''green circles'''</span>), 6 eigenvectors (<span style="color:#00AEEF">'''turquoise line'''</span>, <span style="color:#00AEEF">'''turquoise circles'''</span>), 8 eigenvectors (<span style="color:#EC008C">'''purple line'''</span>, <span style="color:#EC008C">'''purple circles'''</span>), and 10 eigenvectors ('''black dashed curve''', '''black asterisks'''). The horizontal <span style="color:#2E3192">'''dashed blue line'''</span> represents the theoretical minimum value of the cost function given by half the number of assimilated observations.]]
 
Figure 1 shows the value of <math>J</math> computing using (1) for several different configurations of inner-loops and outer-loops for a 1 day assimilation interval. In Fig. 1, <math>J</math> has been normalized by its initial value. For convenience, the notation <math>(m,n)</math> is used where <math>n</math> is the number of outer-loops employed, and <math>m+1</math> is the number of inner-loops per outer-loop. The inner-loop count is <math>m+1</math> rather than <math>m</math> because the first inner-loop of each outer-loop acts as an important initialization step for the Lanczos vector sequence. The total number of iterations performed is <math>(m+1)n</math>.
 
The curves in Fig. 1 show the cost function computed using (1) using the increments from the inner-loops. However, a much more important practical indicator of the overall performance of the data assimilation system is the cost function, <math>J^k_{\rm NL}</math>, computed directly from the NLROMS solution during each outer-loop. Using the previous notation:
 
 
{| class="eqno"
|<math display="block">
  J^k_{\rm NL}=\frac{1}{2}
                ({\bf x}^k-{\bf x}_b)^T
                {\bf B}^{-1} ({\bf x}^k-{\bf x}_b)
                +\frac{1}{2}
                ({\cal G}({\bf x}^k)-{\bf y})^T
                {\bf O}^{-1}({\cal G}({\bf x}^k)-{\bf y})
</math><!--\eqno{(4)}-->
|(4)
|}
 
 
The values of normalized <math>J^k_{\rm NL}</math> are indicated in Fig. 1 as the color-coded symbols <math>\circ</math> or *. The dashed horizontal line in Fig. 1 represents the theoretical minimum value of <math>J</math> given by half the number of observations assimilated during the 1-day interval.
 
For reference, two unpreconditioned IS4DVAR calculations are shown in Fig. 1 corresponding to (30,1) and (10,3). The remaining curves in Fig. 1 show the evolution of <math>J</math> for (10,3) using spectral preconditioning and different numbers of the estimated eigenvectors <math>{\bf u}_i</math> of the Hessian matrix <math>{\bf A}</math>. In all cases, the solution is identical for the first 10 iterations because second level preconditioning is only applied beyond that point. The estimated accuracy <math>\epsilon</math> varies between <math>O(10^{-6})</math> for <math>{\bf u}_1</math> and <math>{\bf u}_2</math> and <math>O(10^{-2})</math> for <math>{\bf u}_i,~~i=[2,10]</math>. Figure 1 reveals that as the number of eigenvectors used increases from 2 to 10, the values of <math>J</math> and <math>J_{\rm NL}</math> increase, indicating that using the less accurate vectors <math>{\bf u}_i</math> degrades the convergence rate of the cost function. This is in agreement with [[Bibliography#TshimangaJ_2008a|Tshimanga ''et al.'' (2008)]]. The acceptable accuracy of the eigenvectors is controlled by the ROMS input parameter [[Variables#HevecErr|HevecErr]], and the experiments in Fig. 1 suggest that [[Variables#HevecErr|HevecErr]] should be chosen to be <math> < 10^{-2}</math>. The best case shown in Fig. 1 corresponds to using 2 eigenvectors. On first inspection, Fig. 1 suggests that the unpreconditioned case (30,1) produces the best solution. This is certainly true for <math>J</math>, however for the more important measure <math>J_{\rm NL}</math>, the spectrally preconditioned (10,3) case using 2 eigenvectors is superior.
 
[[Image:cost_fig2.png||center|thumb|850px|'''Figure 2:''' The normalized cost function <math>J</math> computed within inner-loops (curves), and <math>J_{NL}</math> the cost function computed relative to the nonlinear model during outer-loops (open circles). The various cases shown are for a 1-day assimilation window: (30,1) no preconditioning ('''solid black line''', '''black circles'''); (10,3) no preconditioning (<span style="color:#2E3192">'''solid dark blue line'''</span>, <span style="color:#2E3192">'''dark blue circles'''</span>); (10,3) and Ritz preconditioning using 2 Ritz vectors (<span style="color:#ED1C24">'''red curve'''</span>, <span style="color:#ED1C24">'''red circles'''</span>), 4 Ritz vectors (<span style="color:#00A651">'''green curve'''</span>, <span style="color:#00A651">'''green circles'''</span>), 6 Ritz vectors (<span style="color:#00AEEF">'''turquoise line'''</span>, <span style="color:#00AEEF">'''turquoise circles'''</span>), 8 Ritz vectors (<span style="color:#EC008C">'''purple line'''</span>, <span style="color:#EC008C">'''purple circles'''</span>), and 10 Ritz vectors ('''black dashed curve''', '''black asterisks''').The horizontal <span style="color:#2E3192">'''dashed blue line'''</span> represents the theoretical minimum value of the cost function given by half the number of assimilated observations.]]
 
Figure 2 has the same format as Fig. 1 and shows instead the case where Ritz preconditioning is employed using different numbers of Ritz vectors. As discussed by [[Bibliography#TshimangaJ_2008a|Tshimanga ''et al.'' (2008)]], the Ritz preconditioner is less sensitive to the accuracy <math>\epsilon</math> of the Ritz vectors <math>{\bf z}_i</math> that are used. This is also the case in Fig. 2 where increasing the number of vectors <math>{\bf z}_i</math> used leads to a continual increase in the rate of convergence of <math>J</math> and <math>J_{\rm NL}</math>, despite the fact that <math>\epsilon</math> for each <math>{\bf z}_i</math> is quite large for <math>i>2</math>. In fact, (10,3) using all 10 available <math>{\bf z}_i</math> is the best case in Fig. 2 both in terms of <math>J</math> and <math>J_{\rm NL}</math>.
 
[[Image:cost_fig3.png||center|thumb|850px|'''Figure 3:''' The normalized cost function <math>J</math> computed within inner-loops (curves), and <math>J_{NL}</math> the cost function computed relative to the nonlinear model during outer-loops (open circles). The various cases shown are for a 1-day assimilation window: (10,3) and Ritz preconditioning using 2 Ritz vectors ('''black curve''', '''black circles'''), and 10 Ritz vectors (<span style="color:#ED1C24">'''red curve'''</span>, <span style="color:#ED1C24">'''red asterisks'''</span>); and (10,3) and spectral preconditioning using 2 eigenvectors (<span style="color:#2E3192">'''blue line'''</span>, <span style="color:#2E3192">'''blue circles'''</span>). The horizontal <span style="color:#2E3192">'''dashed blue line'''</span> represents the theoretical minimum value of the cost function given by half the number of assimilated observations.]]
 
Inspection of equations (2) and (3) shows that the spectral and Ritz preconditioners are similar except that the Ritz preconditioner possesses an additional term which accounts for the formal error in the Ritz vector estimates. Therefore, if both preconditioners are restricted to using only accurate eigenvectors (''i.e.'' small <math>\epsilon</math>), both should yield very similar results because the last term in equation (3) will be small. This is confirmed in Fig. 3 which shows <math>J</math> and <math>J_{\rm NL}</math> for (10,3) using spectral and Ritz preconditioning with 2 eigenvectors - the two cases are indistinguishable. Figure 3 also shows the (10,3) case using Ritz preconditioning and 10 Ritz vectors, and indicates that while <math>J</math> is significantly smaller than the case using only 2 vectors, the percentage reduction in <math>J_{\rm NL}</math> is not nearly as marked.
 
 
====Ritz Preconditioning and Iteration Dependence====
 
The results from the previous section indicate that Ritz preconditioning is generally superior to spectral preconditioning and more robust in the sense that it is less sensitive to the accuracy <math>\epsilon</math> of the eigenvectors that are admitted to the preconditioners. In this section the sensitivity of the Ritz preconditioner to the combination of inner- and outer-loops is considered.
 
[[Image:cost_fig4.png||center|thumb|850px|'''Figure 4:''' The normalized cost function <math>J</math> computed within inner-loops (curves), and <math>J_{NL}</math> the cost function computed relative to the nonlinear model during outer-loops (open circles). The various cases shown are for a 1-day assimilation window: (30,1) no preconditioning ('''solid black line''', '''black circles'''); (10,3) no preconditioning (<span style="color:#2E3192">'''solid dark blue line'''</span>, <span style="color:#2E3192">'''dark blue circles'''</span>); (10,3) and Ritz preconditioning using 10 Ritz vectors ('''dashed black curve''', '''black asterisks'''); (15,2) and Ritz preconditioning using 15 Ritz vectors (<span style="color:#00A651">'''green curve'''</span>, <span style="color:#00A651">'''green circles'''</span>); and (5,6) and Ritz preconditioning using 4 Ritz vectors (<span style="color:#ED1C24">'''red curve'''</span>, <span style="color:#ED1C24">'''red circles'''</span>).The horizontal <span style="color:#2E3192">'''dashed blue line'''</span> represents the theoretical minimum value of the cost function given by half the number of assimilated observations.]]
 
Figure 4 shows <math>J</math> and <math>J_{\rm NL}</math> for 1-day cases for which the total number of iterations is similar (<math>\sim 30-36</math>) but which employ different combinations of inner- and outer-loops. The computational effort is therefore comparable in all cases. The (30,1) and (10,3) reference cases that use no preconditioning are included in Fig. 4. The best case identified in section 3.1 was (10,3) with Ritz preconditioning using all 10 Ritz vectors from outer-loops <math>k=2</math> and <math>k=3</math>. This case is reproduced in Fig. 3, along with a (15,2) case and a (5,6) case. In the (15,2) case there are 15 Ritz vectors available for preconditioning during the 2nd outer-loop, and Fig. 4 shows that while <math>J</math> is lower than the (10,3) case at the end of the experiment, the (10,3) case is still superior based on <math>J_{\rm NL}</math>. During the (5,6) case there are potentially 6 Ritz vectors available, during outer-loops <math>k=[2,5]</math>, but in general only 4 of them have sufficiently small <math>\epsilon</math> to be useful. Each iteration of the Lanczos algorithm yields not only an additional Ritz vector, but also refines the estimates of those Ritz vectors identified during previous inner-loops. Therefore, <math>\epsilon</math> decreases for all of the Ritz vectors as the number of inner-loops increases. Attempts to use all 6 Ritz vectors lead to significant degradation of <math>J</math> and <math>J_{\rm NL}</math> (not shown). Figure 4 shows the (5,6) case using 4 Ritz vectors which does not perform as well as (10,3) or (15,2) and is similar to the case with no preconditioning.
 
Figure 4 suggests that for a given computational effort (as dictated by the combined number of innner- and outer-loops), Ritz preconditioning is most effective with <math>k>2</math> and <math>m\sim 10</math>. This reflects the trade-off between the increased accuracy of the available Ritz vectors with increasing number of inner-loops, and the benefits of updating the non-linear ROMS solution about which the inner-loop minimizations are performed.
 
 
====Dependence on Assimilation Time Window====
 
 
[[Image:cost_fig5.png||center|thumb|850px|'''Figure 5:''' The normalized cost function <math>J</math> computed within inner-loops (curves), and <math>J_{NL}</math> the cost function computed relative to the nonlinear model during outer-loops (open circles). The various cases shown are for a 3-day assimilation window: (30,1) no preconditioning ('''solid black curve''', '''black circles'''); (10,3) no preconditioning (<span style="color:#2E3192">'''solid dark blue line'''</span>, <span style="color:#2E3192">'''dark blue circles'''</span>); (10,3) and spectral preconditioning using 2 eigenvectors (<span style="color:#ED1C24">'''red curve'''</span>, <span style="color:#ED1C24">'''red circles'''</span>), and 10 eigenvectors (<span style="color:#00A651">'''green curve'''</span>, <span style="color:#00A651">'''green circles'''</span>); (10,3) and Ritz preconditioning using 5 Ritz vectors (<span style="color:#00AEEF">'''turquoise line'''</span>, <span style="color:#00AEEF">'''turquoise circles'''</span>), and 10 Ritz vectors ('''black dashed curve''', '''black asterisks'''). The horizontal <span style="color:#2E3192">'''dashed blue line'''</span> represents the theoretical minimum value of the cost function given by half the number of assimilated observations.]]
 
A subset of the experiments presented in the previous 2 sections were repeated using 3-day and 7-day assimilation windows. The results for the 3-day case are shown in Fig. 5. Figure 5 shows results from two spectrally preconditioned (10,3) cases, one employing 2 eigenvectors and the other 10 eigenvectors. As in the 1-day case, the performance of spectral preconditioning is degraded by using inaccurate estimates of the Hessian eigenvectors. The 2 eigenvector case, however, is superior to the (30,1) case with no preconditioning, but only marginally better than (10,3) case with no preconditioning. Two (10,3) cases using Ritz preconditioning and 5 and 10 Ritz vectors respectively are also shown in Fig. 5. The latter is the best case of all for <math>J_{\rm NL}</math>.
 
[[Image:cost_fig6.png||center|thumb|850px|'''Figure 6:''' The normalized cost function <math>J</math> computed within inner-loops (curves), and <math>J_{NL}</math> the cost function computed relative to the nonlinear model during outer-loops (open circles). The various cases shown are for a 7-day assimilation window: (30,1) no preconditioning ('''solid black curve''', '''black circles'''); (10,3) no preconditioning (<span style="color:#2E3192">'''solid dark blue line'''</span>, <span style="color:#2E3192">'''dark blue circles'''</span>); (10,3) and spectral preconditioning using 2 eigenvectors (<span style="color:#ED1C24">'''red curve'''</span>, <span style="color:#ED1C24">'''red circles'''</span>), (10,3) and Ritz preconditioning using 5 Ritz vectors (<span style="color:#00A651">'''green curve'''</span>, <span style="color:#00A651">'''green circles'''</span>); and 10 Ritz vectors ('''black dashed curve''', '''black asterisks'''). The horizontal <span style="color:#2E3192">'''dashed blue line'''</span> represents the theoretical minimum value of the cost function given by half the number of assimilated observations.]]
 
The results from the same combinations of inner- and outer-loops and preconditioners using a 7-day assimilation window are shown in Fig. 6. In this case, some of the <math>J_{\rm NL}</math> values are missing at the end of the final outer-loop for some of the calculations because the initial condition generated by IS4DVAR caused the model to blow-up. This is indicative that a 7-day assimilation combined with a large combined number of inner- and outer-loops may be pushing the tangent linear assumption beyond what is a reasonable limit.  Figure 6 suggests that while <math>J</math> sometimes shows a significant improvement with preconditioning, the assimilation scheme is struggling to converge. The values of <math>\epsilon</math> for the eigenvectors and Ritz vectors in this case are consistently higher than for the 1-day and 3-day cases, so the uninspiring performance of the preconditioners in the 7-day case may be due partly to the lower accuracy of the available vectors and partly to violation of the tangent linear assumption.
 
 
===Summary and Recommendations===
 
The preconditioned Lanczos-method based IS4DVAR scheme has been successfully implemented in the ROMS code. The experiments described above indicate that the algorithm is working correctly. Two types of second level preconditioning are available: so-called spectral preconditioning in which estimates of the Hessian eigenvectors are used; and Ritz preconditioning in which the Ritz vectors of the Hessian are used. Although not explicitly stated or obvious from the above discussion, the Hessian eigenvectors estimates and Ritz vectors are identical, so the only difference between the two approaches to preconditioning is the way in which the eigenvector information is used. As discussed in the [[#Spectral vs Ritz preconditioning|Spectral vs Ritz preconditioning]] section, the accuracy of the Hessian eigenvectors <math>{\bf u}_i</math> that are employed in the spectral preconditioner is a critical factor: using eigenvectors for which <math>\epsilon</math> is too large degrades the performance of IS4DVAR. The Ritz preconditioner of [[Bibliography#TshimangaJ_2008a|Tshimanga ''et al.'' (2008)]], however, cleverly circumvents this problem by accounting for the formal error in the eigenvectors (now referred to as the Ritz vectors).
 
While the above experiments are far from exhaustive, they do give some sense of the performance that can be expected from preconditioned IS4DVAR system. Based on these experiments, the following recommendations can be considered as providing useful guidance for configuring the ROMS IS4DVAR system and choosing the preconditioner parameters:
 
# For spectral preconditioning, it is recommended that the threshhold for acceptable accuracy of the Hessian eigenvectors estimates, [[Variables#HevecErr|HevecErr]] be chosen to be <math>\le 10^{-3}-10^{-4}</math>.
# For Ritz preconditioning, Ritz vectors of relatively low accuracy can be tolerated, so [[Variables#HevecErr|HevecErr]] <math>\le 10^{-1}-10^{-2}</math> is recommended.
# For any problem there will be a maximum acceptable computational cost which will dictate the total number of inner-loops and outer-loops that can be used. There is a trade-off between the number of inner-loops and outer-loops in that increasing the number of inner-loops yields more eigenvectors or Ritz vectors of acceptable accuracy for the preconditioner, while increasing the number of outer-loops allows more frequent updating of the NLROMS solutions which helps to drive down <math>J_{\rm NL}</math>. The recommendation here is that the number of inner-loops be at least 10, and that the number of outer-loops be at least 3.
# The experience here is that a long assimilation window can degrade the performance of the preconditioner. This needs to be more fully explored, but is probably associated with violation of the tangent linear assumption when the assimilation window is excessively long.

Latest revision as of 20:48, 17 July 2019

Variational Data Assimilation


Introduction