source: branches/2013/dev_MERGE_2013/NEMOGCM/NEMO/OOO_SRC/ooo_utils.F90 @ 4291

Last change on this file since 4291 was 4111, checked in by andrewryan, 8 years ago

Refactored ooo_utils USE list in OOO_SRC

File size: 3.4 KB
Line 
1MODULE ooo_utils
2   !! =================================================================
3   !!                    *** MODULE ooo_utils ***
4   !! =================================================================
5   USE par_oce
6
7   IMPLICIT NONE
8
9   ! Define double precision obfillflt
10   REAL(kind=dp), PARAMETER :: obfilldbl=99999.
11
12   CONTAINS
13
14   SUBROUTINE yyyymmdd_to_ref_date(indate, intime, outstring)
15      !----------------------------------------
16      ! Routine to create reference date string
17      !----------------------------------------
18      ! Routine arguments
19      CHARACTER(len=8),  INTENT(IN)  :: indate    ! yyyymmdd
20      CHARACTER(len=6),  INTENT(IN)  :: intime    ! hhmmss
21      CHARACTER(len=23), INTENT(OUT) :: outstring ! yyyy-mm-dd hh:mm:ss utc
22      ! Local variables
23      CHARACTER(len=4)  :: year      ! yyyy
24      CHARACTER(len=2)  :: month     ! mm
25      CHARACTER(len=2)  :: day       ! dd
26      CHARACTER(len=2)  :: hour      ! hh
27      CHARACTER(len=2)  :: minute    ! mm
28      CHARACTER(len=2)  :: second    ! ss
29
30      year   = indate(1:4)
31      month  = indate(5:6)
32      day    = indate(7:8)
33      hour   = intime(1:2)
34      minute = intime(3:4)
35      second = intime(5:6)
36
37      outstring = year//"-"//month//"-"//day//" "//hour//":"//minute//":"//second//" utc"
38     
39   END SUBROUTINE yyyymmdd_to_ref_date
40
41   SUBROUTINE date_format(date_str)
42      !---------------------------------------
43      ! Routine to create creation date string
44      !---------------------------------------
45
46      ! Routine arguments
47      CHARACTER(len=*), INTENT(OUT) :: date_str
48      ! Local variables
49      CHARACTER(8)  :: date
50      CHARACTER(10) :: time
51
52      CHARACTER(10)  :: date_part
53      CHARACTER(8)  :: time_part
54
55      CALL date_and_time(DATE=date)
56      CALL date_and_time(TIME=time)
57      date_part  = date(1:4)//'/'//date(5:6)//'/'//date(7:8)
58      time_part  = time(1:2)//':'//time(3:4)//':'//time(5:6)
59
60      date_str   = date_part//' '//time_part
61
62   END SUBROUTINE date_format
63
64   SUBROUTINE inst_converter(wmo_inst_list, nprofs, obs_names)
65      !---------------------------------------
66      ! Routine to convert WMO_INST_TYPE to
67      ! 'ARGO', 'TESAC', 'XBT', 'BUOYS'
68      !---------------------------------------
69
70      !! Routine arguments
71      INTEGER,                             INTENT(IN) :: nprofs
72      CHARACTER(len=*),DIMENSION(nprofs),  INTENT(IN) :: wmo_inst_list     
73      CHARACTER(len=128),DIMENSION(nprofs),INTENT(OUT):: obs_names
74
75      !! Local variables
76      INTEGER :: inam !: loop over name
77
78      !! Initialise obs_names
79      obs_names(:) = ''
80
81      !! Convert number to text
82      DO inam = 1,nprofs
83         IF (trim(adjustl(wmo_inst_list(inam))) .EQ. '820') THEN
84            obs_names(inam) = 'BUOYS'
85         ELSEIF (trim(adjustl(wmo_inst_list(inam))) .EQ. '401') THEN
86            obs_names(inam) = 'XBT'
87         ELSEIF (trim(adjustl(wmo_inst_list(inam))) .EQ. '741') THEN
88            obs_names(inam) = 'TESAC'
89         ELSEIF (trim(adjustl(wmo_inst_list(inam))) .EQ. '831') THEN
90            obs_names(inam) = 'ARGO'
91         ELSEIF (trim(adjustl(wmo_inst_list(inam))) .EQ. '22') THEN ! Special case for AATSR
92            obs_names(inam) = '22'
93         ELSEIF (trim(adjustl(wmo_inst_list(inam))) .EQ. '') THEN
94            obs_names(inam) = 'UNKNOWN'
95         ELSE
96            obs_names(inam) = adjustl(wmo_inst_list(inam)) ! For all other cases
97         ENDIF
98      ENDDO
99
100   END SUBROUTINE inst_converter
101
102END MODULE ooo_utils
Note: See TracBrowser for help on using the repository browser.