3 OPRINT,OMASK_VEL,PLEN,PRUNOFF, &
4 PVEL,PHS,PSURF_STO,PSURF_STO2,PGOUT,PSIN,PSOUT, &
6 PSSTO_ALL,PSSTO2_ALL,PSIN_ALL,PDRUN_ALL, &
7 PSOUT_ALL,PVEL_ALL,PHS_ALL )
61 INTEGER,
INTENT(IN) :: KLISTING
63 REAL,
INTENT(IN) :: PTSTEP
65 INTEGER,
DIMENSION(:,:),
INTENT(IN) :: KGRCN
66 INTEGER,
DIMENSION(:,:),
INTENT(IN) :: KSEQ
67 INTEGER,
DIMENSION(:,:),
INTENT(IN) :: KNEXTX
68 INTEGER,
DIMENSION(:,:),
INTENT(IN) :: KNEXTY
73 INTEGER,
INTENT(IN) :: KSEQMAX
74 LOGICAL,
INTENT(IN) :: OPRINT
76 LOGICAL,
DIMENSION(:,:),
INTENT(IN) :: OMASK_VEL
77 REAL,
DIMENSION(:,:),
INTENT(IN) :: PLEN
78 REAL,
DIMENSION(:,:),
INTENT(IN) :: PAREA
79 REAL,
DIMENSION(:,:),
INTENT(IN) :: PRUNOFF
80 REAL,
DIMENSION(:,:),
INTENT(IN) :: PGOUT
81 REAL,
DIMENSION(:,:),
INTENT(IN) :: PQFR
82 REAL,
DIMENSION(:,:),
INTENT(IN) :: PQRF
83 REAL,
DIMENSION(:,:),
INTENT(IN) :: PHS
84 REAL,
DIMENSION(:,:),
INTENT(IN) :: PVEL
85 REAL,
DIMENSION(:,:),
INTENT(IN) :: PSURF_STO
87 REAL,
DIMENSION(:,:),
INTENT(INOUT) :: PSURF_STO2
89 REAL,
DIMENSION(:,:),
INTENT(OUT) :: PSIN
90 REAL,
DIMENSION(:,:),
INTENT(OUT) :: PSOUT
92 REAL,
INTENT(OUT) :: PSSTO_ALL,PSSTO2_ALL,PSIN_ALL, &
93 PDRUN_ALL,PSOUT_ALL,PVEL_ALL, &
99 REAL,
DIMENSION(SIZE(PLEN,1),SIZE(PLEN,2)) :: ZQIN
100 REAL,
DIMENSION(SIZE(PLEN,1),SIZE(PLEN,2)) :: ZRADIUS
101 REAL,
DIMENSION(SIZE(PLEN,1),SIZE(PLEN,2)) :: ZQOUT
102 REAL,
DIMENSION(SIZE(PLEN,1),SIZE(PLEN,2)) :: ZSTOMAX
106 INTEGER :: ILON, ILAT, JLON, JLAT, ISEQ, INEXTX, INEXTY
108 REAL(KIND=JPRB) :: ZHOOK_HANDLE
114 IF (
lhook)
CALL dr_hook(
'TRIP_SURFACE_WATER',0,zhook_handle)
119 psurf_sto2(:,:) = 0.0
168 IF(kseq(jlon,jlat)>0)
THEN 169 pdrun_all = pdrun_all + prunoff(jlon,jlat)+pgout(jlon,jlat)+pqfr(jlon,jlat)-pqrf(jlon,jlat)
170 pssto_all = pssto_all + psurf_sto(jlon,jlat) / parea(jlon,jlat)
171 pssto2_all = pssto2_all + psurf_sto2(jlon,jlat) / parea(jlon,jlat)
172 psin_all = psin_all + zqin(jlon,jlat) / parea(jlon,jlat)
173 psout_all = psout_all + psout(jlon,jlat) / parea(jlon,jlat)
175 IF(omask_vel(jlon,jlat))
THEN 176 pvel_all = pvel_all + pvel(jlon,jlat) * parea(jlon,jlat)
177 phs_all = phs_all + phs(jlon,jlat) * parea(jlon,jlat)
178 zarea = zarea + parea(jlon,jlat)
184 pvel_all = pvel_all / zarea
185 phs_all = phs_all / zarea
190 IF (
lhook)
CALL dr_hook(
'TRIP_SURFACE_WATER',1,zhook_handle)
198 INTEGER,
INTENT(IN) :: KNUM
200 REAL(KIND=JPRB) :: ZHOOK_HANDLE
202 IF (
lhook)
CALL dr_hook(
'TRIP_SURFACE_WATER:SEQUENCE_LOOP',0,zhook_handle)
207 IF(kseq(jlon,jlat)==knum)
THEN 212 zqin(jlon,jlat)=zqin(jlon,jlat)+prunoff(jlon,jlat)+pgout(jlon,jlat)+pqfr(jlon,jlat)-pqrf(jlon,jlat)
213 psin(jlon,jlat)=zqin(jlon,jlat)
218 zstomax(jlon,jlat) = psurf_sto(jlon,jlat)+zqin(jlon,jlat)*ptstep
220 psurf_sto2(jlon,jlat) = zstomax(jlon,jlat)/(1.0+ptstep*pvel(jlon,jlat)/plen(jlon,jlat))
225 psurf_sto2(jlon,jlat)=min(zstomax(jlon,jlat),psurf_sto2(jlon,jlat))
230 zqout(jlon,jlat) = (psurf_sto(jlon,jlat)-psurf_sto2(jlon,jlat))/ptstep+zqin(jlon,jlat)
231 psout(jlon,jlat) = max(zqout(jlon,jlat),0.0)
233 psurf_sto2(jlon,jlat) = psurf_sto2(jlon,jlat) + (psout(jlon,jlat)-zqout(jlon,jlat))*ptstep
236 IF(kgrcn(jlon,jlat)>=1.AND.kgrcn(jlon,jlat)<=8)
THEN 237 inextx=knextx(jlon,jlat)
238 inexty=knexty(jlon,jlat)
239 zqin(inextx,inexty)=zqin(inextx,inexty)+psout(jlon,jlat)
247 IF (
lhook)
CALL dr_hook(
'TRIP_SURFACE_WATER:SEQUENCE_LOOP',1,zhook_handle)
subroutine trip_surface_water(KLISTING, PTSTEP, KGRCN, KSEQ, KNEXTX, KNEXTY, KSEQMAX, OPRINT, OMASK_VEL, PLEN, PRUNOFF, PVEL, PHS, PSURF_STO, PSURF_STO2, PGOUT, PSIN, PSOUT, PAREA, PQFR, PQRF, PSSTO_ALL, PSSTO2_ALL, PSIN_ALL, PDRUN_ALL, PSOUT_ALL, PVEL_ALL, PHS_ALL)
subroutine sequence_loop(KNUM)