6 SUBROUTINE urban_snow_evol(T, B, PT_LWCN, PQ_LWCN, PU_LWCN, PTS_RF, PTS_RD, PTS_WL_A, &
7 PTS_WL_B, PPS, PTA, PQA, PRHOA, PLW_RAD, PSR, PZREF, PUREF, &
8 PVMOD, PTSTEP, PZ_LWCN, PDN_RF, PABS_SW_SN_RF, PABS_LW_SN_RF,&
9 PDN_RD, PABS_SW_SN_RD, PABS_LW_SN_RD, PRNSN_RF, PHSN_RF, &
10 PLESN_RF, PGSN_RF, PMELT_RF, PRNSN_RD, PHSN_RD, PLESN_RD, &
11 PGSN_RD, PMELT_RD, PLW_WA_TO_NR , PLW_WB_TO_NR, PLW_S_TO_NR, &
12 PLW_WIN_TO_NR, PDQS_SN_RF, PDQS_SN_RD )
56 USE modd_snow_par
, ONLY : xz0sn, xz0hsn, &
57 xansmin_roof, xansmax_roof, xans_todry_roof, &
58 xans_t_roof, xrhosmin_roof, xrhosmax_roof, &
60 xansmin_road, xansmax_road, xans_todry_road, &
61 xans_t_road, xrhosmin_road, xrhosmax_road, &
67 USE modi_roof_impl_coef
68 USE modi_snow_cover_1layer
79 TYPE(
teb_t),
INTENT(INOUT) :: T
80 TYPE(
bem_t),
INTENT(INOUT) :: B
82 REAL,
DIMENSION(:),
INTENT(IN) :: PT_LWCN
83 REAL,
DIMENSION(:),
INTENT(IN) :: PQ_LWCN
84 REAL,
DIMENSION(:),
INTENT(IN) :: PU_LWCN
85 REAL,
DIMENSION(:),
INTENT(IN) :: PTS_RF
86 REAL,
DIMENSION(:),
INTENT(IN) :: PTS_RD
87 REAL,
DIMENSION(:),
INTENT(IN) :: PTS_WL_A
88 REAL,
DIMENSION(:),
INTENT(IN) :: PTS_WL_B
90 REAL,
DIMENSION(:),
INTENT(IN) :: PPS
91 REAL,
DIMENSION(:),
INTENT(IN) :: PTA
92 REAL,
DIMENSION(:),
INTENT(IN) :: PQA
94 REAL,
DIMENSION(:),
INTENT(IN) :: PVMOD
95 REAL,
DIMENSION(:),
INTENT(IN) :: PRHOA
96 REAL,
DIMENSION(:),
INTENT(IN) :: PLW_RAD
97 REAL,
DIMENSION(:),
INTENT(IN) :: PSR
98 REAL,
DIMENSION(:),
INTENT(IN) :: PZREF
100 REAL,
DIMENSION(:),
INTENT(IN) :: PUREF
103 REAL,
INTENT(IN) :: PTSTEP
104 REAL,
DIMENSION(:),
INTENT(IN) :: PZ_LWCN
106 REAL,
DIMENSION(:),
INTENT(IN) :: PDN_RF
107 REAL,
DIMENSION(:),
INTENT(IN) :: PABS_SW_SN_RF
108 REAL,
DIMENSION(:),
INTENT(OUT) :: PABS_LW_SN_RF
109 REAL,
DIMENSION(:),
INTENT(INOUT) :: PDN_RD
110 REAL,
DIMENSION(:),
INTENT(IN) :: PABS_SW_SN_RD
111 REAL,
DIMENSION(:),
INTENT(OUT) :: PABS_LW_SN_RD
113 REAL,
DIMENSION(:),
INTENT(OUT) :: PRNSN_RF
114 REAL,
DIMENSION(:),
INTENT(OUT) :: PHSN_RF
115 REAL,
DIMENSION(:),
INTENT(OUT) :: PLESN_RF
116 REAL,
DIMENSION(:),
INTENT(OUT) :: PGSN_RF
117 REAL,
DIMENSION(:),
INTENT(OUT) :: PMELT_RF
118 REAL,
DIMENSION(:),
INTENT(OUT) :: PRNSN_RD
119 REAL,
DIMENSION(:),
INTENT(OUT) :: PHSN_RD
120 REAL,
DIMENSION(:),
INTENT(OUT) :: PLESN_RD
121 REAL,
DIMENSION(:),
INTENT(OUT) :: PGSN_RD
122 REAL,
DIMENSION(:),
INTENT(OUT) :: PMELT_RD
124 REAL,
DIMENSION(:),
INTENT(IN) :: PLW_WA_TO_NR
125 REAL,
DIMENSION(:),
INTENT(IN) :: PLW_WB_TO_NR
126 REAL,
DIMENSION(:),
INTENT(IN) :: PLW_S_TO_NR
127 REAL,
DIMENSION(:),
INTENT(IN) :: PLW_WIN_TO_NR
128 REAL,
DIMENSION(:),
INTENT(OUT) :: PDQS_SN_RF
129 REAL,
DIMENSION(:),
INTENT(OUT) :: PDQS_SN_RD
133 REAL,
DIMENSION(SIZE(PTA)) :: ZLW1_RD
134 REAL,
DIMENSION(SIZE(PTA)) :: ZLW1_RF
136 REAL,
DIMENSION(SIZE(PTA)) :: ZLW2_RD
137 REAL,
DIMENSION(SIZE(PTA)) :: ZLW2_RF
140 REAL,
DIMENSION(SIZE(PTA)) :: ZSR_RF
141 REAL,
DIMENSION(SIZE(PTA)) :: ZSR_RD
143 REAL,
DIMENSION(SIZE(PTA)) :: ZT_SKY
144 REAL,
DIMENSION(SIZE(PTA)) :: ZTS_COEFA
146 REAL,
DIMENSION(SIZE(PTA)) :: ZTS_COEFB
151 LOGICAL :: GSN_RF, GSN_RD
156 REAL(KIND=JPRB) :: ZHOOK_HANDLE
160 IF (
lhook)
CALL dr_hook(
'URBAN_SNOW_EVOL',0,zhook_handle)
176 gsn_rf = any( psr(:)>0. .OR. t%TSNOW_ROOF%WSNOW(:,1)>0. )
177 gsn_rd = any( psr(:)>0. .OR. t%TSNOW_ROAD%WSNOW(:,1)>0. )
191 zlw1_rf(:) = t%TSNOW_ROOF%EMIS(:) * plw_rad(:)
192 zlw2_rf(:) = - t%TSNOW_ROOF%EMIS(:) *
xstefan 198 DO jl=1,
SIZE(t%TSNOW_ROOF%WSNOW,2)
199 WHERE (pdn_rf(:)>0.) t%TSNOW_ROOF%WSNOW(:,jl) = t%TSNOW_ROOF%WSNOW(:,jl) / pdn_rf(:)
202 WHERE (pdn_rf(:)>0.) zsr_rf(:) = psr(:) / pdn_rf(:)
211 IF (t%TSNOW_ROOF%SCHEME==
'1-L') &
213 xrhosmin_roof, xrhosmax_roof, xans_t_roof, .true., 0., &
214 xwcrn_roof, xz0sn, xz0hsn, t%TSNOW_ROOF, pts_rf, &
215 zts_coefa, zts_coefb, pabs_sw_sn_rf, zlw1_rf, zlw2_rf,&
216 pta, pqa, pvmod, pps, prhoa, zsr_rf, pzref, puref, &
217 prnsn_rf, phsn_rf, plesn_rf, pgsn_rf, pmelt_rf, &
218 pdqs_sn_rf, pabs_lw_sn_rf)
224 DO jl=1,
SIZE(t%TSNOW_ROOF%WSNOW,2)
225 t%TSNOW_ROOF%WSNOW(:,jl) = t%TSNOW_ROOF%WSNOW(:,jl) * pdn_rf(:)
235 zt_sky(:) = (plw_rad(:)/
xstefan)**0.25
237 zlw1_rd(:) = plw_s_to_nr(:) * (zt_sky(:) - t%TSNOW_ROAD%TS(:)) &
238 + plw_wa_to_nr(:) * (pts_wl_a(:) - t%TSNOW_ROAD%TS(:)) &
239 + plw_wb_to_nr(:) * (pts_wl_b(:) - t%TSNOW_ROAD%TS(:)) &
240 + plw_win_to_nr(:) * (b%XT_WIN1(:) - t%TSNOW_ROAD%TS(:))
247 DO jl=1,
SIZE(t%TSNOW_ROAD%WSNOW,2)
248 WHERE (pdn_rd(:)>0.) t%TSNOW_ROAD%WSNOW(:,jl) = t%TSNOW_ROAD%WSNOW(:,jl) / pdn_rd(:)
251 WHERE (pdn_rd(:)>0.) zsr_rd(:) = psr(:) / pdn_rd(:)
260 IF (t%TSNOW_ROAD%SCHEME==
'1-L') &
262 xrhosmin_road, xrhosmax_road, xans_t_road, .false., &
263 0., xwcrn_road, xz0sn, xz0hsn, t%TSNOW_ROAD, pts_rd, &
264 zts_coefa, zts_coefb, pabs_sw_sn_rd, zlw1_rd, zlw2_rd,&
265 pt_lwcn, pq_lwcn, pu_lwcn, pps, prhoa, zsr_rd, pz_lwcn,&
266 pz_lwcn, prnsn_rd, phsn_rd, plesn_rd, pgsn_rd, &
267 pmelt_rd, pdqs_sn_rd, pabs_lw_sn_rd )
271 DO jl=1,
SIZE(t%TSNOW_ROAD%WSNOW,2)
272 t%TSNOW_ROAD%WSNOW(:,jl) = t%TSNOW_ROAD%WSNOW(:,jl) * pdn_rd(:)
275 WHERE (t%TSNOW_ROAD%T(:,1) .EQ.
xundef) pdn_rd(:) = 0.0
278 IF (
lhook)
CALL dr_hook(
'URBAN_SNOW_EVOL',1,zhook_handle)
subroutine snow_cover_1layer(PTSTEP, PANSMIN, PANSMAX, PTODRY, PRHOSMIN, PRHOSMAX, PRHOFOLD, OALL_MELT, PDRAIN_TIME, PWCRN, PZ0SN, PZ0HSN, TPSNOW, PTG, PTG_COEFA, PTG_COEFB, PABS_SW, PLW1, PLW2, PTA, PQA, PVMOD, PPS, PRHOA, PSR, PZREF, PUREF, PRNSNOW, PHSNOW, PLESNOW, PGSNOW, PMELT, PDQS_SNOW, PABS_LW)
subroutine roof_impl_coef(T, PTSTEP, PTDEEP_A, PTDEEP_B)
subroutine urban_snow_evol(T, B, PT_LWCN, PQ_LWCN, PU_LWCN, PTS_RF, PTS_RD, PTS_WL_A, PTS_WL_B, PPS, PTA, PQA, PRHOA, PLW_RAD, PSR, PZREF, PUREF, PVMOD, PTSTEP, PZ_LWCN, PDN_RF, PABS_SW_SN_RF, PABS_LW_SN_RF, PDN_RD, PABS_SW_SN_RD, PABS_LW_SN_RD, PRNSN_RF, PHSN_RF, PLESN_RF, PGSN_RF, PMELT_RF, PRNSN_RD, PHSN_RD, PLESN_RD, PGSN_RD, PMELT_RD, PLW_WA_TO_NR, PLW_WB_TO_NR, PLW_S_TO_NR, PLW_WIN_TO_NR, PDQS_SN_RF, PDQS_SN_RD)