| 1 | = `U_init_obsvar` = |

| 2 | |

| 3 | The page documents the user-supplied call-back routine `U_init_obsvar`. |

| 4 | |

| 5 | The routine `U_init_obsvar` 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_obsvar_pdaf`, but in the full interface, the user can choose the name of the routine. |

| 6 | The routine is used with the global filters ESTKF, ETKF, and SEIK as well as the local filters LESTKF, LETKF, and LSEIK. The routine is called during the filter analysis step. The routine is only called if the adaptive forgetting factor is used (`type_forget=1` in the example impementation). When the routine is called it has to return the mean observation error variance. |

| 7 | |

| 8 | The interface is the following: |

| 9 | {{{ |

| 10 | SUBROUTINE U_init_obsvar(step, dim_obs_p, obs_p, meanvar) |

| 11 | }}} |

| 12 | with |

| 13 | * `step` : `integer, intent(in)`[[BR]] Current time step |

| 14 | * `dim_obs_p` : `integer, intent(in)`[[BR]] Size of observation vector |

| 15 | * `obs_p` : `real, intent(in), dimension(dim_obs_p)`[[BR]] Vector of observations |

| 16 | * `meanvar` : `real, intent(out)`[[BR]] Mean observation error variance |

| 17 | |

| 18 | Notes: |

| 19 | * For a model with domain-decomposition one might use the mean variance for the model sub-domain of the calling process. Alternatively one can compute a mean variance for the full model domain using MPI communication (e.g. the function `MPI_allreduce`). |

| 20 | * The observation vector `obs_p` is provided to the routine for the case that the observation error variance is relative to the value of the observations. |