109 | | I |

| 109 | |

| 110 | == Implementing your own observation operator == |

| 111 | |

| 112 | The current set of observation operators provided by PDAF-OMI is rather fundamental. However, there are also observation types which are not variables of state vector, but functions of several values. Likewise one might want to use a more sophisticated interpolation than the linear one or some interpolation that treats the horizontal and vertical directions separately. For these cases you can implement you own operators. |

| 113 | |

| 114 | The PDAF-package provides a template to implement new observation operators in `templates/omi/obs_op_pdafomi_TEMPLATE.F90`. |

| 115 | |

| 116 | Each observation operator include the following functionality: |

| 117 | - Check whether `thisobs%doassim==1`, which indicates that the observation is assimilated |

| 118 | - initialize the observation vector `ostate_p` for the observation TYPE for which the routine is called. For a parallel model this is done for for the process-local domain (for a model without parallelization this is the global domain) |

| 119 | - Call `PDAFomi_gather_obsstate` to gather the full observation vector `obs_f_all`. This call is mandatory even if theh model is not parallelized. |

| 120 | |

| 121 | |