53 USE modi_open_namelist
54 USE modi_close_namelist
58 ctypepgd_snow, lsnow_ideal_gr, &
59 xwsnow_p=>xwsnow_gr, xtsnow_p=>xtsnow_gr, xlwcsnow_p=>xlwcsnow_gr, &
60 xrsnow_p=>xrsnow_gr, xagesnow_p=>xagesnow_gr, xasnow_gr
64 USE yomhook
,ONLY : lhook, dr_hook
65 USE parkind1
,ONLY : jprb
72 CHARACTER(LEN=6),
INTENT(IN) :: hprogram
73 CHARACTER(LEN=3),
INTENT(OUT) :: hsnow
74 INTEGER,
INTENT(OUT) :: ksnow_layer
75 CHARACTER(LEN=28),
OPTIONAL,
INTENT(OUT) :: hfile
76 CHARACTER(LEN=6),
OPTIONAL,
INTENT(OUT) :: hfiletype
77 CHARACTER(LEN=28),
OPTIONAL,
INTENT(OUT) :: hfilepgd
78 CHARACTER(LEN=6),
OPTIONAL,
INTENT(OUT) :: hfilepgdtype
79 LOGICAL,
OPTIONAL,
INTENT(OUT) :: ounif
84 CHARACTER(LEN=3) :: csnow
85 INTEGER :: nsnow_layer
86 CHARACTER(LEN=28) :: cfile_snow, cfilepgd_snow
87 LOGICAL :: lsnow_ideal, lsnow_frac_tot, lswemax
88 REAL :: xasnow, xswemax
89 REAL,
DIMENSION(NSNOW_LAYER_MAX) :: xwsnow, xzsnow, xrsnow, xtsnow, xlwcsnow, xsg1snow, xsg2snow,&
93 REAL,
DIMENSION(NSNOW_LAYER_MAX) :: xwsnow_gr, xzsnow_gr, xrsnow_gr, xtsnow_gr, xlwcsnow_gr, &
94 xsg1snow_gr, xsg2snow_gr, xhistsnow_gr, xagesnow_gr
101 REAL(KIND=JPRB) :: zhook_handle
103 namelist/nam_prep_isba_snow/csnow, nsnow_layer, cfile_snow, ctype_snow, &
104 cfilepgd_snow, ctypepgd_snow, &
105 lsnow_ideal, lsnow_frac_tot, lsnow_prep_perm,&
106 xwsnow, xzsnow, xtsnow, xlwcsnow, xrsnow, xasnow, &
107 xsg1snow, xsg2snow, xhistsnow, xagesnow, &
110 namelist/nam_prep_greenroof_snow/csnow_gr, nsnow_layer_gr, cfile_snow_gr, ctype_snow, &
111 cfilepgd_snow_gr, ctypepgd_snow, &
112 lsnow_ideal_gr, xwsnow_gr, xzsnow_gr, xtsnow_gr, &
113 xlwcsnow_gr, xrsnow_gr, xasnow_gr
115 IF (lhook) CALL dr_hook(
'READ_PREP_GREENROOF_SNOW',0,zhook_handle)
129 cfilepgd_snow_gr =
' '
132 lsnow_ideal_gr = .false.
133 lsnow_prep_perm = .true.
136 xzsnow_gr(:) = xundef
137 xrsnow_gr(:) = xrhosmax
141 xsg1snow_gr(:) = xundef
142 xsg2snow_gr(:) = xundef
143 xhistsnow_gr(:) = xundef
144 xagesnow_gr(:) = xundef
153 CALL
posnam(ilunam,
'NAM_PREP_ISBA_SNOW',gfound,iluout)
159 lsnow_ideal = .false.
160 lsnow_frac_tot = .false.
169 xhistsnow(:) = xundef
172 READ(unit=ilunam,nml=nam_prep_isba_snow)
176 nsnow_layer_gr = nsnow_layer
177 cfile_snow_gr = cfile_snow
178 lsnow_ideal_gr = lsnow_ideal
179 xwsnow_gr(:) = xwsnow(:)
180 xzsnow_gr(:) = xzsnow(:)
181 xrsnow_gr(:) = xrsnow(:)
182 xtsnow_gr(:) = xtsnow(:)
183 xlwcsnow_gr(:) = xlwcsnow(:)
185 xsg1snow_gr(:) = xsg1snow(:)
186 xsg2snow_gr(:) = xsg2snow(:)
187 xhistsnow_gr(:) = xhistsnow(:)
188 xagesnow_gr(:) = xagesnow(:)
193 CALL
posnam(ilunam,
'NAM_PREP_GREENROOF_SNOW',gfound,iluout)
195 READ(unit=ilunam,nml=nam_prep_greenroof_snow)
200 IF ( csnow_gr==
'NON') nsnow_layer_gr = 0
201 IF ( csnow_gr==
'D95' .OR. csnow_gr==
'EBA') nsnow_layer_gr = 1
202 IF (csnow_gr==
'3-L' .AND. nsnow_layer_gr<=2) nsnow_layer_gr = 12
204 IF (nsnow_layer_gr > nsnow_layer_max)
THEN
205 WRITE(iluout,*)
'------------------------------------'
206 WRITE(iluout,*)
'Please update modd_prep_snow.f90 routine : '
207 WRITE(iluout,*)
'The maximum number of snow layers '
208 WRITE(iluout,*)
'in the declaration of the namelist variables '
209 WRITE(iluout,*)
'must be decreased to : ', nsnow_layer_max
210 WRITE(iluout,*)
'------------------------------------'
211 CALL
abor1_sfx(
'READ_PREP_GREENROOF_SNOW: NUMBER OF SNOW LAYERS MUST BE INCREASED IN NAMELIST DECLARATION')
214 ALLOCATE(xwsnow_p(nsnow_layer_gr))
215 ALLOCATE(xrsnow_p(nsnow_layer_gr))
216 ALLOCATE(xtsnow_p(nsnow_layer_gr))
217 ALLOCATE(xagesnow_p(nsnow_layer_gr))
218 ALLOCATE(xlwcsnow_p(nsnow_layer_gr))
220 DO jlayer=1,nsnow_layer_gr
221 IF ((xzsnow_gr(jlayer)>0) .AND.(xzsnow_gr(jlayer)/=xundef ))
THEN
222 IF ((xwsnow_gr(jlayer)>0) .AND.(xwsnow_gr(jlayer)/=xundef ))
THEN
223 WRITE(iluout,*)
'XWSNOW and XZSNOW are both defined.'
224 WRITE(iluout,*)
'You must define only one of them.'
225 WRITE(iluout,*)
' PLEASE CORRECT THAT '
226 CALL
abor1_sfx(
'READ_PREP_GREENROOF_SNOW: ERROR IN INITIALIZATION OF SNOW DEPTH')
228 xwsnow_p(jlayer)=xzsnow_gr(jlayer)*xrsnow_gr(jlayer)
231 xwsnow_p(jlayer)=xwsnow_gr(jlayer)
235 xrsnow_p=xrsnow_gr(1:nsnow_layer_gr)
236 xtsnow_p=xtsnow_gr(1:nsnow_layer_gr)
237 xagesnow_p=xagesnow_gr(1:nsnow_layer_gr)
238 xlwcsnow_p=xlwcsnow_gr(1:nsnow_layer_gr)
245 ksnow_layer = nsnow_layer_gr
247 IF(all(xwsnow_p(:)==xundef).AND.present(ounif))
THEN
249 ELSEIF(present(ounif))
THEN
253 lfile=(len_trim(cfile_snow_gr)>0.AND.len_trim(ctype_snow)>0 &
254 .AND.len_trim(cfilepgd_snow_gr)>0.AND.len_trim(ctypepgd_snow)>0)
256 IF (present(ounif)) lfile=(lfile .AND. .NOT.ounif)
258 IF(present(hfile))
THEN
260 hfile = cfile_snow_gr
265 IF(present(hfiletype))
THEN
267 hfiletype = ctype_snow
272 IF(present(hfilepgdtype))
THEN
274 hfilepgdtype = ctypepgd_snow
279 IF(present(hfilepgd))
THEN
281 hfilepgd = cfilepgd_snow_gr
286 IF (lfile.AND.present(ounif)) ounif=.false.
288 IF (lhook) CALL dr_hook(
'READ_PREP_GREENROOF_SNOW',1,zhook_handle)
subroutine read_prep_greenroof_snow(HPROGRAM, HSNOW, KSNOW_LAYER, HFILE, HFILETYPE, HFILEPGD, HFILEPGDTYPE, OUNIF)
subroutine abor1_sfx(YTEXT)
subroutine close_namelist(HPROGRAM, KLUNAM)
subroutine posnam(KULNAM, HDNAML, OFOUND, KLUOUT)
subroutine get_luout(HPROGRAM, KLUOUT)
subroutine open_namelist(HPROGRAM, KLUNAM, HFILE)