Changes between Version 7 and Version 8 of OMI_observation_operators
 Timestamp:
 Nov 30, 2020, 3:15:13 PM (3 months ago)
Legend:
 Unmodified
 Added
 Removed
 Modified

OMI_observation_operators
v7 v8 24 24 [[PageOutline(23,Contents of this page)]] 25 25 26 The observation operator is called for each observation type in the routine `obs_op_pdafomi` in the file `callback_obs_pdafomi.F90`. 26 An observation operator routine is called for each observation type in the routine `obs_op_pdafomi` in the file `callback_obs_pdafomi.F90`. 27 28 == Observation operators == 27 29 28 30 OMI currently provides 3 observation operators: … … 51 53 Determine barycentric interpolation coefficients for triangular grids based on the coordinates of grid points and the observation 52 54 53 An example of initializing interpolation coefficients with PDAFomi_get_interp_coeff_lin and of using PDAFomi_obs_op_interp_lin is provided in `tutorial/online_2D_serialmodel _omi/obs_C_pdafomi.F90`.55 An example of initializing interpolation coefficients with PDAFomi_get_interp_coeff_lin and of using PDAFomi_obs_op_interp_lin is provided in `tutorial/online_2D_serialmodel/obs_C_pdafomi.F90`. 54 56 55 57 … … 133 135 The current set of observation operators provided by PDAFOMI 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. 134 136 135 The PDAFpackage provides a template to implement new observation operators in ` templates/omi/obs_op_pdafomi_TEMPLATE.F90`.137 The PDAFpackage provides a template to implement new observation operators in `/templates/omi/obs_op_pdafomi_TEMPLATE.F90`. 136 138 137 139 Each observation operator include the following functionality: 138 140 1. Check whether `thisobs%doassim==1`, which indicates that the observation is assimilated 139 141 2. 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 processlocal domain (for a model without parallelization this is the global domain) 140 3. Call `PDAFomi_gather_obsstate` to gather the full observation vector `obs_f_all`. This call is mandatory even if the hmodel is not parallelized.142 3. Call `PDAFomi_gather_obsstate` to gather the full observation vector `obs_f_all`. This call is mandatory even if the model is not parallelized. 141 143 142 Generally one can implement an dfunction that computes an observation from the elements of the state vector that is provided to the routine as `state_p`. The coordinate information is provided in `thisobs`. One can also modify the interface to the obsration operator routine if, e.g., additional information is required.144 Generally one can implement any function that computes an observation from the elements of the state vector that is provided to the routine as `state_p`. The coordinate information is provided in `thisobs`. One can also modify the interface to the obsration operator routine if, e.g., additional information is required. 143 145 144 146 Dependent on the complexity of an observation operator it might be useful to separate the functional computations from the interpolation. For this one could consider multistep observation operators in separate routines.