wiki:obs_op_lin_pdaf

Version 2 (modified by lnerger, 3 years ago) (diff)

--

obs_op_lin_pdaf

The page document the user-supplied call-back routine obs_op_lin_pdaf.

The routine obs_op_lin_pdaf (U_obs_op_lin inside the PDAF library routines) is a call-back routine that has to be provided by the user.

The routine is used with the all 3D-Var methods. It has to perform the operation of the linearized observation operator acting on a state vector increment that is provided as state_p. The observed state has to be returned in m_state_p.

The interface is the following:

SUBROUTINE obs_op_lin_pdaf(step, dim_p, dim_obs_p, state_p, m_state_p)

  INTEGER, INTENT(in) :: step               ! Current time step
  INTEGER, INTENT(in) :: dim_p              ! PE-local dimension of state
  INTEGER, INTENT(in) :: dim_obs_p          ! Dimension of observed state
  REAL, INTENT(in)    :: state_p(dim_p)     ! PE-local model state
  REAL, INTENT(out) :: m_state_p(dim_obs_p) ! PE-local observed state

The routine is called during the analysis step. It has to perform the operation of the linearized observation operator acting on a state vector increment that is provided as state_p. The observed state has to be returned in m_state_p.

Hints:

  • For a model using domain decomposition, the operation is on the PE-local sub-domain of the model and has to provide the observed sub-state for the PE-local domain.
  • If the observation operator involves a global operation, e.g. some global integration, while using domain-decomposition one has to gather the information from the other model domains using MPI communication.