PDAFomi_dim_obs_l Module

PDAF-OMI routines for determining local observations

This module contains generic routines for several observation-related operations for local filters. The routines are

  • PDAFomi_init_dim_obs_l \n Initialize dimension of local obs. vetor and arrays for local observations
  • PDAFomi_init_dim_obs_l_iso \n Initialize dimension of local obs. vetor and arrays for local observations for isotropic localization
  • PDAFomi_init_dim_obs_l_noniso \n Initialize dimension of local obs. vetor and arrays for local observations for nonisotropic localization
  • PDAFomi_init_dim_obs_l_noniso_locweights \n Initialize dimension of local obs. vetor and arrays for local observations for nonisotropic localization and different locweight for horizontal and vertical
  • PDAFomi_check_dist2_loop \n Compute and check distance for isotropic localization
  • PDAFomi_check_dist2_noniso_loop \n Compute and check distance for non-isotropic localization
  • PDAFomi_set_localization \n Store localization parameters in OMI (for isotropic localization)
  • PDAFomi_set_localization_noniso \n Store localization parameters in OMI (for non-isotropic localization)
  • PDAFomi_set_dim_obs_l \n Register local observation with OMI
  • PDAFomi_store_obs_l_index \n Store index, distance, cradius, and sradius of a local observation
  • PDAFomi_store_obs_l_index_vdist \n Store index, distance, cradius, sradius, and vertical distance of a local observation for 2+1D factorized localization

Revision history: * 2019-06 - Lars Nerger - Initial code * Later revisions - see repository log


Uses


Interfaces

public interface PDAFomi_init_dim_obs_l

  • public subroutine PDAFomi_init_dim_obs_l_iso(thisobs_l, thisobs, coords_l, locweight, cradius, sradius, cnt_obs_l_all)

    Set dimension of local obs. vector and local obs. arrays

    This routine sets the number of local observations for the current observation type for the local analysis domain with coordinates COORD_l and localization cut-off radius CRADIUS. Further the routine initializes arrays for the index of a local observation in the full observation vector and its corresponding distance. The operations are performed by calling the routine PDAFomi_check_dist2_loop once for counting and a second time for initializing the arrays.

    Revision history: * 2019-06 - Lars Nerger - Initial code from restructuring observation routines * Later revisions - see repository log

    Arguments

    Type IntentOptional Attributes Name
    type(obs_l), intent(inout), TARGET :: thisobs_l
    type(obs_f), intent(inout) :: thisobs
    real, intent(in) :: coords_l(:)
    integer, intent(in) :: locweight
    real, intent(in) :: cradius
    real, intent(in) :: sradius
    integer, intent(inout) :: cnt_obs_l_all
  • public subroutine PDAFomi_init_dim_obs_l_noniso(thisobs_l, thisobs, coords_l, locweight, cradius, sradius, cnt_obs_l_all)

    Set dimension of local obs. vector and local obs. arrays (non-isotropic)

    This routine sets the number of local observations for the current observation type for the local analysis domain with coordinates COORD_l and a vector of localization cut-off radii CRADIUS. Further the routine initializes arrays for the index of a local observation in the full observation vector and its corresponding distance. The operation are performed by calling the routines cnt_dim_obs_l and init_obsarrays_l.

    Revision history: * 2024-02 - Lars Nerger - Initial code from restructuring observation routines * Later revisions - see repository log

    Arguments

    Type IntentOptional Attributes Name
    type(obs_l), intent(inout), TARGET :: thisobs_l
    type(obs_f), intent(inout) :: thisobs
    real, intent(in) :: coords_l(:)
    integer, intent(in) :: locweight
    real, intent(in) :: cradius(:)
    real, intent(in) :: sradius(:)
    integer, intent(inout) :: cnt_obs_l_all
  • public subroutine PDAFomi_init_dim_obs_l_noniso_locweights(thisobs_l, thisobs, coords_l, locweights, cradius, sradius, cnt_obs_l)

    Set dimension of local obs. vector and local obs. arrays

    This routine is a variant of PDAFomi_init_dim_obs_l_noniso with support for a vector of localization weights. This is used to specify different localization functions for the vertical and horizontal directions. The routine only stores the value of locweights(2) for the vertical and calls PDAFomi_init_dim_obs_l_iso.

    Revision history: * 2024-04 - Lars Nerger - Initial code * Later revisions - see repository log

    Arguments

    Type IntentOptional Attributes Name
    type(obs_l), intent(inout), TARGET :: thisobs_l
    type(obs_f), intent(inout) :: thisobs
    real, intent(in) :: coords_l(:)
    integer, intent(in) :: locweights(:)
    real, intent(in) :: cradius(:)
    real, intent(in) :: sradius(:)
    integer, intent(inout) :: cnt_obs_l

Subroutines

public subroutine PDAFomi_init_dim_obs_l_iso(thisobs_l, thisobs, coords_l, locweight, cradius, sradius, cnt_obs_l_all)

Set dimension of local obs. vector and local obs. arrays

Read more…

Arguments

Type IntentOptional Attributes Name
type(obs_l), intent(inout), TARGET :: thisobs_l
type(obs_f), intent(inout) :: thisobs
real, intent(in) :: coords_l(:)
integer, intent(in) :: locweight
real, intent(in) :: cradius
real, intent(in) :: sradius
integer, intent(inout) :: cnt_obs_l_all

public subroutine PDAFomi_check_dist2_loop(thisobs_l, thisobs, coordsA, cnt_obs, mode)

Check distance in case of isotropic localization

Read more…

Arguments

Type IntentOptional Attributes Name
type(obs_l), intent(inout) :: thisobs_l
type(obs_f), intent(in) :: thisobs
real, intent(in) :: coordsA(:)
integer, intent(inout) :: cnt_obs
integer, intent(in) :: mode

public subroutine PDAFomi_init_dim_obs_l_noniso(thisobs_l, thisobs, coords_l, locweight, cradius, sradius, cnt_obs_l_all)

Set dimension of local obs. vector and local obs. arrays (non-isotropic)

Read more…

Arguments

Type IntentOptional Attributes Name
type(obs_l), intent(inout), TARGET :: thisobs_l
type(obs_f), intent(inout) :: thisobs
real, intent(in) :: coords_l(:)
integer, intent(in) :: locweight
real, intent(in) :: cradius(:)
real, intent(in) :: sradius(:)
integer, intent(inout) :: cnt_obs_l_all

public subroutine PDAFomi_init_dim_obs_l_noniso_locweights(thisobs_l, thisobs, coords_l, locweights, cradius, sradius, cnt_obs_l)

Set dimension of local obs. vector and local obs. arrays

Read more…

Arguments

Type IntentOptional Attributes Name
type(obs_l), intent(inout), TARGET :: thisobs_l
type(obs_f), intent(inout) :: thisobs
real, intent(in) :: coords_l(:)
integer, intent(in) :: locweights(:)
real, intent(in) :: cradius(:)
real, intent(in) :: sradius(:)
integer, intent(inout) :: cnt_obs_l

public subroutine PDAFomi_check_dist2_noniso_loop(thisobs_l, thisobs, coordsA, cnt_obs, mode)

Check distance in case of nonisotropic localization

Read more…

Arguments

Type IntentOptional Attributes Name
type(obs_l), intent(inout) :: thisobs_l
type(obs_f), intent(in) :: thisobs
real, intent(in) :: coordsA(:)
integer, intent(inout) :: cnt_obs
integer, intent(in) :: mode

public subroutine PDAFomi_set_localization(thisobs_l, cradius, sradius, locweight)

Set localization parameters for isotropic localization

Read more…

Arguments

Type IntentOptional Attributes Name
type(obs_l), intent(inout) :: thisobs_l
real, intent(in) :: cradius
real, intent(in) :: sradius
integer, intent(in) :: locweight

public subroutine PDAFomi_set_localization_noniso(thisobs_l, nradii, cradius, sradius, locweight, locweight_v)

Set localization parameters for non-isotropic localization

Read more…

Arguments

Type IntentOptional Attributes Name
type(obs_l), intent(inout) :: thisobs_l
integer, intent(in) :: nradii
real, intent(in) :: cradius(nradii)
real, intent(in) :: sradius(nradii)
integer, intent(in) :: locweight
integer, intent(in) :: locweight_v

public subroutine PDAFomi_set_dim_obs_l(thisobs_l, thisobs, cnt_obs_l_all, cnt_obs_l)

Initialization for dim_obs_l

Read more…

Arguments

Type IntentOptional Attributes Name
type(obs_l), intent(inout), TARGET :: thisobs_l
type(obs_f), intent(inout) :: thisobs
integer, intent(inout) :: cnt_obs_l_all
integer, intent(inout) :: cnt_obs_l

public subroutine PDAFomi_store_obs_l_index(thisobs_l, idx, id_obs_l, distance, cradius_l, sradius_l)

Store local index, distance and radii

Read more…

Arguments

Type IntentOptional Attributes Name
type(obs_l), intent(inout) :: thisobs_l
integer, intent(in) :: idx
integer, intent(in) :: id_obs_l
real, intent(in) :: distance
real, intent(in) :: cradius_l
real, intent(in) :: sradius_l

public subroutine PDAFomi_store_obs_l_index_vdist(thisobs_l, idx, id_obs_l, distance, cradius_l, sradius_l, vdist)

Store local index, dsitance and radii for factorized localization

Read more…

Arguments

Type IntentOptional Attributes Name
type(obs_l), intent(inout) :: thisobs_l
integer, intent(in) :: idx
integer, intent(in) :: id_obs_l
real, intent(in) :: distance
real, intent(in) :: cradius_l
real, intent(in) :: sradius_l
real, intent(in) :: vdist