Changes between Initial Version and Version 1 of U_likelihood_l


Ignore:
Timestamp:
Dec 2, 2016, 11:20:13 AM (4 years ago)
Author:
lnerger
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • U_likelihood_l

    v1 v1  
     1= U_likelihood_l =
     2
     3The page document the user-supplied call-back routine `U_likelihood_l`.
     4
     5The routine `U_likelihood_l` is a call-back routine that has to be provided by the user. In the simplified interface the predefined name of the routine is `likelihood_l_pdaf`, but in the full interface, the user can choose the name of the routine.
     6The routine is used in the localized nonlinear filter LNETF and has to compute the likelihood of the observation for a given ensemble member according to the observations used for the local analysis.
     7The likelihood depends on the assumed observation error distribution. For a Gaussian observation error, the likelihood is '''exp(-0.5*(y-Hx)^T^*R^-1^*(y-Hx))''' for the local observations. The vector '''y-HX =''' `resid_l` is proved as an input argument. The likelihood has to be returned in the variable `likely_l`.
     8
     9This routine is also the place to perform observation localization. To initialize a vector of weights, the routine `PDAF_local_weight` can be called. The procedure is used in the example implementation and also demonstrated in the template routine.
     10
     11The interface is the following:
     12{{{
     13SUBROUTINE U_likelihood_l(domain_p, step, dim_obs_l, obs_l, resid_l, likely_l)
     14}}}
     15with
     16 * `domain_p` : `integer, intent(in)`[[BR]] Index of current local analysis domain
     17 * `step` : `integer, intent(in)`[[BR]] Current time step
     18 * `dim_obs_l` : `integer, intent(in)`[[BR]] Number of local observations at current time step (i.e. the size of the local observation vector)
     19 * `obs_l` : `real, intent(in), dimension(dim_obs_l)`[[BR]] Local vector of observations
     20 * `resid_l` : `real, intent(in), dimension(dim_obs_l)`[[BR]] Input vector holding the local residual
     21 * `likely` : `real, intent(out)`[[BR]] Output value of the local likelihood
     22
     23Hints:
     24 * The routine is a local variant of the routine `U_likelihood`. Thus, if that routine has been implemented before, it can be adapted here for the local filter.
     25 * The routine is very similar to the routine [wiki:U_prodRinvA_l]. The main addition is the computation of the likelihood after computing '''R^-1^*(y-Hx)''', which corresponds to '''R^-1^*A_l''' in [wiki:U_prodRinvA_l].
     26 * The routine does not require that the product is implemented as a real matrix-vector 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 vector `resid_l` has to be implemented.
     27 * The observation vector `obs_l` is provided through the interface for cases where the observation error variance is relative to the actual value of the observations.
     28 * To perform observation localization (i.e. observation weighting by modifying the inverse observation error covariance matrix) one computes for each observations the distance of it from the local analysis domain and then computes a weight for each observation according to this distance. For the computation of the weight, the routine `PDAF_local_weight` can be used.