6 SUBROUTINE read_prep_garden_snow(HPROGRAM,HSNOW,KSNOW_LAYER,HFILE,HFILETYPE,HFILEPGD,HFILEPGDTYPE,OUNIF)
51 USE modd_snow_par
, ONLY : xansmin, xrhosmax
57 USE modi_open_namelist
58 USE modi_close_namelist
61 USE modd_prep_teb_garden
, ONLY : cfile_snow_gd, ctype_snow, cfilepgd_snow_gd, &
62 ctypepgd_snow, lsnow_ideal_gd, &
63 xwsnow_p=>xwsnow_gd, xtsnow_p=>xtsnow_gd, xlwcsnow_p
76 CHARACTER(LEN=6),
INTENT(IN) :: HPROGRAM
77 CHARACTER(LEN=3),
INTENT(OUT) :: HSNOW
78 INTEGER,
INTENT(OUT) :: KSNOW_LAYER
79 CHARACTER(LEN=28),
OPTIONAL,
INTENT(OUT) :: HFILE
80 CHARACTER(LEN=6),
OPTIONAL,
INTENT(OUT) :: HFILETYPE
81 CHARACTER(LEN=28),
OPTIONAL,
INTENT(OUT) :: HFILEPGD
82 CHARACTER(LEN=6),
OPTIONAL,
INTENT(OUT) :: HFILEPGDTYPE
83 LOGICAL,
OPTIONAL,
INTENT(OUT) :: OUNIF
88 CHARACTER(LEN=3) :: CSNOW
89 INTEGER :: NSNOW_LAYER
90 CHARACTER(LEN=28) :: CFILE_SNOW, CFILEPGD_SNOW
91 LOGICAL :: LSNOW_IDEAL, LSNOW_FRAC_TOT, LSWEMAX
92 REAL :: XASNOW, XSWEMAX
93 REAL,
DIMENSION(NSNOW_LAYER_MAX) :: XWSNOW, XZSNOW, XRSNOW, XTSNOW, XLWCSNOW
97 REAL,
DIMENSION(NSNOW_LAYER_MAX) :: XWSNOW_GD, XZSNOW_GD, XRSNOW_GD, XTSNOW_GD
105 REAL(KIND=JPRB) :: ZHOOK_HANDLE
107 NAMELIST/nam_prep_isba_snow/csnow, nsnow_layer, cfile_snow, ctype_snow,
121 IF (
lhook)
CALL dr_hook(
'READ_PREP_GARDEN_SNOW',0,zhook_handle)
129 cfilepgd_snow_gd =
' ' 132 lsnow_ideal_gd = .false.
137 xrsnow_gd(:) = xrhosmax
156 CALL posnam(ilunam,
'NAM_PREP_ISBA_SNOW',gfound,iluout)
163 lsnow_ideal = .false.
164 lsnow_frac_tot = .false.
176 READ(unit=ilunam,nml=nam_prep_isba_snow)
181 cfile_snow_gd = cfile_snow
182 cfilepgd_snow_gd = cfilepgd_snow
183 lsnow_ideal_gd = lsnow_ideal
184 xwsnow_gd(:) = xwsnow(:)
185 xzsnow_gd(:) = xzsnow(:)
186 xrsnow_gd(:) = xrsnow(:)
187 xtsnow_gd(:) = xtsnow(:)
188 xlwcsnow_gd(:) = xlwcsnow(:)
190 xsg1snow_gd(:) = xsg1snow(:)
191 xsg2snow_gd(:) = xsg2snow(:)
192 xhistsnow_gd(:) = xhistsnow(:)
193 xagesnow_gd(:) = xagesnow(:)
198 CALL posnam(ilunam,
'NAM_PREP_GARDEN_SNOW',gfound,iluout)
200 READ(unit=ilunam,nml=nam_prep_garden_snow)
212 WRITE(iluout,*)
'------------------------------------' 213 WRITE(iluout,*)
'Please update modd_prep_snow.f90 routine : ' 214 WRITE(iluout,*)
'The maximum number of snow layers ' 215 WRITE(iluout,*)
'in the declaration of the namelist variables ' 217 WRITE(iluout,*)
'------------------------------------' 218 CALL abor1_sfx(
'READ_PREP_GARDEN_SNOW: NUMBER OF SNOW LAYERS MUST BE INCREASED IN NAMELIST DECLARATION' 229 IF ((xzsnow_gd(jlayer)>0) .AND.(xzsnow_gd(jlayer)/=
xundef ))
THEN 230 IF ((xwsnow_gd(jlayer)>0) .AND.(xwsnow_gd(jlayer)/=
xundef ))
THEN 231 WRITE(iluout,*)
'XWSNOW and XZSNOW are both defined.' 232 WRITE(iluout,*)
'You must define only one of them.' 233 WRITE(iluout,*)
' PLEASE CORRECT THAT ' 234 CALL abor1_sfx(
'READ_PREP_GARDEN_SNOW: ERROR IN INITIALIZATION OF SNOW DEPTH' 236 xwsnow_p(jlayer)=xzsnow_gd(jlayer)*xrsnow_gd(jlayer)
239 xwsnow_p(jlayer)=xwsnow_gd(jlayer)
256 IF(all(xwsnow_p(:)==
xundef).AND.
PRESENT(ounif))
THEN 258 ELSEIF(
PRESENT(ounif))
THEN 262 lfile=(len_trim(cfile_snow_gd)>0.AND.len_trim(ctype_snow)>0 &
263 .AND.len_trim(cfilepgd_snow_gd)>0.AND.len_trim(ctypepgd_snow)>0)
265 IF (
PRESENT(ounif)) lfile=(lfile .AND. .NOT.ounif)
267 IF(
PRESENT(hfile))
THEN 269 hfile = cfile_snow_gd
274 IF(
PRESENT(hfiletype))
THEN 276 hfiletype = ctype_snow
281 IF(
PRESENT(hfilepgdtype))
THEN 283 hfilepgdtype = ctypepgd_snow
288 IF(
PRESENT(hfilepgd))
THEN 290 hfilepgd = cfilepgd_snow_gd
295 IF (lfile.AND.
PRESENT(ounif)) ounif=.false.
297 IF (
lhook)
CALL dr_hook(
'READ_PREP_GARDEN_SNOW',1,zhook_handle)
subroutine posnam(KULNAM, HDNAML, OFOUND, KLUOUT)
subroutine read_prep_garden_snow(HPROGRAM, HSNOW, KSNOW_LAYER, HFILE,
subroutine abor1_sfx(YTEXT)
integer, parameter nsnow_layer_max
subroutine close_namelist(HPROGRAM, KLUNAM)
subroutine get_luout(HPROGRAM, KLUOUT)
character(len=3) csnow_gd
subroutine open_namelist(HPROGRAM, KLUNAM, HFILE)