7 pt_lowcan, pq_lowcan, pu_lowcan, &
8 pts_roof,pts_road,pts_wall_a, pts_wall_b, &
9 pt_roof, pd_roof, ptc_roof, phc_roof, &
11 pwsnow_roof, ptsnow_roof, prsnow_roof, pasnow_roof, &
12 ptssnow_roof, pesnow_roof, &
14 pwsnow_road, ptsnow_road, prsnow_road, pasnow_road, &
15 ptssnow_road, pesnow_road, &
16 pps, pta, pqa, prhoa, &
18 psr, pzref, puref, pvmod, &
21 pdn_roof, pabs_sw_snow_roof, pabs_lw_snow_roof, &
22 pdn_road, pabs_sw_snow_road, pabs_lw_snow_road, &
23 prnsnow_roof, phsnow_roof, plesnow_roof, pgsnow_roof, &
25 prnsnow_road, phsnow_road, plesnow_road, pgsnow_road, &
27 plw_wa_to_nr , plw_wb_to_nr, plw_s_to_nr, plw_win_to_nr, &
28 pdqs_snow_roof, pdqs_snow_road, pt_win1 )
70 xansmin_roof, xansmax_roof, xans_todry_roof, &
71 xans_t_roof, xrhosmin_roof, xrhosmax_roof, &
73 xansmin_road, xansmax_road, xans_todry_road, &
74 xans_t_road, xrhosmin_road, xrhosmax_road, &
80 USE modi_roof_impl_coef
81 USE modi_snow_cover_1layer
85 USE yomhook
,ONLY : lhook, dr_hook
86 USE parkind1
,ONLY : jprb
93 REAL,
DIMENSION(:),
INTENT(IN) :: pt_lowcan
94 REAL,
DIMENSION(:),
INTENT(IN) :: pq_lowcan
95 REAL,
DIMENSION(:),
INTENT(IN) :: pu_lowcan
96 REAL,
DIMENSION(:),
INTENT(IN) :: pts_roof
97 REAL,
DIMENSION(:),
INTENT(IN) :: pts_road
98 REAL,
DIMENSION(:),
INTENT(IN) :: pts_wall_a
99 REAL,
DIMENSION(:),
INTENT(IN) :: pts_wall_b
100 REAL,
DIMENSION(:,:),
INTENT(IN) :: pt_roof
101 REAL,
DIMENSION(:,:),
INTENT(IN) :: pd_roof
102 REAL,
DIMENSION(:,:),
INTENT(IN) :: ptc_roof
103 REAL,
DIMENSION(:,:),
INTENT(IN) :: phc_roof
104 CHARACTER(LEN=*),
INTENT(IN) :: hsnow_roof
108 CHARACTER(LEN=*),
INTENT(IN) :: hsnow_road
112 REAL,
DIMENSION(:,:),
INTENT(INOUT) :: pwsnow_roof
113 REAL,
DIMENSION(:,:),
INTENT(INOUT) :: ptsnow_roof
114 REAL,
DIMENSION(:,:),
INTENT(INOUT) :: prsnow_roof
115 REAL,
DIMENSION(:),
INTENT(INOUT) :: pasnow_roof
116 REAL,
DIMENSION(:),
INTENT(INOUT) :: pesnow_roof
117 REAL,
DIMENSION(:),
INTENT(INOUT) :: ptssnow_roof
118 REAL,
DIMENSION(:,:),
INTENT(INOUT) :: pwsnow_road
119 REAL,
DIMENSION(:,:),
INTENT(INOUT) :: ptsnow_road
120 REAL,
DIMENSION(:,:),
INTENT(INOUT) :: prsnow_road
121 REAL,
DIMENSION(:),
INTENT(INOUT) :: pasnow_road
122 REAL,
DIMENSION(:),
INTENT(INOUT) :: pesnow_road
123 REAL,
DIMENSION(:),
INTENT(INOUT) :: ptssnow_road
125 REAL,
DIMENSION(:),
INTENT(IN) :: pps
126 REAL,
DIMENSION(:),
INTENT(IN) :: pta
127 REAL,
DIMENSION(:),
INTENT(IN) :: pqa
129 REAL,
DIMENSION(:),
INTENT(IN) :: pvmod
130 REAL,
DIMENSION(:),
INTENT(IN) :: prhoa
131 REAL,
DIMENSION(:),
INTENT(IN) :: plw_rad
132 REAL,
DIMENSION(:),
INTENT(IN) :: psr
133 REAL,
DIMENSION(:),
INTENT(IN) :: pzref
135 REAL,
DIMENSION(:),
INTENT(IN) :: puref
138 REAL,
INTENT(IN) :: ptstep
139 REAL,
DIMENSION(:),
INTENT(IN) :: pz_lowcan
141 REAL,
DIMENSION(:),
INTENT(IN) :: pdn_roof
142 REAL,
DIMENSION(:),
INTENT(IN) :: pabs_sw_snow_roof
143 REAL,
DIMENSION(:),
INTENT(OUT) :: pabs_lw_snow_roof
144 REAL,
DIMENSION(:),
INTENT(INOUT) :: pdn_road
145 REAL,
DIMENSION(:),
INTENT(IN) :: pabs_sw_snow_road
146 REAL,
DIMENSION(:),
INTENT(OUT) :: pabs_lw_snow_road
148 REAL,
DIMENSION(:),
INTENT(OUT) :: prnsnow_roof
149 REAL,
DIMENSION(:),
INTENT(OUT) :: phsnow_roof
150 REAL,
DIMENSION(:),
INTENT(OUT) :: plesnow_roof
151 REAL,
DIMENSION(:),
INTENT(OUT) :: pgsnow_roof
152 REAL,
DIMENSION(:),
INTENT(OUT) :: pmelt_roof
153 REAL,
DIMENSION(:),
INTENT(OUT) :: prnsnow_road
154 REAL,
DIMENSION(:),
INTENT(OUT) :: phsnow_road
155 REAL,
DIMENSION(:),
INTENT(OUT) :: plesnow_road
156 REAL,
DIMENSION(:),
INTENT(OUT) :: pgsnow_road
157 REAL,
DIMENSION(:),
INTENT(OUT) :: pmelt_road
159 REAL,
DIMENSION(:),
INTENT(IN) :: plw_wa_to_nr
160 REAL,
DIMENSION(:),
INTENT(IN) :: plw_wb_to_nr
161 REAL,
DIMENSION(:),
INTENT(IN) :: plw_s_to_nr
162 REAL,
DIMENSION(:),
INTENT(IN) :: plw_win_to_nr
163 REAL,
DIMENSION(:),
INTENT(OUT) :: pdqs_snow_roof
164 REAL,
DIMENSION(:),
INTENT(OUT) :: pdqs_snow_road
165 REAL,
DIMENSION(:),
INTENT(IN) :: pt_win1
170 REAL,
DIMENSION(SIZE(PTA)) :: zlw1_road
171 REAL,
DIMENSION(SIZE(PTA)) :: zlw1_roof
173 REAL,
DIMENSION(SIZE(PTA)) :: zlw2_road
174 REAL,
DIMENSION(SIZE(PTA)) :: zlw2_roof
177 REAL,
DIMENSION(SIZE(PTA)) :: zsr_roof
178 REAL,
DIMENSION(SIZE(PTA)) :: zsr_road
180 REAL,
DIMENSION(SIZE(PTA)) :: zt_sky
181 REAL,
DIMENSION(SIZE(PTA)) :: zts_coefa
183 REAL,
DIMENSION(SIZE(PTA)) :: zts_coefb
188 LOGICAL :: gsnow_roof, gsnow_road
193 REAL(KIND=JPRB) :: zhook_handle
197 IF (lhook) CALL dr_hook(
'URBAN_SNOW_EVOL',0,zhook_handle)
208 pabs_lw_snow_roof(:)=0.
209 pabs_lw_snow_road(:)=0.
213 gsnow_roof = any( psr(:)>0. .OR. pwsnow_roof(:,1)>0. )
214 gsnow_road = any( psr(:)>0. .OR. pwsnow_road(:,1)>0. )
224 IF ( gsnow_roof )
THEN
228 zlw1_roof(:) = pesnow_roof(:) * plw_rad(:)
229 zlw2_roof(:) = - pesnow_roof(:) * xstefan
235 DO jl=1,
SIZE(pwsnow_roof,2)
236 WHERE (pdn_roof(:)>0.) pwsnow_roof(:,jl) = pwsnow_roof(:,jl) / pdn_roof(:)
239 WHERE (pdn_roof(:)>0.) zsr_roof(:) = psr(:) / pdn_roof(:)
244 CALL
roof_impl_coef(ptstep,
SIZE(pt_roof,2), pd_roof, ptc_roof, phc_roof, pt_roof, zts_coefa,zts_coefb)
248 IF (hsnow_roof==
'1-L') &
250 xrhosmin_roof, xrhosmax_roof, xans_t_roof, .true., &
253 ptsnow_roof(:,1), pasnow_roof, &
254 prsnow_roof(:,1), pwsnow_roof(:,1), ptssnow_roof, &
256 pts_roof, zts_coefa, zts_coefb, pabs_sw_snow_roof, &
257 zlw1_roof, zlw2_roof, &
258 pta, pqa, pvmod, pps, prhoa, zsr_roof, pzref, puref, &
259 prnsnow_roof, phsnow_roof, plesnow_roof, pgsnow_roof,&
260 pmelt_roof, pdqs_snow_roof, pabs_lw_snow_roof )
266 DO jl=1,
SIZE(pwsnow_roof,2)
267 pwsnow_roof(:,jl) = pwsnow_roof(:,jl) * pdn_roof(:)
275 IF ( gsnow_road )
THEN
277 zt_sky(:) = (plw_rad(:)/xstefan)**0.25
279 zlw1_road(:) = plw_s_to_nr(:) * (zt_sky(:) - ptssnow_road(:)) &
280 + plw_wa_to_nr(:) * (pts_wall_a(:) - ptssnow_road(:)) &
281 + plw_wb_to_nr(:) * (pts_wall_b(:) - ptssnow_road(:)) &
282 + plw_win_to_nr(:) * (pt_win1(:) - ptssnow_road(:))
289 DO jl=1,
SIZE(pwsnow_road,2)
290 WHERE (pdn_road(:)>0.) pwsnow_road(:,jl) = pwsnow_road(:,jl) / pdn_road(:)
293 WHERE (pdn_road(:)>0.) zsr_road(:) = psr(:) / pdn_road(:)
302 IF (hsnow_road==
'1-L') &
304 xrhosmin_road, xrhosmax_road, xans_t_road, .false., &
307 ptsnow_road(:,1), pasnow_road, &
308 prsnow_road(:,1), pwsnow_road(:,1), ptssnow_road, &
310 pts_road, zts_coefa, zts_coefb, &
311 pabs_sw_snow_road, zlw1_road, zlw2_road, &
312 pt_lowcan, pq_lowcan, pu_lowcan, pps, prhoa, &
313 zsr_road, pz_lowcan, pz_lowcan, &
314 prnsnow_road, phsnow_road, plesnow_road, pgsnow_road,&
315 pmelt_road, pdqs_snow_road ,pabs_lw_snow_road )
319 DO jl=1,
SIZE(pwsnow_road,2)
320 pwsnow_road(:,jl) = pwsnow_road(:,jl) * pdn_road(:)
323 WHERE (ptsnow_road(:,1) .EQ. xundef) pdn_road(:) = 0.0
326 IF (lhook) CALL dr_hook(
'URBAN_SNOW_EVOL',1,zhook_handle)
subroutine urban_snow_evol(PT_LOWCAN, PQ_LOWCAN, PU_LOWCAN, PTS_ROOF, PTS_ROAD, PTS_WALL_A, PTS_WALL_B, PT_ROOF, PD_ROOF, PTC_ROOF, PHC_ROOF, HSNOW_ROOF, PWSNOW_ROOF, PTSNOW_ROOF, PRSNOW_ROOF, PASNOW_ROOF, PTSSNOW_ROOF, PESNOW_ROOF, HSNOW_ROAD, PWSNOW_ROAD, PTSNOW_ROAD, PRSNOW_ROAD, PASNOW_ROAD, PTSSNOW_ROAD, PESNOW_ROAD, PPS, PTA, PQA, PRHOA, PLW_RAD, PSR, PZREF, PUREF, PVMOD, PTSTEP, PZ_LOWCAN, PDN_ROOF, PABS_SW_SNOW_ROOF, PABS_LW_SNOW_ROOF, PDN_ROAD, PABS_SW_SNOW_ROAD, PABS_LW_SNOW_ROAD, PRNSNOW_ROOF, PHSNOW_ROOF, PLESNOW_ROOF, PGSNOW_ROOF, PMELT_ROOF, PRNSNOW_ROAD, PHSNOW_ROAD, PLESNOW_ROAD, PGSNOW_ROAD, PMELT_ROAD, PLW_WA_TO_NR, PLW_WB_TO_NR, PLW_S_TO_NR, PLW_WIN_TO_NR, PDQS_SNOW_ROOF, PDQS_SNOW_ROAD, PT_WIN1)
subroutine snow_cover_1layer(PTSTEP, PANSMIN, PANSMAX, PTODRY, PRHOSMIN, PRHOSMAX, PRHOFOLD, OALL_MELT, PDRAIN_TIME, PWCRN, PZ0SN, PZ0HSN, PTSNOW, PASNOW, PRSNOW, PWSNOW, PTS_SNOW, PESNOW, 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(PTSTEP, KROOF_LAYER, PD_ROOF, PTC_ROOF, PHC_ROOF, PT_ROOF, PTDEEP_A, PTDEEP_B)