SURFEX  V8_0
Surfex V8_0 release
 All Classes Files Functions Variables
read_prep_teb_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_conf(HPROGRAM,HVAR,HFILE,HFILETYPE,HFILEPGD,HFILEPGDTYPE, &
7  hatmfile,hatmfiletype,hpgdfile,hpgdfiletype,kluout,ounif)
8 ! #######################################################
9 !
10 !!**** *READ_PREP_TEB_CONF* - routine to read the configuration for TEB
11 !! fields preparation
12 !!
13 !! PURPOSE
14 !! -------
15 !!
16 !!** METHOD
17 !! ------
18 !!
19 !! EXTERNAL
20 !! --------
21 !!
22 !!
23 !! IMPLICIT ARGUMENTS
24 !! ------------------
25 !!
26 !! REFERENCE
27 !! ---------
28 !!
29 !!
30 !! AUTHOR
31 !! ------
32 !! V. Masson *Meteo France*
33 !!
34 !! MODIFICATIONS
35 !! -------------
36 !! Original 01/2004
37 !! P. Le Moigne 10/2005, Phasage Arome
38 !-------------------------------------------------------------------------------
39 !
40 !* 0. DECLARATIONS
41 ! ------------
42 !
43 USE modi_read_prep_surf_atm_conf
44 !
45 USE modn_prep_teb, ONLY : cfile_ts, ctype_ts
46 USE modd_prep_teb, ONLY : cfile_teb, ctype, cfilepgd_teb, ctypepgd, &
47  cfile_ws, ctype_ws, xws_roof, xws_road, &
48  xts_roof, xts_road, xts_wall, xti_bld, xti_road, &
49  xt_can, xq_can, xws_roof_def, xws_road_def, xti_bld_def, &
50  xhui_bld_def, xhui_bld
51 !
52 USE modd_surf_par, ONLY : xundef
53 !
54 USE mode_thermos
55 !
56 USE yomhook ,ONLY : lhook, dr_hook
57 USE parkind1 ,ONLY : jprb
58 !
59 USE modi_abor1_sfx
60 !
61 IMPLICIT NONE
62 !
63 !* 0.1 Declarations of arguments
64 ! -------------------------
65 !
66  CHARACTER(LEN=6), INTENT(IN) :: hprogram ! program calling ISBA
67  CHARACTER(LEN=7), INTENT(IN) :: hvar ! variable treated
68  CHARACTER(LEN=28), INTENT(OUT) :: hfile ! file name
69  CHARACTER(LEN=6), INTENT(OUT) :: hfiletype! file type
70  CHARACTER(LEN=28), INTENT(OUT) :: hfilepgd ! file name
71  CHARACTER(LEN=6), INTENT(OUT) :: hfilepgdtype! file type
72  CHARACTER(LEN=28), INTENT(IN) :: hatmfile ! atmospheric file name
73  CHARACTER(LEN=6), INTENT(IN) :: hatmfiletype! atmospheric file type
74  CHARACTER(LEN=28), INTENT(IN) :: hpgdfile ! atmospheric file name
75  CHARACTER(LEN=6), INTENT(IN) :: hpgdfiletype! atmospheric file type
76 INTEGER, INTENT(IN) :: kluout ! logical unit of output listing
77 LOGICAL, INTENT(OUT) :: ounif ! flag for prescribed uniform field
78 
79 !
80 !* 0.2 Declarations of local variables
81 ! -------------------------------
82 !
83 INTEGER :: iresp ! IRESP : return-code if a problem appears
84  ! at the open of the file in LFI routines
85 INTEGER :: ilunam ! Logical unit of namelist file
86 !
87  CHARACTER(LEN=28) :: ynamelist ! namelist file
88 !
89 LOGICAL :: gfound ! Return code when searching namelist
90 REAL(KIND=JPRB) :: zhook_handle
91 !-------------------------------------------------------------------------------
92 !
93 !
94 IF (lhook) CALL dr_hook('READ_PREP_TEB_CONF',0,zhook_handle)
95 hfile = ' '
96 hfiletype = ' '
97 !
98 hfilepgd = ' '
99 hfilepgdtype = ' '
100 !
101 ounif = .false.
102 !
103 !-------------------------------------------------------------------------------
104 !
105 !* choice of input file
106 ! --------------------
107 !
108 SELECT CASE (hvar)
109  CASE ('WS_ROOF','WS_ROAD')
110  IF (len_trim(cfile_ws)>0 .AND. len_trim(ctype_ws)>0 ) THEN
111  hfile = cfile_ws
112  hfiletype = ctype_ws
113  END IF
114  CASE ('T_ROOF ','T_ROAD ','T_WALL ','T_WALLA','T_WALLB','T_FLOOR','T_MASS','T_WIN1 ','T_CAN ','Q_CAN')
115  IF (len_trim(cfile_ts)>0 .AND. len_trim(ctype_ts)>0 ) THEN
116  hfile = cfile_ts
117  hfiletype = ctype_ts
118  END IF
119 END SELECT
120 !
121 IF (len_trim(hfile)==0 .AND. len_trim(cfile_teb)>0 .AND. len_trim(ctype)>0) THEN
122  hfile = cfile_teb
123  hfiletype = ctype
124 END IF
125 !
126 IF (len_trim(hfilepgd)==0 .AND. len_trim(cfilepgd_teb)>0 .AND. len_trim(ctypepgd)>0) THEN
127  hfilepgd = cfilepgd_teb
128  hfilepgdtype = ctypepgd
129 END IF
130 !
131 !! If no file name in the scheme namelist,
132 !! try to find a name in NAM_SURF_ATM
133 !
134 IF (len_trim(hfile)==0) THEN
135 !
136  CALL read_prep_surf_atm_conf(hprogram,hfile,hfiletype,hfilepgd,hfilepgdtype,&
137  hatmfile,hatmfiletype,hpgdfile,hpgdfiletype,kluout)
138 !
139 END IF
140 !-------------------------------------------------------------------------------
141 !
142 !* Is an uniform field prescribed?
143 ! ------------------------------
144 !
145 SELECT CASE (hvar)
146  CASE ('WS_ROOF')
147  ounif = (xws_roof/=xundef)
148  CASE ('WS_ROAD')
149  ounif = (xws_road/=xundef)
150  CASE ('TI_BLD ')
151  ounif = (xti_bld/=xundef)
152  CASE ('TI_ROAD')
153  ounif = (xti_road/=xundef)
154  CASE ('T_ROAD ')
155  ounif = (xts_road/=xundef)
156  CASE ('T_WALL ','T_WALLA','T_WALLB')
157  ounif = (xts_wall/=xundef)
158  CASE ('T_ROOF ')
159  ounif = (xts_roof/=xundef)
160  CASE ('T_FLOOR')
161  ounif = (xti_road/=xundef)
162  CASE ('T_MASS')
163  ounif = (xti_bld/=xundef)
164  CASE ('T_WIN1')
165  ounif = (xts_wall/=xundef)
166  CASE ('T_WIN2')
167  ounif = (xti_bld/=xundef)
168  CASE ('QI_BLD ')
169  ounif = (xhui_bld/=xundef .AND. xti_bld/=xundef)
170 END SELECT
171 !
172 !-------------------------------------------------------------------------------
173 !
174 !* building temperature available for temperature profiles when file is present
175 ! ----------------------------------------------------------------------------
176 !
177 !IF (LEN_TRIM(HFILETYPE)>0 .AND. .NOT. OUNIF) THEN
178 ! IF (HVAR=='T_ROOF ' .OR. HVAR=='T_WALL' .OR. HVAR=='TI_BLD' .AND. XTI_BLD==XUNDEF) XTI_BLD=XTI_BLD_DEF
179 !END IF
180 !
181 !-------------------------------------------------------------------------------
182 !
183 !* If no file and no uniform field is prescribed: default values used
184 ! ---------------------------------------------
185 !
186 IF (len_trim(hfiletype)==0 .AND. .NOT. ounif) THEN
187  SELECT CASE (hvar)
188  CASE ('ZS ')
189  ounif = .true.
190  CASE ('WS_ROOF')
191  xws_roof = xws_roof_def
192  ounif = .true.
193  CASE ('WS_ROAD')
194  xws_road = xws_road_def
195  ounif = .true.
196  CASE ('TI_BLD ')
197  xti_bld = xti_bld_def
198  ounif = .true.
199  CASE ('Q_CAN ')
200  IF (xt_can/=xundef) THEN
201  xq_can = xhui_bld_def * qsat(xt_can, 100000.)
202  ounif = .true.
203  ELSE
204  CALL abor1_sfx("READ_PREP_TEB_CONF: DON'T KNOW HOW TO INITIALIZE Q_CAN ")
205  END IF
206  CASE ('T_CAN ')
207  IF (xts_road/=xundef) THEN
208  xt_can = xts_road
209  ELSE IF (xts_wall/=xundef) THEN
210  xt_can = xts_wall
211  ELSE IF (xts_roof/=xundef) THEN
212  xt_can = xts_roof
213  ELSE
214  CALL abor1_sfx('READ_PREP_TEB_CONF: AN INPUT VALUE IS REQUIRED FOR '//hvar)
215  END IF
216  CASE ('T_WIN1 ')
217  IF (xts_wall==xundef) THEN
218  CALL abor1_sfx('READ_PREP_TEB_CONF: AN INPUT VALUE IS REQUIRED FOR TS_WALL TO INITIALIZE T_WIN1')
219  ELSE
220  ounif = .true.
221  ENDIF
222  CASE ('T_WIN2 ')
223  xti_bld = xti_bld_def
224  ounif = .true.
225  CASE ('QI_BLD ')
226  xhui_bld = xhui_bld_def
227  ounif = .true.
228  CASE ('DATE ')
229  IF (lhook) CALL dr_hook('READ_PREP_TEB_CONF',1,zhook_handle)
230  RETURN
231  CASE ('SN_ROOF','SN_ROAD')
232  ounif = .true.
233  CASE default
234  CALL abor1_sfx('READ_PREP_TEB_CONF: AN INPUT FILE OR A UNIFORM VALUE IS REQUIRED FOR '//hvar)
235  END SELECT
236 END IF
237 !
238 !-------------------------------------------------------------------------------
239 !
240 !* no file given ? nor specific value in namelist? One takes the default value.
241 !
242 IF (hfiletype==' ' .AND. .NOT. ounif) THEN
243  IF (hvar(1:2)/='ZS') WRITE(kluout,*) 'NO FILE FOR FIELD ',hvar, &
244  ': UNIFORM DEFAULT FIELD IS PRESCRIBED'
245  ounif = .true.
246 END IF
247 IF (lhook) CALL dr_hook('READ_PREP_TEB_CONF',1,zhook_handle)
248 !
249 !-------------------------------------------------------------------------------
250 !
251 END SUBROUTINE read_prep_teb_conf
subroutine read_prep_teb_conf(HPROGRAM, HVAR, HFILE, HFILETYPE, HFILEPGD, HFILEPGDTYPE, HATMFILE, HATMFILETYPE, HPGDFILE, HPGDFILETYPE, KLUOUT, OUNIF)
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)