3 PDRAIN,PTAUG,PGOUT,PGSTO_ALL,PGSTO2_ALL,PGIN_ALL,PGOUT_ALL )
53 REAL,
INTENT(IN) :: PTSTEP
57 LOGICAL,
INTENT(IN) :: OPRINT
59 REAL,
DIMENSION(:,:),
INTENT(IN) :: PAREA
60 LOGICAL,
DIMENSION(:,:),
INTENT(IN) :: OMASK_GW
62 REAL,
DIMENSION(:,:),
INTENT(IN) :: PDRAIN, PTAUG
66 REAL,
DIMENSION(:,:),
INTENT(IN ) :: PGROUND_STO
67 REAL,
DIMENSION(:,:),
INTENT(INOUT) :: PGROUND_STO2
71 REAL,
DIMENSION(:,:),
INTENT(OUT) :: PGOUT
74 REAL,
INTENT(OUT) :: PGSTO_ALL,PGSTO2_ALL,PGIN_ALL,PGOUT_ALL
79 REAL,
DIMENSION(SIZE(PGROUND_STO,1),SIZE(PGROUND_STO,2)) :: ZGSTOMAX
80 REAL,
DIMENSION(SIZE(PGROUND_STO,1),SIZE(PGROUND_STO,2)) :: ZGOUT
81 REAL,
DIMENSION(SIZE(PGROUND_STO,1),SIZE(PGROUND_STO,2)) :: ZDRAIN
82 REAL,
DIMENSION(SIZE(PGROUND_STO,1),SIZE(PGROUND_STO,2)) :: ZDRAIN_NEG
84 INTEGER :: ILON, ILAT, JLON, JLAT
86 REAL(KIND=JPRB) :: ZHOOK_HANDLE
91 IF (
lhook)
CALL dr_hook(
'TRIP_GW_BUFFER_TANK',0,zhook_handle)
96 pground_sto2(:,:) = 0.0
102 zdrain(:,:) = max(0.0,pdrain(:,:))
103 zdrain_neg(:,:) = min(0.0,pdrain(:,:))
112 IF(omask_gw(jlon,jlat))
THEN 115 pground_sto2(jlon,jlat) = pground_sto(jlon,jlat)*exp(-ptstep/ptaug
120 zgstomax(jlon,jlat)=pground_sto(jlon,jlat)+zdrain(jlon,jlat)*ptstep
124 zgout(jlon,jlat)=(pground_sto(jlon,jlat)-pground_sto2(jlon,jlat)
127 pgout(jlon,jlat)=max(0.0,zgout(jlon,jlat))
128 pground_sto2(jlon,jlat) = pground_sto2(jlon,jlat) + (pgout(jlon,jlat
131 pground_sto2(jlon,jlat) = pground_sto2(jlon,jlat) + zdrain_neg(jlon
142 WHERE(.NOT.omask_gw(:,:)) pgout(:,:)=zdrain(:,:)
155 WHERE(omask_gw(:,:)) zdrain(:,:)=zdrain(:,:)+zdrain_neg(:,:)
159 IF(omask_gw(jlon,jlat))
THEN 160 pgsto_all = pgsto_all + pground_sto(jlon,jlat) / parea(jlon
170 IF (
lhook)
CALL dr_hook(
'TRIP_GW_BUFFER_TANK',1,zhook_handle)
subroutine trip_gw_buffer_tank(PTSTEP, OPRINT, PAREA, OMASK_GW, PGROUN