7 hisba, hsnow_isba, oglacier, ptstep, &
8 pwg, pwgi, pwr, psnowswe, pdg, pdzg, &
9 pwg_ini, pwgi_ini, pwr_ini, pswe_ini, &
10 prain, psnow, pevap, pdrain, prunoff, &
11 piflood, ppflood, ple_flood, plei_flood,&
12 piceflux, pirrig_flux, psndrift, &
14 pdwg, pdwgi, pdwr, pdswe, pwatbud )
47 USE yomhook
,ONLY : lhook, dr_hook
48 USE parkind1
,ONLY : jprb
57 CHARACTER(LEN=*),
INTENT(IN) :: hisba
61 CHARACTER(LEN=*),
INTENT(IN) :: hsnow_isba
66 LOGICAL,
INTENT(IN) :: oglacier
68 REAL,
INTENT(IN) :: ptstep
70 REAL,
DIMENSION(:,:),
INTENT(IN) :: pwg
71 REAL,
DIMENSION(:,:),
INTENT(IN) :: pwgi
72 REAL,
DIMENSION(:),
INTENT(IN) :: pwr
73 REAL,
DIMENSION(:,:),
INTENT(IN) :: psnowswe
74 REAL,
DIMENSION(:,:),
INTENT(IN) :: pdg
75 REAL,
DIMENSION(:,:),
INTENT(IN) :: pdzg
77 REAL,
DIMENSION(:),
INTENT(IN) :: pwg_ini
78 REAL,
DIMENSION(:),
INTENT(IN) :: pwgi_ini
79 REAL,
DIMENSION(:),
INTENT(IN) :: pwr_ini
80 REAL,
DIMENSION(:),
INTENT(IN) :: pswe_ini
82 REAL,
DIMENSION(:),
INTENT(IN) :: prain
83 REAL,
DIMENSION(:),
INTENT(IN) :: psnow
84 REAL,
DIMENSION(:),
INTENT(IN) :: pevap
85 REAL,
DIMENSION(:),
INTENT(IN) :: pdrain
86 REAL,
DIMENSION(:),
INTENT(IN) :: prunoff
87 REAL,
DIMENSION(:),
INTENT(IN) :: piflood
88 REAL,
DIMENSION(:),
INTENT(IN) :: ppflood
89 REAL,
DIMENSION(:),
INTENT(IN) :: ple_flood
90 REAL,
DIMENSION(:),
INTENT(IN) :: plei_flood
91 REAL,
DIMENSION(:),
INTENT(IN) :: piceflux
92 REAL ,
DIMENSION(:),
INTENT(IN) :: pirrig_flux
93 REAL ,
DIMENSION(:),
INTENT(IN) :: psndrift
94 REAL,
DIMENSION(:),
INTENT(IN) :: plvtt, plstt
96 REAL,
DIMENSION(:),
INTENT(OUT) :: pdwg
97 REAL,
DIMENSION(:),
INTENT(OUT) :: pdwgi
98 REAL,
DIMENSION(:),
INTENT(OUT) :: pdwr
99 REAL,
DIMENSION(:),
INTENT(OUT) :: pdswe
100 REAL,
DIMENSION(:),
INTENT(OUT) :: pwatbud
104 REAL,
DIMENSION(SIZE(PWR)) :: zinput
105 REAL,
DIMENSION(SIZE(PWR)) :: zoutput
106 REAL,
DIMENSION(SIZE(PWR)) :: ztendency
107 REAL,
DIMENSION(SIZE(PWR)) :: ziceflux
108 REAL,
DIMENSION(SIZE(PWR)) :: zswe_t
109 REAL,
DIMENSION(SIZE(PWR)) :: zwg_t
110 REAL,
DIMENSION(SIZE(PWR)) :: zwgi_t
111 REAL,
DIMENSION(SIZE(PWR)) :: zsndrift
112 REAL,
DIMENSION(SIZE(PWR)) :: zeflood
114 INTEGER :: ini, inl, inls
116 REAL(KIND=JPRB) :: zhook_handle
120 IF (lhook) CALL dr_hook(
'ISBA_BUDGET',0,zhook_handle)
127 inls=
SIZE(psnowswe,2)
134 IF (hsnow_isba==
'3-L'.OR.hsnow_isba==
'CRO')
THEN
135 zsndrift(:)=psndrift(:)
143 IF(dgei%LWATER_BUDGET)
THEN
149 zswe_t(ji)=zswe_t(ji)+psnowswe(ji,jl)
159 IF(pwg(ji,jl)/=xundef)
THEN
160 zwg_t(ji)=zwg_t(ji)+pwg(ji,jl)*pdzg(ji,jl)*xrholw
161 zwgi_t(ji)=zwgi_t(ji)+pwgi(ji,jl)*pdzg(ji,jl)*xrholw
166 zwg_t(:)=pwg(:,2)*pdg(:,2)*xrholw
167 zwgi_t(:)=pwgi(:,2)*pdg(:,2)*xrholw
169 zwg_t(:)=zwg_t(:)+pwg(:,3)*(pdg(:,3)-pdg(:,2))*xrholw
174 pdwg(:) = (zwg_t(:)-pwg_ini(:))/ptstep
175 pdwgi(:) = (zwgi_t(:)-pwgi_ini(:))/ptstep
176 pdwr(:) = (pwr(:)-pwr_ini(:))/ptstep
177 pdswe(:) = (zswe_t(:)-pswe_ini(:))/ptstep
181 ziceflux(:)=piceflux(:)
187 zeflood(:)=ple_flood(:)/plvtt(:)+plei_flood(:)/plstt(:)
190 zinput(:)=prain(:)+psnow(:)+piflood(:)+pirrig_flux(:)
193 zoutput(:) = pevap(:)+pdrain(:)+prunoff(:) &
194 + ppflood(:)+ziceflux(:)+zsndrift(:) &
198 ztendency(:) = pdwg(:)+pdwgi(:)+pdwr(:)+pdswe(:)
201 pwatbud(:)=ztendency(:)-(zinput(:)-zoutput(:))
210 IF (lhook) CALL dr_hook(
'ISBA_BUDGET',1,zhook_handle)
subroutine isba_budget(DGEI, HISBA, HSNOW_ISBA, OGLACIER, PTSTEP, PWG, PWGI, PWR, PSNOWSWE, PDG, PDZG, PWG_INI, PWGI_INI, PWR_INI, PSWE_INI, PRAIN, PSNOW, PEVAP, PDRAIN, PRUNOFF, PIFLOOD, PPFLOOD, PLE_FLOOD, PLEI_FLOOD, PICEFLUX, PIRRIG_FLUX, PSNDRIFT, PLVTT, PLSTT, PDWG, PDWGI, PDWR, PDSWE, PWATBUD)