50 USE yomhook
, ONLY : lhook, dr_hook
51 USE parkind1
, ONLY : jprb
59 TYPE(isba_t
),
INTENT(INOUT) :: i
61 INTEGER,
INTENT(IN) :: ki
62 REAL,
DIMENSION(:,:),
INTENT(OUT) :: pwg
63 REAL,
DIMENSION(:,:),
INTENT(OUT) :: pwgi
64 REAL,
DIMENSION(:,:),
INTENT(OUT) :: pdg
67 INTEGER :: jj, jlayer, jpatch
71 REAL,
DIMENSION(SIZE(I%XPATCH,1)) :: zsumpatch
73 REAL(KIND=JPRB) :: zhook_handle
75 IF (lhook) CALL dr_hook(
'AVG_PATCH_WG',0,zhook_handle)
83 zsumpatch(jj) = zsumpatch(jj) + i%XPATCH(jj,jpatch)
95 IF(zsumpatch(jj) > 0.)
THEN
97 zwork=max(0.0,i%XDG(jj,3,jpatch)-i%XDG(jj,2,jpatch))
98 pwg(jj,1) = pwg(jj,1) + i%XPATCH(jj,jpatch) * i%XWG(jj,1,jpatch) * i%XDG (jj,1,jpatch)
99 pwg(jj,2) = pwg(jj,2) + i%XPATCH(jj,jpatch) * i%XWG(jj,2,jpatch) * i%XDG (jj,2,jpatch)
100 pwg(jj,3) = pwg(jj,3) + i%XPATCH(jj,jpatch) * i%XWG(jj,3,jpatch) * zwork
101 pwgi(jj,1) = pwgi(jj,1) + i%XPATCH(jj,jpatch) * i%XWGI(jj,1,jpatch) * i%XDG (jj,1,jpatch)
102 pwgi(jj,2) = pwgi(jj,2) + i%XPATCH(jj,jpatch) * i%XWGI(jj,2,jpatch) * i%XDG (jj,2,jpatch)
103 pwgi(jj,3) = pwgi(jj,3) + i%XPATCH(jj,jpatch) * i%XWGI(jj,3,jpatch) * zwork
105 pdg(jj,1) = pdg(jj,1) + i%XPATCH(jj,jpatch) * i%XDG(jj,1,jpatch)
106 pdg(jj,2) = pdg(jj,2) + i%XPATCH(jj,jpatch) * i%XDG (jj,2,jpatch)
107 pdg(jj,3) = pdg(jj,3) + i%XPATCH(jj,jpatch) * i%XDG (jj,3,jpatch)
115 pwg(:,1) = pwg(:,1) / pdg(:,1)
116 pwgi(:,1) = pwgi(:,1) / pdg(:,1)
119 pwg(:,2) = pwg(:,2) / pdg(:,2)
120 pwgi(:,2) = pwgi(:,2) / pdg(:,2)
122 WHERE (pdg(:,3)-pdg(:,2)>0.0)
123 pwg(:,3) = pwg(:,3) / (pdg(:,3)-pdg(:,2))
124 pwgi(:,3) = pwgi(:,3) / (pdg(:,3)-pdg(:,2))
127 pwg(:,:) = i%XWG(:,:,1)
128 pwgi(:,:) = i%XWGI(:,:,1)
129 pdg(:,:) = i%XDG (:,:,1)
134 IF (lhook) CALL dr_hook(
'AVG_PATCH_WG',1,zhook_handle)
subroutine avg_patch_wg(I, KI, PWG, PWGI, PDG)