SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
read_prep_teb_greenroof_conf.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_prep_teb_greenroof_conf(HPROGRAM,HVAR,HFILE,HFILETYPE,HFILEPGD,HFILEPGDTYPE, &
7  hatmfile,hatmfiletype,hpgdfile,hpgdfiletype,kluout,ounif)
8 ! #######################################################
9 !
10 !!**** *READ_PREP_TEB_GREENROOF_CONF* - routine to read the configuration for ISBA
11 !! fields preparation
12 !!
13 !! PURPOSE
14 !! -------
15 !!
16 !!** METHOD
17 !! ------
18 !! Based on "read_prep_teb_garden_conf"
19 !!
20 !! EXTERNAL
21 !! --------
22 !!
23 !!
24 !! IMPLICIT ARGUMENTS
25 !! ------------------
26 !!
27 !! REFERENCE
28 !! ---------
29 !!
30 !!
31 !! AUTHOR
32 !! ------
33 !! A. Lemonsu & C. de Munck
34 !!
35 !! MODIFICATIONS
36 !! -------------
37 !! Original 07/2011
38 !-------------------------------------------------------------------------------
39 !
40 !* 0. DECLARATIONS
41 ! ------------
42 !
43 USE modi_read_prep_surf_atm_conf
44 !
45 ! AFAIRE : VERIFIER SI BESOIN DE MODN_PREP_TEB_GREENROOF
46 !USE MODN_PREP_TEB_GREENROOF
47 USE modd_prep_teb_greenroof, ONLY : cfile_gr, ctype, cfilepgd_gr, ctypepgd, &
48  cfile_hug_gr, ctype_hug, &
49  cfile_hug_surf_gr, cfile_hug_root_gr, cfile_hug_deep_gr, &
50  xhug_surf_gr, xhug_root_gr, xhug_deep_gr, &
51  xhugi_surf_gr, xhugi_root_gr, xhugi_deep_gr, &
52  cfile_tg_gr, ctype_tg, &
53  cfile_tg_surf_gr, cfile_tg_root_gr, cfile_tg_deep_gr, &
54  xtg_surf_gr, xtg_root_gr, xtg_deep_gr
55 !
56 USE modd_surf_par, ONLY : xundef
57 !
58 !
59 USE yomhook ,ONLY : lhook, dr_hook
60 USE parkind1 ,ONLY : jprb
61 !
62 USE modi_abor1_sfx
63 !
64 IMPLICIT NONE
65 !
66 !* 0.1 Declarations of arguments
67 ! -------------------------
68 !
69  CHARACTER(LEN=6), INTENT(IN) :: hprogram ! program calling
70  CHARACTER(LEN=7), INTENT(IN) :: hvar ! variable treated
71  CHARACTER(LEN=28), INTENT(OUT) :: hfile ! file name
72  CHARACTER(LEN=6), INTENT(OUT) :: hfiletype ! file type
73  CHARACTER(LEN=28), INTENT(OUT) :: hfilepgd ! file name
74  CHARACTER(LEN=6), INTENT(OUT) :: hfilepgdtype! file type
75  CHARACTER(LEN=28), INTENT(IN) :: hatmfile ! atmospheric file name
76  CHARACTER(LEN=6), INTENT(IN) :: hatmfiletype! atmospheric file type
77  CHARACTER(LEN=28), INTENT(IN) :: hpgdfile ! atmospheric file name
78  CHARACTER(LEN=6), INTENT(IN) :: hpgdfiletype! atmospheric file type
79 INTEGER, INTENT(IN) :: kluout ! logical unit of output listing
80 LOGICAL, INTENT(OUT) :: ounif ! flag for prescribed uniform field
81 
82 !
83 !* 0.2 Declarations of local variables
84 ! -------------------------------
85 !
86 INTEGER :: iresp ! IRESP : return-code if a problem appears
87  ! at the open of the file in LFI routines
88 INTEGER :: ilunam ! Logical unit of namelist file
89 !
90  CHARACTER(LEN=28) :: ynamelist ! namelist file
91 !
92 LOGICAL :: gfound ! Return code when searching namelist
93 REAL(KIND=JPRB) :: zhook_handle
94 !-------------------------------------------------------------------------------
95 !
96 !
97 IF (lhook) CALL dr_hook('READ_PREP_TEB_GREENROOF_CONF',0,zhook_handle)
98 hfile = ' '
99 hfiletype = ' '
100 !
101 hfilepgd = ' '
102 hfilepgdtype = ' '
103 !
104 ounif = .false.
105 !
106 !-------------------------------------------------------------------------------
107 !
108 !* choice of input file
109 ! --------------------
110 !
111 SELECT CASE (hvar)
112  CASE ('WG ','WGI ')
113  IF (len_trim(cfile_hug_gr)>0 .AND. len_trim(ctype_hug)>0 ) THEN
114  hfile = cfile_hug_gr
115  hfiletype = ctype_hug
116  END IF
117  CASE ('TG ')
118  IF (len_trim(cfile_tg_gr)>0 .AND. len_trim(ctype_tg)>0 ) THEN
119  hfile = cfile_tg_gr
120  hfiletype = ctype_tg
121  END IF
122 END SELECT
123 !
124 IF (len_trim(hfile)==0 .AND. len_trim(cfile_gr)>0 .AND. len_trim(ctype)>0) THEN
125  hfile = cfile_gr
126  hfiletype = ctype
127 END IF
128 !
129 IF (len_trim(hfilepgd)==0 .AND. len_trim(cfilepgd_gr)>0 .AND. len_trim(ctypepgd)>0) THEN
130  hfilepgd = cfilepgd_gr
131  hfilepgdtype = ctypepgd
132 END IF
133 !
134 !! If no file name in the scheme namelist,
135 !! try to find a name in NAM_SURF_ATM
136 !
137 IF (len_trim(hfile)==0) THEN
138 !
139  CALL read_prep_surf_atm_conf(hprogram,hfile,hfiletype,hfilepgd,hfilepgdtype,&
140  hatmfile,hatmfiletype,hpgdfile,hpgdfiletype,kluout)
141 !
142 END IF
143 !
144 !! If no file name in the scheme namelist,
145 !! nor in NAM_SURF_ATM, look if ascii input files are present
146 !
147 SELECT CASE (hvar)
148  CASE ('WG ','WGI ')
149  IF ( len_trim(ctype_hug )>0 .AND. &
150  len_trim(cfile_hug_surf_gr)>0 .AND. &
151  len_trim(cfile_hug_root_gr)>0 .AND. &
152  len_trim(cfile_hug_deep_gr)>0 ) THEN
153  hfiletype = ctype_hug
154  END IF
155  IF (hvar=='WGI ' .AND. hfiletype=='ASCLLV') THEN
156  ounif = .true.
157  IF (lhook) CALL dr_hook('READ_PREP_TEB_GREENROOF_CONF',1,zhook_handle)
158  RETURN
159  ENDIF
160  CASE ('TG ')
161  IF ( len_trim(ctype_tg )>0 .AND. &
162  len_trim(cfile_tg_surf_gr)>0 .AND. &
163  len_trim(cfile_tg_root_gr)>0 .AND. &
164  len_trim(cfile_tg_deep_gr)>0 ) THEN
165  hfiletype = ctype_tg
166  END IF
167 END SELECT
168 !
169 !-------------------------------------------------------------------------------
170 !
171 !* Is an uniform field prescribed?
172 ! ------------------------------
173 !
174 SELECT CASE (hvar)
175  CASE ('WG ')
176  ounif = (xhug_surf_gr/=xundef) .OR. (xhug_root_gr/=xundef) .OR. (xhug_deep_gr/=xundef)
177  IF (ounif .AND. (xhug_surf_gr==xundef)) THEN
178  WRITE(kluout,*)'ONE OF XHUG_SURF_GR, XHUG_ROOT_GR OR XHUG_DEEP_GR IS GIVEN'
179  CALL abor1_sfx('READ_PREP_TEB_GREENROOF_CONF: XHUG_SURF_GR MUST BE SET')
180  END IF
181  IF (ounif .AND. (xhug_root_gr==xundef)) THEN
182  WRITE(kluout,*)'ONE OF XHUG_SURF_GR, XHUG_ROOT_GR OR XHUG_DEEP_GR IS GIVEN'
183  CALL abor1_sfx('READ_PREP_TEB_GREENROOF_CONF: XHUG_ROOT_GR MUST BE SET')
184  END IF
185  IF (ounif .AND. (xhug_deep_gr==xundef)) THEN
186  WRITE(kluout,*)'ONE OF XHUG_SURF_GR, XHUG_ROOT_GR OR XHUG_DEEP_GR IS GIVEN'
187  CALL abor1_sfx('READ_PREP_TEB_GREENROOF_CONF: XHUG_DEEP MUST BE SET')
188  END IF
189  !
190  CASE ('WGI ')
191  ounif = (xhugi_surf_gr/=xundef) .OR. (xhugi_root_gr/=xundef) .OR. (xhugi_deep_gr/=xundef)
192  IF (ounif .AND. (xhugi_surf_gr==xundef)) THEN
193  WRITE(kluout,*)'ONE OF XHUGI_SURF_GR, XHUGI_ROOT_GR OR XHUGI_DEEP_GR IS GIVEN'
194  CALL abor1_sfx('READ_PREP_TEB_GREENROOF_CONF: XHUGI_SURF_GR MUST BE SET')
195  END IF
196  IF (ounif .AND. (xhugi_root_gr==xundef)) THEN
197  WRITE(kluout,*)'ONE OF XHUGI_SURF_GR, XHUGI_ROOT_GR OR XHUGI_DEEP_GR IS GIVEN'
198  CALL abor1_sfx('READ_PREP_TEB_GREENROOF_CONF: XHUGI_ROOT_GR MUST BE SET')
199  END IF
200  IF (ounif .AND. (xhugi_deep_gr==xundef)) THEN
201  WRITE(kluout,*)'ONE OF XHUGI_SURF_GR, XHUGI_ROOT_GR OR XHUGI_DEEP_GR IS GIVEN'
202  CALL abor1_sfx('READ_PREP_TEB_GREENROOF_CONF: XHUGI_DEEP_GR MUST BE SET')
203  END IF
204  !
205  CASE ('TG ')
206  ounif = (xtg_surf_gr/=xundef) .OR. (xtg_root_gr/=xundef) .OR. (xtg_deep_gr/=xundef)
207  IF (ounif .AND. (xtg_surf_gr==xundef)) THEN
208  WRITE(kluout,*)'ONE OF XTG_SURF_GR, XTG_ROOT_GR OR XTG_DEEP_GR IS GIVEN'
209  CALL abor1_sfx('READ_PREP_TEB_GREENROOF_CONF: XTG_SURF_GR MUST BE SET')
210  END IF
211  IF (ounif .AND. (xtg_root_gr==xundef)) THEN
212  WRITE(kluout,*)'ONE OF XTG_SURF_GR, XTG_ROOT_GR OR XTG_DEEP_GR IS GIVEN'
213  CALL abor1_sfx('READ_PREP_TEB_GREENROOF_CONF: XTG_ROOT_GR MUST BE SET')
214  END IF
215  IF (ounif .AND. (xtg_deep_gr==xundef)) THEN
216  WRITE(kluout,*)'ONE OF XTG_SURF_GR, XTG_ROOT_GR OR XTG_DEEP_GR IS GIVEN'
217  CALL abor1_sfx('READ_PREP_TEB_GREENROOF_CONF: XTG_DEEP_GR MUST BE SET')
218  END IF
219  !
220 END SELECT
221 !
222 !-------------------------------------------------------------------------------
223 !
224 !* If no file and no uniform field is prescribed: default values used
225 ! ---------------------------------------------
226 !
227 IF (len_trim(hfiletype)==0 .AND. .NOT. ounif) THEN
228  IF (hvar(1:2)/='TG' .AND. hvar(1:2)/='WG') THEN
229  IF (hvar(1:2)/='ZS') WRITE(kluout,*) 'NO FILE FOR FIELD ',hvar, &
230  ': UNIFORM DEFAULT FIELD IS PRESCRIBED'
231  ounif = .true.
232  IF (lhook) CALL dr_hook('READ_PREP_TEB_GREENROOF_CONF',1,zhook_handle)
233  RETURN
234  ELSE
235  WRITE(kluout,*) 'AN INPUT FILE OR A UNIFORM VALUE IS REQUIRED FOR FIELD: ',hvar
236  WRITE(kluout,*) 'Please complete NAM_PREP_TEB_GREENROOF'
237  CALL abor1_sfx('READ_PREP_TEB_GREENROOF_CONF: AN INPUT FILE OR A UNIFORM VALUE IS REQUIRED FOR '//hvar)
238  END IF
239 END IF
240 IF (lhook) CALL dr_hook('READ_PREP_TEB_GREENROOF_CONF',1,zhook_handle)
241 !-------------------------------------------------------------------------------
242 !
243 END SUBROUTINE read_prep_teb_greenroof_conf
subroutine abor1_sfx(YTEXT)
Definition: abor1_sfx.F90:6
subroutine read_prep_surf_atm_conf(HPROGRAM, HFILE, HFILETYPE, HFILEPGD, HFILEPGDTYPE, HATMFILE, HATMFILETYPE, HPGDFILE, HPGDFILETYPE, KLUOUT)
subroutine read_prep_teb_greenroof_conf(HPROGRAM, HVAR, HFILE, HFILETYPE, HFILEPGD, HFILEPGDTYPE, HATMFILE, HATMFILETYPE, HPGDFILE, HPGDFILETYPE, KLUOUT, OUNIF)