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