Compute local likelihood for an ensemble member
The routine is called during the analysis step of the localized NETF. It has to compute the likelihood of the ensemble according to the difference from the observation (residual) and the error distribution of the observations.
In addition, a localizing weighting of the inverse of R by expotential decrease or a 5-th order polynomial of compact support can be applied. This is defined by the variables 'locweight', 'cradius', 'cradius2' and 'sradius' in the main program.
In general this routine is similar to the routine prodRinvA_l used for ensemble square root Kalman filters. As an addition to this routine, we here have to evaluate the likelihood weight according the assumed observation error statistics.
This implementation assumes a diagonal observation error covariance matrix, and supports varying observation error variances.
The routine can be applied with either all observations of different types at once, or separately for each observation type.
Revision history: * 2020-03 - Lars Nerger - Initial code from restructuring observation routines * Later revisions - see repository log
Type | Intent | Optional | Attributes | Name | ||
---|---|---|---|---|---|---|
type(obs_l), | intent(inout) | :: | thisobs_l | |||
type(obs_f), | intent(inout) | :: | thisobs | |||
real, | intent(inout) | :: | resid_l(:) | |||
real, | intent(inout) | :: | lhood_l | |||
integer, | intent(in) | :: | verbose |