Changes between Version 6 and Version 7 of OMI_observation_modules_PDAF3


Ignore:
Timestamp:
Jun 4, 2025, 2:43:58 PM (44 hours ago)
Author:
lnerger
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • OMI_observation_modules_PDAF3

    v6 v7  
    8787== `init_dim_obs_OBSTYPE` ==
    8888
    89 This is the main routine to initialize observation information.
     89This is the main routine to initialize observation information. In addition, this routine is used to initialize information for covariance localization in the LEnKF, EnSRF and EAKF methods.
    9090
    9191||= Please see the template file `templates/omi/obs_OBSTYPE_pdafomi_TEMPLATE.F90`[[br]] for a step-by-step description of the implementation steps. =||
     
    123123 * `cradius` is always a single value. It should be set of the largest radius of the directions in which the process domain is split by parallelization. It defines the radius within which observations from neighboring process domains are taken into account.
    124124
     125=== Initializing covariance localization ===
     126
     127The covariance localization should be initialized in `init_dim_obs_OBSTYPE`. This is achieved by calling `PDAFomi_set_localize_covar`. The routine can only be called after the call to `PDAFomi_gather_obs`.
     128
     129The interface is for isotropic localization:
     130{{{
     131  SUBROUTINE PDAFomi_set_localize_covar(thisobs, dim_p, ncoords, coords, &
     132       locweight, cradius, sradius)
     133
     134    TYPE(obs_f), INTENT(inout) :: thisobs           ! Data type with full observation
     135    INTEGER, INTENT(in) :: dim_p                    ! State dimension
     136    INTEGER, INTENT(in) :: ncoords                  ! Number of coordinate directions
     137    REAL, INTENT(in)    :: coords_p(dim_p,ncoords)  ! Coordinates of state vector elements
     138    INTEGER, INTENT(in) :: locweight                ! Localization weight type
     139    REAL, INTENT(in)    :: cradius                  ! localization radius
     140    REAL, INTENT(in)    :: sradius                  ! Support radius for weight functions
     141}}}
     142
     143'''Notes:'''
     144 * The routine allows to specify the localization radius and support radius (`lradius`, `sradius`) and localization function (`locweight`) individually for each observation type.
     145 * The coordinate array `coords_p` specifies the coordinates of each element in the state vector for the process local sub-domain. The coordinate units have to be consistent with those used to specify the coordinates of observations.
     146 * The routine only supports a fixed localization radius throughout the domain.
     147 * One can also directly call the routine `PDAFomi_set_localize_covar_iso`, e.g. when calling from a program coded in C.
     148
     149There is also a variant of this routine for non-isotropic localization. See the [wiki:PDAFomi_set_localize_covar Documentation on PDAFomi_set_localize_covar] for more information.
    125150
    126151== `obs_op_OBSTYPE` ==
     
    175200
    176201== `localize_covar_OBSTYPE` ==
     202
     203|| This routine exists for backward compatibility. In PDAF V3.0, we added the routine [wiki:OMI_observation_modules_PDAF3#Initializingcovariancelocalization PDAFomi_set_localize_covar], which was decribed above. When PDAFomi_set_localize_covar is used, the user-provided routine `localize_covar_OBSTYPE` is no longer required. ||
    177204
    178205This routine initializes local observation information. The routine is only used by the local EnKF (LEnKF).