Home page  
Home   Your Room   Login   Contact   Feedback   Site Map   Search:  
Discover this product  
About Us
Overview
Getting here
Committees
Products
Forecasts
Order Data
Order Software
Services
Computing
Archive
PrepIFS
Research
Modelling
Reanalysis
Seasonal
Publications
Newsletters
Manuals
Library
News&Events
Calendar
Employment
Open Tenders
   
Home > Research > Ifsdocs > ASSIMILATION >  
   

DATA ASSIMILATION

IFS documentation Front Page


Table of contents

CHAPTER 1 Incremental formulation of 3D/4D variational assimilation-an overview

CHAPTER 2 3D variational assimilation

CHAPTER 3 4D variational assimilation

CHAPTER 4 Background term

CHAPTER 5 Conventional observational constraints

CHAPTER 6 Satellite observational constraints

CHAPTER 7 Background, analysis and forecast errors

CHAPTER 8 Gravity-wave control

CHAPTER 9 Data partitioning (OBSORT)

CHAPTER 10 Observation screening

CHAPTER 11 Analysis of snow

CHAPTER 12 Land surface analysis

CHAPTER 13 SST and sea-ice analysis

CHAPTER 14 Reduced-rank Kalman filter

REFERENCES

 
  Next Section
Previous Section


14.2 The Hessian singular vector calculation




The reduced-rank Kalman filter requires as input pairs of vectors which satisfy , where is a flow-dependent approximation to the true covariance matrix of background error. Fisher (1998) [ECMWF rd tech memo 260] describes how pairs of vectors satisfying this requirement may be calculated during the course of a "Hessian singular vector" calculation. That is, a singular vector calculation in which the inner product at initial time is defined by the Hessian matrix of an analysis cost function. The vectors are partially-evolved singular vectors. The vectors are produced during the adjoint model integration.


The Hessian singular vector calculation is controlled using the namelist NAMLCZ. The global switch for the calculation is LJACDAV. Initial and final time inner products are selected by NLANTYPE. For NLANTYPE=6 or 8, the initial time inner product is defined by the analysis Hessian. Otherwise, the spectral inner product is used. For NLANTYPE=8 or 9, the final time inner product is defined by the background error covariance matrix. Otherwise, the energy inner product is used. The final time inner product may be restricted to a given geographic area using the variables ALAT1, ALON1, ALAT and ALON3. The optimization time is specified in units of timesteps by NJDSTOP. The maximum number of iterations to be performed by JACDAV (see below) is specifed by NITERL. The calculation will stop when this number of iterations has been performed, or when NEIGEVO singular vectors have been calculated.


The control-level routine is CUN3, which is called directly from CNT0. Much of the first part of CUN3 is concerned with initialization of observations, etc. which are needed by the analysis Hessian calculation. This part of the code is essentially the same as the corresponding part of CVA1, and will not be described here.


The Hessian singular vector calculation is unusual in that it explicitly changes the values of NCONF and NSTOP during the calculation. During the parts of the calculation which resemble an analysis, NCONF is set to 131 and NSTOP is set to zero. When the calculation resembles the ordinary singular vector calculation, NCONF is set to 601 and NSTOP is set to the optimization time for the singular vector calculation defined by NJDSTOP. The scalar product is also recalculated at various times in the code. In general, however, a spectral inner product is used for most of the calculation. When other inner products are required, they are calculated using an explicit weight matrix rather than by resetting the SCALP array.


After the initializations for the Hessian calculation, the trajectory for the singular vector calculation is created. A starting vector for the singular vector calculation is initialized, and the gradient for zero control variable is calculated and saved in VAZG (in yomcva).


The singular vectors are calculated by a call to NALAN2, which writes them to the file svifs. CUN3 reads the vectors and calls CNT3TL to give the singular vectors at final time. These are written to the file svevo. The vectors required for the reduced rank Kalman filter are written during the tangent linear integration at a step specified by NWRISKF (in NAMSKF). The vectors required by the reduced rank Kalman filter are produced by a call to CNT3AD. The switch LWRISKF (also in NAMSKF) determines whether the vectors and are written.


NALAN2 provides an interface to the main generalized eigenvector solver, JACDAV. The main task ofNALAN2 is to write the singular vectors to the file svifs, and to perform some diagnostics. JACDAV calculates the Hessian singular vectors as the solutions to the following generalized eigenvector equation

 
(14.5)


where denotes the tangent linear model, defines the inner product at optimization time, and is the Hessian of an analysis cost function. The algorithm requires operators which apply and to arbitrary vectors. These operations are represented in the code by the subroutines OPK and OPM respectively. Subroutine OPM calculates a Hessian-vector product as a finite difference between the gradient for the input vector, and the gradient for zero control vector which is in VAZG. The gradient for the input vector is calculated by a call to SIM4D.


JACDAV starts with an initial matrix of KSTART vectors. The columns of are orthonormalized with respect to the initial time inner product by a call to MORTHODM. That is, they are made to satisfy . MORTHODM also applies OPK and OPM to the vectors.


Next, the following small ordinary eigenvalue problem is solved

 
(14.6)


The eigenvalues of this problem are the Ritz values (i.e. approximations to the eigenvalues) of Eq. (14.5). The residual, , for the leading unconverged Ritz value is selected. The residual is orthogonal to the columns of in the Euclidean sense. A vector which is orthogonal with respect to the Hessian is produced by first calculating an approximate solution to the linear equation , and then explicitly orthonormalizing by a call to MORTHODM. The linear equation is solved by a call to PCGBFGS, which implements a preconditioned conjugate gradient algorithm. The accuracy of the solution is determined by GREDBFGS (the required reduction in the norm of the error), and NINNER (the maximum number of iterations to be performed). A limited memory BFGS preconditioner is used, which is applied by the routine BFGS. The memory size (in pairs of vectors) is given by MEMBFGS.


Once the vector has been determined, it is included as a new column of , and the process is repeated. It can be shown that if the linear equation is solved exactly, then the algorithm is equivalent to a Lanczos algorithm. If it is solved approximately, the algorithm resembles the Jacobi-Davidson method.


Next Section
Previous Section



 

Top of page 21.03.2002
 
   Page Details         © ECMWF
shim shim shim