| 221 | === `U_init_dim_obs_local` (init_dim_obs_local.F90) === |

| 222 | |

| 223 | This routine is used by all local filter algorithms (LSEIK, LETKF). |

| 224 | |

| 225 | The interface for this routine is: |

| 226 | {{{ |

| 227 | SUBROUTINE init_dim_obs_local(domain_p, step, dim_obs_f, dim_obs_l) |

| 228 | |

| 229 | INTEGER, INTENT(in) :: domain_p ! Current local analysis domain |

| 230 | INTEGER, INTENT(in) :: step ! Current time step |

| 231 | INTEGER, INTENT(in) :: dim_obs_f ! Full dimension of observation vector |

| 232 | INTEGER, INTENT(out) :: dim_obs_l ! Local dimension of observation vector |

| 233 | }}} |

| 234 | |

| 235 | The routine is called during the loop over the local analysis domains in the analysis step. |

| 236 | It has to initialize in `dim_obs_l` the size of the observation vector used for the local analysis domain with index `domain_p`. |

| 237 | |

| 238 | Some hints: |

| 239 | * Usually, the observation to be considered for a local analysis are those which reside within some distance from the local analysis domain. Thus, if the local analysis domain is a single vertical column of the model grid and if the model grid is a regular ij-grid, then one could use some range of i/j indices to select the observations and determine the local number of them. More generally, one can compute the physical distance of an observation from the local analysis domain and decide on this basis, if the observation has to be considered. |

| 240 | * In the loop over the local analysis domains, the routine is always called before `init_obs_local` is executed. Thus, as `init_dim_obs_local` has to check which observations should be used for the local analysis domain, one can already initialize an integer array that stores the index of observations to be considered. This index should be the position of the observation in the array `observation_f`. With this, the initialization of the local observation vector in `init_obs_local` can be sped up. |

| 241 | |