| 1 | = Using thisobs%use_global_obs=0 = |
| 2 | |
| 3 | In 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 | |
| 5 | In 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` |
| 8 | One of these routines should be called in `init_pdaf` to set the domain information. |
| 9 | |
| 10 | |
| 11 | == `PDAFomi_set_domain_limits` == |
| 12 | |
| 13 | In this routine one provide the limiting coordinates of the process domain so that PDAF-OMI can store the information. |
| 14 | |
| 15 | The 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 | }}} |
| 22 | here `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 |
| 27 | thus, (:,1) specifies the north-western corner of the sub-domain and (:,2) the souther-estern corner. |
| 28 | |
| 29 | If 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 | |
| 35 | This 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 | |
| 37 | The 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 | |
| 48 | This function only supports geographic coordinates given in radians. |