obsFamilyList_mod sourceΒΆ

 1module obsFamilyList_mod
 2  ! MODULE obsFamilyList_mod (prefix='ofl' category='7. Low-level data objects')
 3  !
 4  !:Purpose:  Contains a list of all recognizable observation families along with 
 5  !           additional information and procedures regarding these families.
 6  !
 7  implicit none
 8  save
 9  private
10
11  ! public variables (parameters)
12  public :: ofl_numFamily
13  public :: ofl_familyList
14
15  ! public procedures
16  public :: ofl_isFamilyTypeInList
17
18  integer,          parameter :: ofl_numFamily = 15
19  character(len=2), parameter :: ofl_familyList(ofl_numFamily)= (/ &
20                                 'UA','AI','SF','SC','SW','PR','RO','GP','RA', &
21                                 'TO','CH','TM','AL','GL','HY'/)
22
23  ! Description of obs family types
24  ! -------------------------------
25  ! UA - radiosondes (RAOBS and SURFACE)
26  ! AI - aircraft measurements (AIREPS)
27  ! SF - surface obs (SURFACE)
28  ! SC - scatterometer measurements (SURFACE)
29  ! SW - winds from satellite measurements (SATWINDS) 
30  ! PR - ground-based profiler data 
31  ! RO - radio occultation data (GPS-RO; TT/HU/P0)
32  ! GP - ground-based GPS data (GB-GPS)
33  ! RA - radar precipitation data
34  ! TO - brightness temperatures (TT/HU/P0/constituents)
35  ! CH - retrieved chemical constituent data
36  ! TM - Sea-surface temperature data (SST)
37  ! AL - Aladin lidar horizontal wind data
38  ! GL - Sea-ice concentration data 
39  ! HY - Hydrological data
40  !
41  ! NWP obs families having data as function of pressure level: UA,AI,SW 
42  ! NWP obs families contributing to the surface NWP obs group: UA,SF,SC,GP,RA
43  ! NWP obs families having data as a function of altitude: PR,AL
44                                                   
45  contains
46
47    !--------------------------------------------------------------------------
48    ! ofl_isFamilyTypeInList
49    !--------------------------------------------------------------------------
50    function ofl_isFamilyTypeInList(familyName) result(familyFound)
51      !
52      !:Purpose: To identify if input obs family is part of the available list 
53      !
54      implicit none
55
56      ! Arguments:
57      character(len=*), intent(in) :: familyName
58      ! Result:
59      logical          :: familyFound
60
61      if ( any(ofl_familyList(:) == familyName) ) then
62         familyFound = .true.
63      else
64         familyFound = .false.
65      end if
66      
67    end function ofl_isFamilyTypeInList
68
69end module obsFamilyList_mod