7 OMEB, OMEB_LITTER, PEXNS, PEXNA, PTA, PQA, &
8 PZREF, PUREF, PDIRCOSZW, PVMOD, PRR, PSR, &
9 PEMIS, PALB, PUSTAR, PLES3L, PLEL3L, &
10 PEVAP3L, PQS3L, PALB3L, PGSFCSNOW, &
11 PZGRNDFLUX, PFLSN_COR, PEMIST, PPALPHAN )
76 TYPE(
diag_t),
INTENT(INOUT) :: DK
80 LOGICAL,
INTENT(IN) :: OMEB
82 LOGICAL,
INTENT(IN) :: OMEB_LITTER
88 REAL,
DIMENSION(:),
INTENT(IN) :: PEXNS
89 REAL,
DIMENSION(:),
INTENT(IN) :: PEXNA
90 REAL,
DIMENSION(:),
INTENT(IN) :: PTA
91 REAL,
DIMENSION(:),
INTENT(IN) :: PQA
92 REAL,
DIMENSION(:),
INTENT(IN) :: PZREF
93 REAL,
DIMENSION(:),
INTENT(IN) :: PUREF
94 REAL,
DIMENSION(:),
INTENT(IN) :: PDIRCOSZW
95 REAL,
DIMENSION(:),
INTENT(IN) :: PVMOD
96 REAL,
DIMENSION(:),
INTENT(IN) :: PRR
97 REAL,
DIMENSION(:),
INTENT(IN) :: PSR
102 REAL,
DIMENSION(:),
INTENT(IN) :: PALB
103 REAL,
DIMENSION(:),
INTENT(IN) :: PEMIS
112 REAL,
DIMENSION(:),
INTENT(IN) :: PPALPHAN
120 REAL,
DIMENSION(:),
INTENT(IN) :: PALB3L
121 REAL,
DIMENSION(:),
INTENT(IN) :: PQS3L
125 REAL,
DIMENSION(:),
INTENT(IN) :: PZGRNDFLUX
126 REAL,
DIMENSION(:),
INTENT(IN) :: PFLSN_COR
128 REAL,
DIMENSION(:),
INTENT(INOUT) :: PGSFCSNOW
129 REAL,
DIMENSION(:),
INTENT(IN) :: PLES3L
130 REAL,
DIMENSION(:),
INTENT(IN) :: PLEL3L
131 REAL,
DIMENSION(:),
INTENT(INOUT) :: PEVAP3L
136 REAL,
DIMENSION(:),
INTENT(INOUT) :: PEMIST
141 REAL,
DIMENSION(:),
INTENT(INOUT) :: PUSTAR
145 REAL,
DIMENSION(SIZE(PTA)) :: ZWORK
147 REAL(KIND=JPRB) :: ZHOOK_HANDLE
161 dek%XRN_SN_FR (:) = dek%XSWNET_V(:) + dek%XSWNET_G(:) + dek%XLWNET_V
163 IF (omeb_litter)
THEN 164 dek%XLEG_SN_FR (:) = dek%XLELITTER (:)
165 dek%XLEGI_SN_FR(:) = dek%XLELITTERI(:)
166 dek%XLEG (:) = dek%XLELITTER (:)
167 dek%XLEGI(:) = dek%XLELITTERI(:)
169 dek%XLEG_SN_FR (:) = dek%XLEG (:)
170 dek%XLEGI_SN_FR(:) = dek%XLEGI(:)
173 dek%XLEV_SN_FR (:) = dek%XLEV_CV (:)
174 dek%XLETR_SN_FR(:) = dek%XLETR_CV(:)
176 dek%XUSTAR_SN_FR(:) = pustar(:)
178 dek%XLER_SN_FR (:) = dek%XLEV_CV(:) - dek%XLETR_CV(:)
180 dek%XLEI_SN_FR (:) = dek%XLEGI(:) + dek%XLEI_FLOOD(:) + dek%XLES(:) +
182 dek%XLE_SN_FR (:) = dek%XLEG_SN_FR(:) + dek%XLEGI_SN_FR(:) + dek%XLEV_SN_FR
190 zwork(:) = ppalphan(:)*pek%XPSN(:)
191 dk%XTS(:) = (1.0 - zwork(:))*pek%XTC(:) + zwork(:)*dmk%XSNOWTEMP(:,1)
195 dk%XGFLUX(:) = dk%XRN(:) - dk%XH(:) - pek%XLE(:) + dmk%XHPSNOW(:)
202 IF(pek%TSNOW%SCHEME ==
'3-L' .OR. pek%TSNOW%SCHEME ==
'CRO')
THEN 207 dek%XLEG_SN_FR (:) = dek%XLEG (:)
208 dek%XLEGI_SN_FR (:) = dek%XLEGI(:)
209 dek%XLEV_SN_FR (:) = dek%XLEV (:)
210 dek%XLETR_SN_FR (:) = dek%XLETR(:)
211 dek%XLER_SN_FR (:) = dek%XLER (:)
212 dek%XRN_SN_FR (:) = dk%XRN (:)
213 dek%XH_SN_FR (:) = dk%XH (:)
214 dek%XUSTAR_SN_FR(:) = pustar(:)
216 dek%XLE_SN_FR (:) = pek%XLE(:)
217 dek%XGFLUX_SN_FR(:) = dk%XGFLUX(:)
219 dek%XLEI_SN_FR (:)= dek%XLEGI(:) + dek%XLEI_FLOOD(:) + dek%XLES(:
223 dk%XTS(:) = (1.-pek%XPSN(:))*pek%XTG(:,1)+pek%XPSN(:)*dmk%XSNOWTEMP
227 dk%XALBT (:) = palb(:)*(1.-pek%XPSN(:)) + pek%XPSN(:)*palb3l(:)
228 pemist(:) = pemis(:)*(1.-pek%XPSN(:)) + pek%XPSN(:)*pek%TSNOW%EMIS
230 dk%XTSRAD(:) = ( ((1.-pek%XPSN(:))*pemis(:)*pek%XTG(:,1)**4 + &
231 pek%XPSN(:) *pek%TSNOW%EMIS(:)*dmk%XSNOWTEMP
240 dk%XRN (:) = (1.-pek%XPSN(:)) * dk%XRN(:) + pek%XPSN(:) * dmk%XRNSNOW
243 dek%XLEG (:) = (1.-pek%XPSNG(:)-kk%XFFG(:)) * dek%XLEG(:)
244 dek%XLEGI(:) = (1.-pek%XPSNG(:)-kk%XFFG(:)) * dek%XLEGI(:)
245 dek%XLEV (:) = (1.-pek%XPSNV(:)-kk%XFFV(:)) * dek%XLEV(:)
246 dek%XLETR(:) = (1.-pek%XPSNV(:)-kk%XFFV(:)) * dek%XLETR(:)
247 dek%XLER (:) = (1.-pek%XPSNV(:)-kk%XFFV(:)) * dek%XLER(:)
251 dk%XEVAP(:) = (dek%XLEV(:) + dek%XLEG(:))/pk%XLVTT(:) + dek%XLEGI(
257 dek%XLES (:) = pek%XPSN(:) * ples3l(:)
258 dek%XLESL (:) = pek%XPSN(:) * plel3l(:)
259 dmk%XRNSNOW (:) = pek%XPSN(:) * dmk%XRNSNOW (:)
260 dmk%XHSNOW (:) = pek%XPSN(:) * dmk%XHSNOW (:)
261 dmk%XGFLUXSNOW(:) = pek%XPSN(:) * dmk%XGFLUXSNOW(:)
262 dmk%XSNOWHMASS(:) = pek%XPSN(:) * dmk%XSNOWHMASS(:)
263 dmk%XHPSNOW (:) = pek%XPSN(:) * dmk%XHPSNOW (:)
264 pgsfcsnow(:) = pek%XPSN(:) * pgsfcsnow(:)
265 pevap3l(:) = pek%XPSN(:) * pevap3l(:)
269 dmk%XGRNDFLUX(:) = pek%XPSN(:) * (pzgrndflux(:)+pflsn_cor(:))
270 dek%XMELTADV(:) = pek%XPSN(:) * dek%XMELTADV(:)
274 pek%XLE(:) = dek%XLEG(:) + dek%XLEV(:) + dek%XLES(:) + dek%XLESL(:
279 dk%XLEI (:) = dek%XLES(:) + dek%XLEGI(:) + dek%XLEI_FLOOD(:)
283 dk%XSUBL (:) = dk%XLEI(:)/pk%XLSTT(:)
287 dk%XGFLUX(:) = dk%XRN(:) - dk%XH(:) - pek%XLE(:) + dmk%XHPSNOW(:)
291 dk%XQS (:) = (1.-pek%XPSN(:)) * dk%XQS(:) + pek%XPSN(:) * pqs3l(
295 dk%XHU (:) = (1.-pek%XPSN(:)) * dk%XHU(:) + pek%XPSN(:)
299 pustar(:) = sqrt( (1.-pek%XPSN(:)) * pustar(:)**2 + &
300 pek%XPSN(:) * dmk%XUSTARSNOW(:)**2 )
308 dk%XTS (:) = pek%XTG(:,1)
309 dk%XTSRAD (:) = pek%XTG(:,1)
310 dk%XALBT (:) = palb(:)
314 dk%XLEI (:) = dek%XLES(:) + dek%XLEGI(:) + dek%XLEI_FLOOD(:)
317 dk%XSUBL (:) = dk%XLEI(:)/pk%XLSTT(:)
335 USE modi_surface_aero_cond
337 USE modi_surface_cdch_1darp
338 USE modi_wind_threshold
342 REAL,
DIMENSION(SIZE(PTA)) :: ZFP, ZRRCOR, ZVMOD, ZAC, ZRA
344 REAL(KIND=JPRB) :: ZHOOK_HANDLE
348 IF (
lhook)
CALL dr_hook(
'ISBA_SNOW_AGR:COMPUT_RI_DRAG',0,zhook_handle)
352 CALL surface_ri(dk%XTS, dk%XQS, pexns, pexna, pta, pqa, &
353 pzref, puref, pdircoszw, pvmod, dk%XRI)
366 CALL surface_cd(dk%XRI, pzref, puref, dk%XZ0EFF, dk%XZ0H, dk%XCD, dk%XCDN
370 zfp(:)=max(0.0,prr(:)+psr(:))
378 IF (
lhook)
CALL dr_hook(
'ISBA_SNOW_AGR:COMPUT_RI_DRAG',1,zhook_handle)
real function, dimension(size(pwind)) wind_threshold(PWIND, PUREF)
subroutine surface_ri(PTG, PQS, PEXNS, PEXNA, PTA, PQA, PZREF, PUREF, PDIRCOSZW, PVMOD, PRI)
subroutine comput_ri_drag
subroutine surface_aero_cond(PRI, PZREF, PUREF, PVMOD, PZ0, PZ0H, PAC, PRA, PCH)
subroutine surface_cd(PRI, PZREF, PUREF, PZ0EFF, PZ0H, PCD, PCDN)
subroutine surface_cdch_1darp(PZREF, PZ0EFF, PZ0H, PVMOD, PTA, PTG, PQA, PQS, PCD, PCDN, PCH)
subroutine isba_snow_agr(KK, PK, PEK, DMK, DK, DEK, OMEB, OMEB_LITTER, PEXNS, PEXNA, PTA, PQA