regions_mod

link to source code

Dependency Diagrams:

regions_mod.svg

Direct Dependency Diagram

regions_mod_rev.svg

Reverse Dependency Diagram

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

struct_reg

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

midas_prepcma

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

midas_prepcma

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

reg_init_struct()

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

midas_prepcma

Call to

getr0()

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

midas_prepcma