7 ptstep,pcpl_drain,pcpl_runoff,pcpl_eflood, &
8 pcpl_pflood,pcpl_iflood,pcpl_iceflux )
53 USE yomhook
,ONLY : lhook, dr_hook
54 USE parkind1
,ONLY : jprb
61 TYPE(isba_t
),
INTENT(INOUT) :: i
63 REAL,
INTENT(IN) :: ptstep
64 REAL,
DIMENSION(:,:),
INTENT(IN) :: pcpl_drain
65 REAL,
DIMENSION(:,:),
INTENT(IN) :: pcpl_runoff
66 REAL,
DIMENSION(:,:),
INTENT(IN) :: pcpl_eflood
67 REAL,
DIMENSION(:,:),
INTENT(IN) :: pcpl_pflood
68 REAL,
DIMENSION(:,:),
INTENT(IN) :: pcpl_iflood
69 REAL,
DIMENSION(:,:),
INTENT(IN) :: pcpl_iceflux
73 REAL,
DIMENSION(SIZE(PCPL_DRAIN,1),SIZE(PCPL_DRAIN,2)) :: zcpl_drain
74 REAL,
DIMENSION(SIZE(PCPL_DRAIN,1),SIZE(PCPL_DRAIN,2)) :: zcpl_recharge
76 REAL,
DIMENSION(SIZE(I%XPATCH,1)) :: zsumpatch
77 REAL,
DIMENSION(SIZE(I%XPATCH,1)) :: zbudget
82 REAL(KIND=JPRB) :: zhook_handle
86 IF (lhook) CALL dr_hook(
'DIAG_CPL_ESM_ISBA',0,zhook_handle)
97 zsumpatch(ji) = zsumpatch(ji) + i%XPATCH(ji,jpatch)
101 zcpl_recharge(:,:) = 0.0
103 IF(i%CISBA/=
'DIF')
THEN
105 zcpl_drain(:,:)=max(0.0,pcpl_drain(:,:))
107 zcpl_drain(:,:)=pcpl_drain(:,:)
113 IF(lcpl_gw.AND.i%LWTD)
THEN
116 IF(i%XGW(ji)>0.0.AND.zsumpatch(ji)>0.0)
THEN
117 zcpl_recharge(ji,jpatch) = pcpl_drain(ji,jpatch)
118 zcpl_drain(ji,jpatch) = 0.0
131 IF(zsumpatch(ji)>0.0)
THEN
132 i%XCPL_DRAIN (ji) = i%XCPL_DRAIN (ji) + ptstep * zcpl_drain(ji,jpatch) * i%XPATCH(ji,jpatch)/zsumpatch(ji)
133 i%XCPL_RUNOFF(ji) = i%XCPL_RUNOFF(ji) + ptstep * pcpl_runoff(ji,jpatch) * i%XPATCH(ji,jpatch)/zsumpatch(ji)
136 IF(i%LGLACIER.AND.zsumpatch(ji)>0.0)
THEN
137 i%XCPL_ICEFLUX(ji) = i%XCPL_ICEFLUX(ji) + ptstep * pcpl_iceflux(ji,jpatch) * i%XPATCH(ji,jpatch)/zsumpatch(ji)
140 IF(lcpl_gw.AND.i%LWTD.AND.zsumpatch(ji)>0.0)
THEN
141 i%XCPL_RECHARGE(ji) = i%XCPL_RECHARGE(ji) + ptstep * zcpl_recharge(ji,jpatch) * i%XPATCH(ji,jpatch)/zsumpatch(ji)
144 IF(lcpl_flood.AND.i%LFLOOD.AND.zsumpatch(ji)>0.0)
THEN
145 i%XCPL_EFLOOD (ji) = i%XCPL_EFLOOD (ji) + ptstep * pcpl_eflood(ji,jpatch)*i%XPATCH(ji,jpatch)/zsumpatch(ji)
146 i%XCPL_PFLOOD (ji) = i%XCPL_PFLOOD (ji) + ptstep * pcpl_pflood(ji,jpatch)*i%XPATCH(ji,jpatch)/zsumpatch(ji)
147 i%XCPL_IFLOOD (ji) = i%XCPL_IFLOOD (ji) + ptstep * pcpl_iflood(ji,jpatch)*i%XPATCH(ji,jpatch)/zsumpatch(ji)
156 IF(lcpl_flood.AND.i%LFLOOD)
THEN
157 zbudget(:)=(i%XPIFLOOD(:)*xtstep_cpl_land)+i%XCPL_PFLOOD(:)-i%XCPL_IFLOOD(:)-i%XCPL_EFLOOD(:)
158 WHERE(zbudget(:)<=0.0)
164 IF (lhook) CALL dr_hook(
'DIAG_CPL_ESM_ISBA',1,zhook_handle)
subroutine diag_cpl_esm_isba(I, PTSTEP, PCPL_DRAIN, PCPL_RUNOFF, PCPL_EFLOOD, PCPL_PFLOOD, PCPL_IFLOOD, PCPL_ICEFLUX)