SURFEX v8.1
General documentation of Surfex
read_watflux_date.F90
Go to the documentation of this file.
1 !SFX_LIC Copyright 1994-2014 CNRS, Meteo-France and Universite Paul Sabatier
2 !SFX_LIC This is part of the SURFEX software governed by the CeCILL-C licence
3 !SFX_LIC version 1. See LICENSE, CeCILL-C_V1-en.txt and CeCILL-C_V1-fr.txt
4 !SFX_LIC for details. version 1.
5 ! #########
6  SUBROUTINE read_watflux_date (HPROGRAM,HINIT,KLUOUT,HATMFILE,HATMFILETYPE,&
7  KYEAR,KMONTH,KDAY,PTIME,TPTIME )
8 ! #######################################################
9 !
10 !!**** *READ_WATFLUX_DATE* - initializes the date TTIME of MODD_WATFLUX
11 !!
12 !! PURPOSE
13 !! -------
14 !!
15 !!** METHOD
16 !! ------
17 !!
18 !! EXTERNAL
19 !! --------
20 !!
21 !!
22 !! IMPLICIT ARGUMENTS
23 !! ------------------
24 !!
25 !! REFERENCE
26 !! ---------
27 !!
28 !!
29 !! AUTHOR
30 !! ------
31 !! S.Malardel *Meteo France*
32 !!
33 !! MODIFICATIONS
34 !! -------------
35 !! Original 01/2004
36 !! P. Le Moigne 10/2005, Phasage Arome
37 !-------------------------------------------------------------------------------
38 !
39 !* 0. DECLARATIONS
40 ! ------------
41 !
42 !
43 !
44 !
46 USE modd_surf_par, ONLY : xundef, nundef
47 !
48 USE modi_read_pre_watf_dat_conf
49 USE modi_read_pre_surfa_dat_conf
50 USE modi_read_prep_watflux_conf
51 USE modi_read_prep_file_date
52 !
53 USE yomhook ,ONLY : lhook, dr_hook
54 USE parkind1 ,ONLY : jprb
55 !
56 USE modi_abor1_sfx
57 !
58 IMPLICIT NONE
59 !
60 !* 0.1 Declarations of arguments
61 ! -------------------------
62 !
63 !
64 !
65  CHARACTER(LEN=6), INTENT(IN) :: HPROGRAM ! program calling
66  CHARACTER(LEN=3), INTENT(IN) :: HINIT ! fields to initialize 'ALL', 'PRE', 'PGD'
67  CHARACTER(LEN=28), INTENT(IN) :: HATMFILE ! atmospheric file name
68  CHARACTER(LEN=6), INTENT(IN) :: HATMFILETYPE! atmospheric file type
69 INTEGER, INTENT(IN) :: KYEAR ! current year (UTC)
70 INTEGER, INTENT(IN) :: KMONTH ! current month (UTC)
71 INTEGER, INTENT(IN) :: KDAY ! current day (UTC)
72 REAL, INTENT(IN) :: PTIME ! current time since midnight (UTC, s)
73 type(date_time), INTENT(OUT) ::tptime ! time and date
74 INTEGER, INTENT(IN) :: KLUOUT ! logical unit of output listing
75 !
76 !* 0.2 Declarations of local variables
77 ! -------------------------------
78 !
79  CHARACTER(LEN=28) :: YFILE ! file name
80  CHARACTER(LEN=6) :: YFILETYPE ! file type
81  CHARACTER(LEN=28) :: YFILEPGD ! file name
82  CHARACTER(LEN=6) :: YFILEPGDTYPE ! file type
83  CHARACTER(LEN=28) :: YFILEPGDIN ! file name
84  CHARACTER(LEN=6) :: YFILEPGDINTYPE ! file type
85 !
86 LOGICAL :: GUNIF ! flag for prescribed uniform field
87 REAL(KIND=JPRB) :: ZHOOK_HANDLE
88 !
89 !-------------------------------------------------------------------------------
90 !
91 IF (lhook) CALL dr_hook('READ_WATFLUX_DATE',0,zhook_handle)
92 yfile = ' '
93 yfiletype = ' '
94 !
95 yfilepgdin = ' '
96 yfilepgdintype = ' '
97 !
98 !-------------------------------------------------------------------------------
99 !
100 !* look for a date in the namelist NAM_PREP_WATFLUX or NAM_PREP_SURF_ATM
101 !-----------------------------------------------------------------------
102 !
103  CALL read_pre_watf_dat_conf(hprogram,kluout,tptime)
104 !
105 IF (tptime%TDATE%YEAR==nundef.OR.tptime%TDATE%MONTH==nundef &
106  .OR.tptime%TDATE%DAY==nundef.OR.tptime%TIME==xundef) THEN
107  CALL read_pre_surfa_dat_conf(hprogram,kluout,tptime)
108 END IF
109 !
110 !* If no date in the namelist, look for a file
111 ! ---------------
112 !
113 IF (tptime%TDATE%YEAR==nundef.OR.tptime%TDATE%MONTH==nundef &
114  .OR.tptime%TDATE%DAY==nundef.OR.tptime%TIME==xundef) THEN
115  !
116  CALL read_prep_watflux_conf(hprogram,'DATE ',yfile,yfiletype,yfilepgd,yfilepgdtype,&
117  hatmfile,hatmfiletype,yfilepgdin,yfilepgdintype,kluout,gunif)
118  !
119  IF (len_trim(yfiletype)/=0) &
120  CALL read_prep_file_date(hprogram,yfile,yfiletype,tptime,kluout)
121  !
122 END IF
123 !
124 !* If no file and no date in the namelist, test if atmospheric date
125 !------------------------------------------------------------------
126 !
127 IF (len_trim(yfile)==0 .AND. (tptime%TDATE%YEAR==nundef.OR.tptime%TDATE%MONTH==nundef &
128  .OR.tptime%TDATE%DAY==nundef.OR.tptime%TIME==xundef)) THEN
129 !
130  IF (kyear /= nundef .AND. kmonth /= nundef .AND. kday /= nundef .AND. ptime /= xundef) THEN
131  tptime%TDATE%YEAR = kyear
132  tptime%TDATE%MONTH= kmonth
133  tptime%TDATE%DAY = kday
134  tptime%TIME = ptime
135  ELSE
136 !
137 !* If no file, no date in the namelist and no atmospheric date : stop
138 !-----------------------------------------------------------------------
139 !
140  CALL abor1_sfx('READ_WATFLUX_DATE: DATE NOT SET')
141  END IF
142 ENDIF
143 !
144 !* Test of date coherence?
145 !------------------------
146 !
147 IF (kyear /= nundef .AND. kmonth /= nundef .AND. kday /= nundef .AND. ptime /= xundef) THEN
148  IF (kyear /= tptime%TDATE%YEAR .OR. kmonth /= tptime%TDATE%MONTH .OR. kday /= tptime%TDATE%DAY .AND. ptime /= tptime%TIME) THEN
149  WRITE(unit=kluout, fmt=*)'WARNING in READ_WATFLUX_DATE'
150  WRITE(unit=kluout, fmt=*)'ATMOSPHERIC AND SURFACE DATES ARE NOT THE SAME'
151 
152  WRITE(unit=kluout, fmt=*)'ATMOSPHERIC DATE:'
153  WRITE(unit=kluout, fmt='(" YEAR=",I4)') kyear
154  WRITE(unit=kluout, fmt='(" MONTH=",I4)') kmonth
155  WRITE(unit=kluout, fmt='(" DAY=",I4)') kday
156  WRITE(unit=kluout, fmt='(" TIME=",E13.6)') ptime
157  WRITE(unit=kluout, fmt=*)'SURFACE DATE:'
158  WRITE(unit=kluout, fmt='(" YEAR=",I4)') tptime%TDATE%YEAR
159  WRITE(unit=kluout, fmt='(" MONTH=",I4)') tptime%TDATE%MONTH
160  WRITE(unit=kluout, fmt='(" DAY=",I4)') tptime%TDATE%DAY
161  WRITE(unit=kluout, fmt='(" TIME=",E13.6)') tptime%TIME
162  ELSE
163  WRITE(unit=kluout, fmt=*)'SAME ATMOSPHERIC AND SURFACE DATES'
164  WRITE(unit=kluout, fmt=*)'DATE in READ_WATFLUX_DATE'
165  WRITE(unit=kluout, fmt='(" YEAR=",I4," MONTH=",I4," DAY=",I4)') &
166  kyear,kmonth,kday
167  WRITE(unit=kluout, fmt='(" TIME=",E13.6)') ptime
168  ENDIF
169 ENDIF
170 IF (lhook) CALL dr_hook('READ_WATFLUX_DATE',1,zhook_handle)
171 !------------------------------------------------------------------------------
172 !
173 END SUBROUTINE read_watflux_date
subroutine read_watflux_date(HPROGRAM, HINIT, KLUOUT, HATMFILE, HATMF
subroutine read_prep_file_date(HPROGRAM, HFILE, HFILETYPE, TPTIME, KLUOUT)
subroutine read_pre_surfa_dat_conf(HPROGRAM, KLUOUT, TPTIME)
subroutine abor1_sfx(YTEXT)
Definition: abor1_sfx.F90:7
real, parameter xundef
integer, parameter jprb
Definition: parkind1.F90:32
integer, parameter nundef
logical lhook
Definition: yomhook.F90:15
subroutine read_prep_watflux_conf(HPROGRAM, HVAR, HFILE, HFILETYPE, HF
subroutine read_pre_watf_dat_conf(HPROGRAM, KLUOUT, TPTIME)