# U_init_obs_covar

The page documents the user-supplied call-back routine `U_init_obs_covar`

.

The routine `U_init_obs_covar`

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_obscovar_pdaf`

, but in the full interface, the user can choose the name of the routine.
The routine is used only with the EnKF. The routine is called during the analysis step and is required for the generation of an ensemble of observations. It has to initialize the global observation error covariance matrix. In addition, a flag has to be initialized to provide the information, whether the observation error covariance matrix is diagonal.

The interface is the following:

SUBROUTINE U_init_obs_covar(step, dim_obs, dim_obs_p, covar, obs_p, isdiag)

with

`step`

:`integer, intent(in)`

Current time step`dim_obs`

:`integer, intent(in)`

Global size of observation vector`dim_obs_p`

:`integer, intent(in)`

Size of process-local observation vector`covar`

:`real, intent(out)`

Observation error covariance matrix`obs_p`

:`real, intent(in), dimension(dim_obs_p)`

Process-local vector of observations`isdiag`

:`logical, intent(out)`

Flag whether the observation error covar. matrix is diagonal

The initialization of `covar`

is for the global observation space. Thus, it is independent of whether the filter is executed with or without parallelization.

Hints:

- The local observation vector
`obs_p`

is provided to the routine for the case that the observation errors are relative to the value of the observation.