PDAFomi_obs_op Module

PDAF-OMI observation operators

This module contains generic routines for several observation operators to be used after preparation with init_dim_obs_f

The observation operators are:

  • PDAFomi_obs_op_gridpoint\n Observation operator for data at grid points. The routine selects values of the state vector according to an index array
  • PDAFomi_obs_op_gridavg\n Observation operator for the case that the observations are the average of grid point values. The routine computes these averages according to an index array.
  • PDAFomi_obs_op_interp_lin\n Observation operator for the case that the observations are linear interpolated from the grid points. The interpolation coefficients are pre-computed.
  • PDAFomi_obs_op_gatheronly\n Observation operator for the case of strongly coupled assimilation to gather an observation which only exists in other compartments.

Adjoint observation operators:

  • PDAFomi_obs_op_adj_gridpoint\n Adjoint observation operator for data at grid points. The routine selects values of the state vector according to an index array
  • PDAFomi_obs_op_adj_gridavg\n Adjoint observation operator for the case that the observations are the average of grid point values. The routine computes these averages according to an index array.
  • PDAFomi_obs_op_adj_interp_lin\n Adjoint observation operator for the case that the observations are linear interpolatied from the grid points. The interpolation coefficients are pre-computed.
  • PDAFomi_obs_op_adj_gatheronly\n Adjoint observation operator for the case of strongly coupled assimilation to gather an observation which only exists in other compartments.

Helper routines for the operators: * PDAFomi_get_interp_coeff_tri \n Routine to compute interpolation coefficients for triangular interpolation from barycentric coordinates. * PDAFomi_get_interp_coeff_lin1D \n Routine to comput linear interpolation in 1D * PDAFomi_get_interp_coeff_lin \n Routine to compute interpolation coefficients for linear interpolations (linear, bi-linear, tri-linear)



Subroutines

public subroutine PDAFomi_obs_op_gridpoint(thisobs, state_p, obs_f_all)

observation operator for data at grid points

Read more…

Arguments

Type IntentOptional Attributes Name
type(obs_f), intent(inout) :: thisobs
real, intent(in) :: state_p(:)
real, intent(inout) :: obs_f_all(:)

public subroutine PDAFomi_obs_op_gridavg(thisobs, nrows, state_p, obs_f_all)

Observation operator for averaging grid point values

Read more…

Arguments

Type IntentOptional Attributes Name
type(obs_f), intent(inout) :: thisobs
integer, intent(in) :: nrows
real, intent(in) :: state_p(:)
real, intent(inout) :: obs_f_all(:)

public subroutine PDAFomi_obs_op_interp_lin(thisobs, nrows, state_p, obs_f_all)

Observation operator for linear interpolation

Read more…

Arguments

Type IntentOptional Attributes Name
type(obs_f), intent(inout) :: thisobs
integer, intent(in) :: nrows
real, intent(in) :: state_p(:)
real, intent(inout) :: obs_f_all(:)

public subroutine PDAFomi_obs_op_gatheronly(thisobs, state_p, obs_f_all)

observation operator for the case that observations belong to other compartment

Read more…

Arguments

Type IntentOptional Attributes Name
type(obs_f), intent(inout) :: thisobs
real, intent(in) :: state_p(:)
real, intent(inout) :: obs_f_all(:)

public subroutine PDAFomi_get_interp_coeff_tri(gpc, oc, icoeff)

Helper routine: Initialize interpolation coefficients in triangle

Read more…

Arguments

Type IntentOptional Attributes Name
real, intent(in) :: gpc(:,:)
real, intent(in) :: oc(:)
real, intent(inout) :: icoeff(:)

public subroutine PDAFomi_get_interp_coeff_lin1D(gpc, oc, icoeff)

Helper routine: Initialize linear interpolation coefficients in 1D

Read more…

Arguments

Type IntentOptional Attributes Name
real, intent(in) :: gpc(:)
real, intent(in) :: oc
real, intent(inout) :: icoeff(:)

public subroutine PDAFomi_get_interp_coeff_lin(num_gp, n_dim, gpc, oc, icoeff)

Helper routine: Initialize linear interpolation coefficients

Read more…

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: num_gp
integer, intent(in) :: n_dim
real, intent(in) :: gpc(:,:)
real, intent(in) :: oc(:)
real, intent(inout) :: icoeff(:)

public subroutine PDAFomi_obs_op_adj_gridpoint(thisobs, obs_f_all, state_p)

Adjoint observation operator for data at grid points

Read more…

Arguments

Type IntentOptional Attributes Name
type(obs_f), intent(inout) :: thisobs
real, intent(in) :: obs_f_all(:)
real, intent(inout) :: state_p(:)

public subroutine PDAFomi_obs_op_adj_gridavg(thisobs, nrows, obs_f_all, state_p)

Adjoint observation operator for averaging grid point values

Read more…

Arguments

Type IntentOptional Attributes Name
type(obs_f), intent(inout) :: thisobs
integer, intent(in) :: nrows
real, intent(in) :: obs_f_all(:)
real, intent(inout) :: state_p(:)

public subroutine PDAFomi_obs_op_adj_interp_lin(thisobs, nrows, obs_f_all, state_p)

Observation operator for linear interpolation

Read more…

Arguments

Type IntentOptional Attributes Name
type(obs_f), intent(inout) :: thisobs
integer, intent(in) :: nrows
real, intent(in) :: obs_f_all(:)
real, intent(inout) :: state_p(:)

public subroutine PDAFomi_obs_op_adj_gatheronly(thisobs, obs_f_all, state_p)

adjoint observation operator for the case that observations belong to other compartment

Read more…

Arguments

Type IntentOptional Attributes Name
type(obs_f), intent(inout) :: thisobs
real, intent(inout) :: obs_f_all(:)
real, intent(in) :: state_p(:)