Changes between Initial Version and Version 1 of U_prodRinvA


Ignore:
Timestamp:
Jan 22, 2015, 9:15:40 AM (6 years ago)
Author:
lnerger
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • U_prodRinvA

    v1 v1  
     1= `U_prodRinvA` =
     2
     3The page document the user-supplied call-back routine `U_prodRinvA`.
     4
     5The routine `U_prodRinvA` is a call-back routine that has to be provided by the user. In the simplified interface the predefined name of the routine is init_obs_pdaf, but in the full interface, the user can choose the name of the routine.
     6The routine is used with all global filters and called during the analysis step. The purpose of the routine is to compute the product of the inverse of the observation error covariance matrix with some matrix '''A''' (as '''R^-1^''' x '''A'''). The matrix '''A''' holds an intermediate computing result of the filter analysis step. For the ESTKF this matrix holds the observed part of the ensemble perturbations. The matrix is provided as `A_p`. The product has to be returned in the array `C_p`.
     7
     8The interface is the following:
     9{{{
     10SUBROUTINE U_prodRinvA(step, dim_obs_p, rank, observation_p, A_p, C_p)
     11}}}
     12with
     13 * `step` : `integer, intent(in)`[[BR]] Current time step
     14 * `dim_obs_p` : `integer, intent(in)`[[BR]] Number of observations at current time step (i.e. the size of the observation vector)
     15 * `rank` : `integer, intent(in)`[[BR]] Number of the columns in the matrix processes here. This is usually the ensemble size minus one (or the rank of the initial covariance matrix)
     16 * `obs_p` : `real, intent(in), dimension(dim_obs_p)`[[BR]] Vector of observations
     17 * `A_p` : `real, intent(in), dimension(dim_obs_p, rank)`[[BR]] Input matrix provided by PDAF
     18 * `C_p` : `real, intent(out), dimension(dim_obs_p, rank)`[[BR]] Output matrix
     19
     20
     21Notes:
     22 * In case of a parallelization with domain decomposition, `A_p` contains the part of the matrix that resides on the model sub-domain of the calling process. The product has to be computed for this sub-domain, too.
     23
     24Hints:
     25 * The information about the inverse observation error covariance matrix has to be provided by the user. Possibilities are to read this information from a file, or to use a Fortran module that holds this information, which one could already prepare in init_pdaf.
     26 * The routine does not require that the product is implemented as a real matrix-matrix product. Rather, the product can be implemented in its most efficient form. For example, if the observation error covariance matrix is diagonal, only the multiplication of the inverse diagonal with the matrix `A_p` has to be implemented.
     27 * The observation vector `obs_p` is provided through the interface for cases where the observation error variance is relative to the actual value of the observations.
     28 * The interface has a difference for ESTKF and ETKF: For ETKF the value of third argument is the ensemble size (`dim_ens`), while for the ESTKF it is `dim_ens-1` (according to the usual rank (`rank`) of the covariance matrix. However, the value is given when the routine is called. Thus, the routine just needs to be able to work with the provided value.
     29
     30