6 SUBROUTINE isba_ceb(IO, KK, PK, PEK, DK, DEK, DMK, &
7 HIMPLICIT_WIND, PTSTEP, PPEW_A_COEF, &
8 PPEW_B_COEF, PPET_A_COEF, PPEQ_A_COEF, PPET_B_COEF,&
9 PPEQ_B_COEF, PSW_RAD, PLW_RAD, PEXNS, PEXNA, PTA, &
10 PVMOD, PQA, PRR, PSR, PPS, PZREF, PUREF, PDIRCOSZW,&
11 PF5, PFFG_NOSNOW, PFFV_NOSNOW, PRHOA, PCS, &
12 PSOILCONDZ, PSOILHCAPZ, PFROZEN1, PTDEEP_A, &
13 PGRNDFLUX, PFLSN_COR, PSNOW_THRUFAL, PDELTA, PHUGI,&
14 PALBT, PEMIST, PDEEP_FLUX, PUSTAR, PAC_AGG, PHU_AGG )
82 TYPE(
diag_t),
INTENT(INOUT) :: DK
86 CHARACTER(LEN=*),
INTENT(IN) :: HIMPLICIT_WIND
89 REAL,
INTENT(IN) :: PTSTEP
90 REAL,
DIMENSION(:),
INTENT(IN) :: PPEW_A_COEF, PPEW_B_COEF, &
91 PPET_A_COEF, PPEQ_A_COEF, PPET_B_COEF, &
100 REAL,
DIMENSION(:),
INTENT(IN) :: PSW_RAD, PLW_RAD
104 REAL,
DIMENSION(:),
INTENT(IN) :: PEXNA, PEXNS, PTA, PVMOD, PQA, PRR, PSR, PPS
115 REAL,
DIMENSION(:),
INTENT(IN) :: PZREF, PUREF
123 REAL,
DIMENSION(:),
INTENT(IN) :: PF5
125 REAL,
DIMENSION(:),
INTENT(IN) :: PDIRCOSZW
128 REAL,
DIMENSION(:),
INTENT(IN) :: PFFG_NOSNOW, PFFV_NOSNOW
130 REAL,
DIMENSION(:),
INTENT(IN) :: PRHOA
133 REAL,
DIMENSION(:),
INTENT(IN) :: PCS
136 REAL,
DIMENSION(:),
INTENT(IN) :: PGRNDFLUX, PFLSN_COR, PSNOW_THRUFAL
143 REAL,
DIMENSION(:,:),
INTENT(IN) :: PSOILCONDZ, PSOILHCAPZ
147 REAL,
DIMENSION(:),
INTENT(IN) :: PFROZEN1
150 REAL,
DIMENSION(:),
INTENT(IN) :: PTDEEP_A
155 REAL,
DIMENSION(:),
INTENT(INOUT) :: PDELTA
160 REAL,
DIMENSION(:),
INTENT(OUT) :: PHUGI
163 REAL,
DIMENSION(:),
INTENT(OUT) :: PALBT, PEMIST
167 REAL,
DIMENSION(:),
INTENT(OUT) :: PDEEP_FLUX
169 REAL,
DIMENSION(:),
INTENT(OUT) :: PUSTAR
172 REAL,
DIMENSION(:),
INTENT(OUT) :: PAC_AGG
174 REAL,
DIMENSION(:),
INTENT(OUT) :: PHU_AGG
180 REAL,
PARAMETER :: ZDEKTH_COR = 0.6
183 REAL,
PARAMETER :: ZDTG1_COR = 10.0
189 REAL,
DIMENSION(SIZE(PTA)) :: ZQSAT
191 REAL,
DIMENSION(SIZE(PTA)) :: ZDQSAT
193 REAL,
DIMENSION(SIZE(PTA)) :: ZTA_IC, ZQA_IC, ZUSTAR2_IC
196 REAL,
DIMENSION(SIZE(PTA)) :: ZLEG_DELTA
197 REAL,
DIMENSION(SIZE(PTA)) :: ZLEGI_DELTA
199 REAL,
DIMENSION(SIZE(PTA)) :: ZT2M
200 REAL,
DIMENSION(SIZE(PTA)) :: ZTSM
202 REAL,
DIMENSION(SIZE(PEK%XTG,1),SIZE(PEK%XTG,2)) :: ZFLUX_COR, ZLAYERHCAP
205 REAL,
DIMENSION(SIZE(PTA)) :: ZGRNDFLUX, ZTOTALHCAP, ZWORK
207 INTEGER :: INJ, INL, JI, JL
208 LOGICAL :: LEXPLICIT_SNOW
214 REAL,
DIMENSION(SIZE(PTA)) :: ZDEEP_FLUX, ZLE_FLOOD, ZLEI_FLOOD, &
215 ZRN, ZH, ZLE, ZLEG, ZLEV, &
216 ZLES, ZLER, ZLETR, ZEVAP, &
217 ZGFLUX, ZMELTADV, ZMELT, &
218 ZRESTORE, ZLEGI, ZUSTAR2, &
221 REAL,
DIMENSION(SIZE(PTA)) :: ZDEEP_FLUX_SUM, ZLE_FLOOD_SUM, ZLEI_FLOOD_SUM, &
222 ZRN_SUM, ZH_SUM, ZLE_SUM, ZLEG_SUM, ZLEV_SUM, &
223 ZLES_SUM, ZLER_SUM, ZLETR_SUM, ZEVAP_SUM, &
224 ZGFLUX_SUM, ZMELTADV_SUM, ZMELT_SUM, &
225 ZRESTORE_SUM, ZLEGI_SUM, ZUSTAR2_SUM, &
226 ZAC_AGG_SUM, ZHU_AGG_SUM
228 REAL,
PARAMETER :: ZTSPLIT = 300.
229 INTEGER :: ITSPLIT, JSPLIT
230 REAL :: ZTSTEP, ZNSPLIT
232 REAL(KIND=JPRB) :: ZHOOK_HANDLE
290 zle_flood_sum(:) = 0.0
291 zlei_flood_sum(:) = 0.0
293 zdeep_flux_sum(:) = 0.0
294 zmeltadv_sum(:) = 0.0
296 zrestore_sum(:) = 0.0
302 zgrndflux(: ) = pgrndflux(:)
311 lexplicit_snow=(pek%TSNOW%SCHEME ==
'3-L' .OR. pek%TSNOW%SCHEME ==
'CRO')
313 IF(lexplicit_snow.AND.io%CISBA/=
'DIF')
THEN 315 zflux_cor(:,1)=pek%XPSN(:)*pflsn_cor(:)
317 ELSEIF(lexplicit_snow.AND.io%CISBA==
'DIF')
THEN 319 zlayerhcap(:,:) = 0.0
326 zwork(:) = min(pk%XDG(:,inl),zdekth_cor)
328 zlayerhcap(:,1)= 1.0/dmk%XCT(:)
329 ztotalhcap(: )= 1.0/dmk%XCT(:)
332 zlayerhcap(ji,jl) = psoilhcapz(ji,jl) * min( pk%XDZG(ji,jl), &
333 max(0.0,zwork(ji)-pk%XDG(ji,jl) +pk%XDZG(ji,jl)) )
334 ztotalhcap(ji ) = ztotalhcap(ji) + zlayerhcap(ji,jl)
340 IF(ztotalhcap(ji)>0.0)
THEN 341 zflux_cor(ji,jl) = pek%XPSN(ji)*pflsn_cor(ji)*zlayerhcap(ji,jl)/ztotalhcap(ji)
350 zwork(:)=ptstep*dmk%XCT(:)*pek%XPSN(:)*abs(pgrndflux(:))
352 WHERE(ztotalhcap(:)>0.0.AND.zwork(:)>=zdtg1_cor)
353 zgrndflux(:) = pgrndflux(:)*zlayerhcap(:,1)/ztotalhcap(:)
358 IF(ztotalhcap(ji)>0.0.AND.zwork(ji)>=zdtg1_cor)
THEN 359 zflux_cor(ji,jl)=zflux_cor(ji,jl)+pek%XPSN(ji)*pgrndflux(ji) &
360 *zlayerhcap(ji,jl)/ztotalhcap(ji)
372 itsplit = max(1,nint(ptstep/ztsplit))
375 znsplit =
REAL(itsplit)
377 ztstep = ptstep/znsplit
386 ztsm(:) = pek%XTG(:,1)
387 zt2m(:) = pek%XTG(:,2)
397 CALL drag(io%CISBA, pek%TSNOW%SCHEME, io%CCPSURF, ptstep, pek%XTG(:,1), pek%XWG(:,1), &
398 pek%XWGI(:,1), pexns, pexna, pta, pvmod, pqa, prr, psr, pps, dmk%XRS, &
399 pek%XVEG, dk%XZ0, dk%XZ0EFF, dk%XZ0H, kk%XWFC(:,1), kk%XWSAT(:,1), &
400 pek%XPSNG, pek%XPSNV, pzref, puref, pdircoszw, pdelta, pf5, pek%XRESA,&
401 dk%XCH, dk%XCD, dk%XCDN, dk%XRI, dk%XHUG, phugi, dmk%XHV, dk%XHU, &
402 pk%XCPS, dk%XQS, kk%XFFG, kk%XFFV, kk%XFF, pffg_nosnow, pffv_nosnow, &
403 zleg_delta, zlegi_delta, pek%XWR, prhoa, pk%XLVTT, pqsat=zqsat )
408 CALL e_budget(io, kk, pk, pek, dk, dmk, himplicit_wind, &
409 ztstep, puref, ppew_a_coef, ppew_b_coef, ppet_a_coef, &
410 ppeq_a_coef, ppet_b_coef, ppeq_b_coef, pvmod, ztsm, zt2m, &
411 psw_rad, plw_rad, pta, pqa, pps, prhoa, pexns, pexna, &
412 phugi, zleg_delta, zlegi_delta, zgrndflux, zflux_cor, &
413 psoilcondz, psoilhcapz, palbt, pemist, zqsat, zdqsat, &
414 pfrozen1, ptdeep_a, zta_ic, zqa_ic, zustar2_ic, zdeep_flux, &
428 psw_rad, plw_rad, zta_ic, zqa_ic, prhoa, pexns, pexna, &
429 dk%XHUG, phugi, zleg_delta, zlegi_delta, pdelta, pf5, &
430 pcs, ztsm, zt2m, pfrozen1, palbt, pemist, zqsat, zdqsat, &
431 psnow_thrufal, zrn, zh, zle, zleg, zlegi, zlev, zles, &
432 zler, zletr, zevap, zgflux, zmeltadv, zmelt, psoilcondz, &
433 zle_flood, zlei_flood )
442 zac_agg(:) = 1. / pek%XRESA(:) / pk%XLVTT(:) &
443 * ( pk%XLVTT(:) * pek%XVEG(:) * (1.-pek%XPSNV(:)) * dmk%XHV(:) &
444 + pk%XLVTT(:) *(1.-pek%XVEG(:))* (1.-pek%XPSNG(:)) * (1.-pfrozen1(:)) &
445 + pk%XLSTT(:) *(1.-pek%XVEG(:))* (1.-pek%XPSNG(:)) * pfrozen1(:) &
446 + pk%XLSTT(:) * pek%XPSN (:) )
448 WHERE(zac_agg(:)>0.0)
449 zhu_agg(:) = 1. / (pek%XRESA(:) * zac_agg(:)) / pk%XLVTT(:) &
450 * ( pk%XLVTT(:)* pek%XVEG(:) *(1.-pek%XPSNV(:)) *dmk%XHV(:) &
451 + pk%XLVTT(:)*(1.-pek%XVEG(:))*(1.-pek%XPSNG(:))*(1.-pfrozen1(:))*dk%XHUG(:) &
452 + pk%XLSTT(:)*(1.-pek%XVEG(:))*(1.-pek%XPSNG(:))* pfrozen1(:) *phugi(:) &
453 + pk%XLSTT(:)* pek%XPSN (:) )
456 zustar2_sum(:) = zustar2_sum(:) + zustar2_ic(:)
458 zevap_sum(:) = zevap_sum(:) + zevap(:)
460 zrn_sum(:) = zrn_sum(:) + zrn(:)
461 zh_sum(:) = zh_sum(:) + zh(:)
462 zgflux_sum(:) = zgflux_sum(:) + zgflux(:)
463 zle_sum(:) = zle_sum(:) + zle(:)
465 zleg_sum(:) = zleg_sum(:) + zleg(:)
466 zlegi_sum(:) = zlegi_sum(:) + zlegi(:)
467 zlev_sum(:) = zlev_sum(:) + zlev(:)
468 zles_sum(:) = zles_sum(:) + zles(:)
469 zler_sum(:) = zler_sum(:) + zler(:)
470 zletr_sum(:) = zletr_sum(:) + zletr(:)
471 zle_flood_sum(:) = zle_flood_sum(:) + zle_flood(:)
472 zlei_flood_sum(:) = zlei_flood_sum(:) + zlei_flood(:)
474 zdeep_flux_sum(:) = zdeep_flux_sum(:) + zdeep_flux(:)
475 zmeltadv_sum(:) = zmeltadv_sum(:) + zmeltadv(:)
476 zmelt_sum(:) = zmelt_sum(:) + zmelt(:)
477 zrestore_sum(:) = zrestore_sum(:) + zrestore(:)
478 zac_agg_sum(:) = zac_agg_sum(:) + zac_agg(:)
479 zhu_agg_sum(:) = zhu_agg_sum(:) + zhu_agg(:)
485 pustar(:) = sqrt(zustar2_sum(:)/znsplit)
487 dk%XEVAP (:) = zevap_sum(:) / znsplit
489 dk%XRN (:) = zrn_sum(:) / znsplit
490 dk%XH (:) = zh_sum(:) / znsplit
491 dk%XGFLUX (:) = zgflux_sum(:) / znsplit
492 pek%XLE (:) = zle_sum(:) / znsplit
494 dek%XLEG (:) = zleg_sum(:) / znsplit
495 dek%XLEGI (:) = zlegi_sum(:) / znsplit
496 dek%XLEV (:) = zlev_sum(:) / znsplit
497 dek%XLES (:) = zles_sum(:) / znsplit
498 dek%XLER (:) = zler_sum(:) / znsplit
499 dek%XLETR (:) = zletr_sum(:) / znsplit
500 dek%XLE_FLOOD (:) = zle_flood_sum(:) / znsplit
501 dek%XLEI_FLOOD(:) = zlei_flood_sum(:) / znsplit
503 pdeep_flux(:) = zdeep_flux_sum(:) / znsplit
504 dek%XMELTADV (:) = zmeltadv_sum(:) / znsplit
505 dek%XMELT (:) = zmelt_sum(:) / znsplit
506 dek%XRESTORE (:) = zrestore_sum(:) / znsplit
507 pac_agg(:) = zac_agg_sum(:) / znsplit
508 phu_agg(:) = zhu_agg_sum(:) / znsplit
subroutine e_budget(IO, KK, PK, PEK, DK, DMK, HIMPLICIT_WIND, PTSTEP, PUREF, PPEW_A_COEF, PPEW_B_COEF, PPET_
subroutine isba_ceb(IO, KK, PK, PEK, DK, DEK, DMK, HIMPLICIT_WIND, PTSTEP, PPEW_A_COEF, PPEW_B_COEF, PPET_A_COEF, PPEQ_A_COEF, PPET_B_COEF, PPEQ_B_COEF, PSW_RAD, PLW_RAD, PEXNS, PEXNA, PTA, PVMOD, PQA, PRR, PSR, PPS, PZREF, PUREF, PDIRCOSZW, PF5, PFFG_NOSNOW, PFFV_NOSNOW, PRHOA, PCS, PSOILCONDZ, PSOILHCAPZ, PFROZEN1, PTDEEP_A, PGRNDFLUX, PFLSN_COR, PSNOW_THRUFAL, PDELTA, PHUGI, PALBT, PEMIST, PDEEP_FLUX, PUSTAR, PAC_AGG, PHU_AGG)
subroutine isba_fluxes(IO, KK, PK, PEK, DMK, PTSTEP, PSW_RAD, PLW_RAD, PTA, PQA, PRHOA, PEXNS, P
subroutine drag(HISBA, HSNOW_ISBA, HCPSURF, PTSTEP, PTG, PWG, PWGI, PEXNS, PEXNA, PTA, PVMOD, PQA, PRR, PSR, PPS, PRS, PVEG, PZ0, PZ0EFF, PZ0H, PWFC, PWSAT, PPSNG, PPSNV, PZREF, PUREF, PDIRCOSZW, PDELTA, PF5, PRA, PCH, PCD, PCDN, PRI, PHUG, PHUGI, PHV, PHU, PCPS, PQS, PFFG, PFFV, PFF, PFFG_NOSNOW, PFFV_NOSNOW, PLEG_DELTA, PLEGI_DELTA, PWR, PRHOA, PLVTT, PQSAT)