PDAF-OMI routines for determining local observations
This module contains generic routines for several observation-related operations for local filters. The routines are
Revision history: * 2019-06 - Lars Nerger - Initial code * Later revisions - see repository log
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
| Type | Intent | Optional | 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 |
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
| Type | Intent | Optional | 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 |
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
| Type | Intent | Optional | 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 |
Set dimension of local obs. vector and local obs. arrays
| Type | Intent | Optional | 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 |
Check distance in case of isotropic localization
| Type | Intent | Optional | 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 |
Set dimension of local obs. vector and local obs. arrays (non-isotropic)
| Type | Intent | Optional | 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 |
Set dimension of local obs. vector and local obs. arrays
| Type | Intent | Optional | 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 |
Check distance in case of nonisotropic localization
| Type | Intent | Optional | 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 |
Set localization parameters for isotropic localization
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| type(obs_l), | intent(inout) | :: | thisobs_l | |||
| real, | intent(in) | :: | cradius | |||
| real, | intent(in) | :: | sradius | |||
| integer, | intent(in) | :: | locweight |
Set localization parameters for non-isotropic localization
| Type | Intent | Optional | 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 |
Initialization for dim_obs_l
| Type | Intent | Optional | 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 |
Store local index, distance and radii
| Type | Intent | Optional | 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 |
Store local index, dsitance and radii for factorized localization
| Type | Intent | Optional | 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 |