regions_mod¶
Dependency Diagrams:
Description
MODULE regions_mod (prefix=’reg’ category=’7. Low-level data objects’)
- Purpose
This is a subset of the EnKF module that deals with operations involving the generation of a set of regions. Each region consists of a small number of observations which is to be assimilated simultaneously in the sequential algorithm.
Quick access
- Variables
- Routines
getr0()
,reg_getblock()
,reg_getlatitude()
,reg_init_struct()
,reg_locatestn()
Needed modules
mathphysconstants_mod
: MODULE mathPhysConstants_mod (prefix=’mpc’ category=’8. Low-level utilities and constants’)
midasmpi_mod
: MODULE midasMpi_mod (prefix=’mmpi’ category=’8. Low-level utilities and constants’)Types
- type regions_mod/unknown_type¶
- Type fields
% mxreg [integer ]
% nlatband [integer ]
% r0_km [real ]
% r0_rad [real ]
% r1_km [real ]
% r1_rad [real ]
% rz_logp [real ]
% scale_hor [real ]
% scale_ver [real ]
Variables
- regions_mod/struct_reg [public]¶
Subroutines and functions
- subroutine regions_mod/reg_getblock(nlatband, r0, latmin, latmax, nlonblock)¶
- Purpose
We have nlatband latitude bands (bounded by latitudes
- Arguments
latmin (nlatband) [real ,in] :: and latmax). For each band determine how many longitidunal blocks of at most r0*root(2) radians it contains. Output is in nlonblock.
nlatband [integer ,in,]
r0 [real ,in]
latmax (nlatband) [real ,in]
nlonblock (nlatband) [integer ,out]
- Called from
- subroutine regions_mod/reg_getlatitude(r0, nlatband, latmin, latcenter, latmax)¶
- Purpose
the circle is covered with nlatband latitude bands. the polar caps (with radius r0 radians) form the first and last band. Intermediate bands are of width r0*(2**0.5) For reach band we have the southern most latitude latmin, the central latitude latcenter (at the poles for the extreme bands) and the northern most latitude latcenter
- Arguments
r0 [real ,in]
nlatband [integer ,in]
latmin (nlatband) [real ,out]
latcenter (nlatband) [real ,out]
latmax (nlatband) [real ,out]
- Called from
- subroutine regions_mod/getr0(r0km, r0, nlatband)¶
- Purpose
The user specifies a radius of r0km (in km) within which stations can be taken together for simultaneous analysis in a single batch. For simplicity of the search procedures we - instead - use somewhat smaller squares with sides of at most r0km*root(2). We do have circles at the two poles. Here we compute the radius r0 in radians such that we arrive exactly at nlatband latitude bands. The equator separates two latitude bands.
- Arguments
r0km [real ,in]
r0 [real ,out]
nlatband [integer ,out]
- Called from
- subroutine regions_mod/reg_init_struct(lsc, r0_km, r1_km, rz_logp)¶
- Purpose
store and derive parameters related to the localization in a structure.
- Arguments
lsc [struct_reg ,out]
r0_km [real ,in]
r1_km [real ,in]
rz_logp [real ,in]
- Called from
- Call to
- subroutine regions_mod/reg_locatestn(r0, lat, lon, nlatband, nlonblock, nblockoffset, iblock)¶
- Purpose
locate the lat-lon block in which position (lat,lon) falls
- Arguments
- Arguments
r0 [real ,in] :: radius of a region (in radians) (lat,lon): latitude and longitude in radians
nlatband [integer ,in,] :: number of latitude bands
nlonblock (nlatband) [integer ,in] :: number of longitudinal blocks at each latitude band
nblockoffset (nlatband) [integer ,in] :: offset (the number of blocks south of each latitude band)
iblock [integer ,out] :: block number
lat [real ,inout]
lon [real ,in]
- Called from