Changes between Initial Version and Version 1 of OMI_use_global_obs


Ignore:
Timestamp:
Nov 25, 2020, 11:28:23 AM (2 years ago)
Author:
lnerger
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • OMI_use_global_obs

    v1 v1  
     1= Using thisobs%use_global_obs=0 =
     2
     3In the domain-localized filters (LESTK, LETKF, LSEIK, LNETF) observations are assimilated that are located within the localization around some grid point. When a model uses parallelization with domain-decomposition some of these observations might belong to a different process-domain. In the default mode (`thisobs%use_global_obs`=1) PDAF-OMI gathers all globally available observations so that each process has access to all observations. It can be more efficient to restrict the observations on a process-domain to those observations that are located inside the domain or within the localization radius arond it. Then, in the local analyses a smaller number of observation have to be checked for their distance. Setting `thisobs%use_global_obs=0` activates this feature. However, it needs additional preparations to make PDAF-OMI aware of the limiting coordinates of a process sub-domain.
     4
     5In order to make use of the restricted observations, one has to provide PDAF-OMI with the limiting coordinates of a process-subdomain. There are two routines that can to this task:
     6- `PDAFomi_set_domain_limits`
     7- `PDAFomi_get_domain_limits_unstrc`
     8One of these routines should be called in `init_pdaf` to set the domain information.
     9
     10
     11== `PDAFomi_set_domain_limits` ==
     12
     13In this routine one provide the limiting coordinates of the process domain so that PDAF-OMI can store the information.
     14
     15The interface is
     16{{{
     17  SUBROUTINE PDAFomi_set_domain_limits(lim_coords)
     18
     19    REAL, INTENT(in) :: lim_coords(2,2)     !< geographic coordinate array (1: longitude, 2: latitude)
     20                                            !< ranges: longitude (-pi, pi), latitude (-pi/2, pi/2)
     21}}}
     22here `lim_coords` are
     23 - (1,1) coordinate of the western edge of the domain
     24 - (1,2) coordinate of the eastern edge of the domain
     25 - (2,1) coordinate of the northern edge of the domain
     26 - (2,2) coordinate of the southern edge of the domain
     27thus, (:,1) specifies the north-western corner of the sub-domain and (:,2) the souther-estern corner.
     28
     29If the model grid is not decomposed in cardinal directions, but e.g. rotated, the coordinates should specife the extrema. Thus, lim_coords(1,1) would be the coordinate of the northernmost grid point of a domain.
     30
     31
     32
     33== `PDAFomi_get_domain_limits_unstrc` ==
     34
     35This routine is find the extreme coordinates for a model domain. The routine is provided with the coordinates of all grid pints of a domain and then find the limiting coordinates. It is designed for unstructured grid and we have only tested it with the ocean model FESOM. (The tricky part is when a process-domain crosses the date line).
     36
     37The interface is
     38{{{
     39  SUBROUTINE PDAFomi_get_domain_limits_unstr(verbose, npoints_p, coords_p)
     40
     41    INTEGER, INTENT(in) :: verbose          !< verbosity flag (1: write output)
     42    INTEGER, INTENT(in) :: npoints_p        !< number of process-local grid points
     43    REAL, INTENT(in) :: coords_p(:,:)       !< geographic coordinate array, dimension (2, npoints_p
     44                                            !<   (row 1: longitude, 2: latitude)
     45                                            !<   ranges: longitude (-pi, pi), latitude (-pi/2, pi/2)
     46}}}
     47
     48This function only supports geographic coordinates given in radians.