47 USE modd_snow_par
, ONLY : xansmin, xrhosmax
53 USE modi_open_namelist
54 USE modi_close_namelist
57 USE modd_prep_teb_greenroof
, ONLY : cfile_snow_gr, ctype_snow, cfilepgd_snow_gr, &
58 ctypepgd_snow, lsnow_ideal_gr, &
59 xwsnow_p=>xwsnow_gr, xtsnow_p=>xtsnow_gr, xlwcsnow_p
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
93 REAL,
DIMENSION(NSNOW_LAYER_MAX) :: XWSNOW_GR, XZSNOW_GR, XRSNOW_GR, XTSNOW_GR
101 REAL(KIND=JPRB) :: ZHOOK_HANDLE
103 NAMELIST/nam_prep_isba_snow/csnow, nsnow_layer, cfile_snow, ctype_snow,
115 IF (
lhook)
CALL dr_hook(
'READ_PREP_GREENROOF_SNOW',0,zhook_handle)
129 cfilepgd_snow_gr =
' ' 132 lsnow_ideal_gr = .false.
137 xrsnow_gr(:) = xrhosmax
153 CALL posnam(ilunam,
'NAM_PREP_ISBA_SNOW',gfound,iluout)
159 lsnow_ideal = .false.
160 lsnow_frac_tot = .false.
172 READ(unit=ilunam,nml=nam_prep_isba_snow)
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)
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 ' 210 WRITE(iluout,*)
'------------------------------------' 211 CALL abor1_sfx(
'READ_PREP_GREENROOF_SNOW: NUMBER OF SNOW LAYERS MUST BE INCREASED IN NAMELIST DECLARATION' 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)
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 posnam(KULNAM, HDNAML, OFOUND, KLUOUT)
subroutine abor1_sfx(YTEXT)
character(len=3) csnow_gr
integer, parameter nsnow_layer_max
subroutine close_namelist(HPROGRAM, KLUNAM)
subroutine get_luout(HPROGRAM, KLUOUT)
subroutine read_prep_greenroof_snow(HPROGRAM, HSNOW, KSNOW_LAYER, HFI
subroutine open_namelist(HPROGRAM, KLUNAM, HFILE)