20 | | Hint: |

21 | | * The routine is similar to `U_obs_op` used for the global filters. However, with a domain-decomposed model `m_state_f` will contain parts of the state vector from neighboring model sub-domains. To make these parts accessible, some parallel communication will be necessary (The state information for a neighboring model sub-domain will be in the memory of the process that handles that sub-domain). The example implementation in `testsuite/dummymodel_1d` uses the function `MPI_AllGatherV` for this communication. |

| 20 | Hints: |

| 21 | * The routine is similar to `obs_op_pdaf` used for the global filters. However, with a domain-decomposed model `m_state_f` will contain parts of the state vector from neighboring model sub-domains. To make these parts accessible, some parallel communication will be necessary (The state information for a neighboring model sub-domain will be in the memory of the process that handles that sub-domain). The example implementation in `testsuite/dummymodel_1d` uses the function `MPI_AllGatherV` for this communication. |

| 22 | * In case of a parallelized analysis step one has to take care that the order of observation in m_state_f is consistent with the order in the full observation vector `obs_f` generated by `init_obs_f_pdaf`. |

| 23 | * In case of a parallelized analysis step the full vector `m_state_f` can be obtained by first computing the process-local vector m_state_p from the state vector `state_p` and then calling the routine [wiki:PDAF_gather_obs_f] (introduced with PDAF V1.13). When `PDAF_gather_obs_f` is used in both `init_dim_obs_f_pdaf` and `obs_op_f_pdaf` it is ensured that the order of the entries in the full observation vector and `m_state_f` is consistent. |