57 USE modd_topodyn, ONLY : xtopd_step, nncat, xqtot, nnmc, &
58 xtime_topd, xqb_run, xqb_dr, xtime_topd_drain, nnb_topd_step
65 USE yomhook
,ONLY : lhook, dr_hook
66 USE parkind1
,ONLY : jprb
72 REAL,
DIMENSION(:,:),
INTENT(IN) :: pro
74 REAL,
DIMENSION(:,:),
INTENT(IN) :: pdr
75 INTEGER,
INTENT(IN) :: kstep
81 INTEGER :: jcat, jj, ji
83 REAL,
DIMENSION(NNCAT,NNB_TOPD_STEP+NNB_STP_RESTART) :: zrun_torout,zdr_torout
86 CHARACTER(LEN=3) :: ystep
87 REAL(KIND=JPRB) :: zhook_handle
89 IF (lhook) CALL dr_hook(
'ROUTING',0,zhook_handle)
103 IF ( pro(jcat,jj) > 0.0 .AND. pro(jcat,jj) < xundef )
THEN
105 jstep = int(xtime_topd(jcat,jj) / xtopd_step) + kstep
107 IF ( jstep.LE.nnb_topd_step )
THEN
109 xqb_run(jcat,jstep) = xqb_run(jcat,jstep) + pro(jcat,jj)
110 xqtot(jcat,jstep) = xqtot(jcat,jstep) + pro(jcat,jj)
112 ELSEIF (jstep.LE.nnb_topd_step+nnb_stp_restart)
THEN
114 zrun_torout(jcat,jstep) = zrun_torout(jcat,jstep) + pro(jcat,jj)
124 IF ((pdr(jcat,jj) > 0.0).AND.(pdr(jcat,jj)<xundef))
THEN
126 jstep = int(xtime_topd_drain(jcat,jj) / xtopd_step) + kstep
128 IF (jstep.LE.nnb_topd_step)
THEN
130 xqb_dr(jcat,jstep) = xqb_dr(jcat,jstep) + pdr(jcat,jj)
131 xqtot(jcat,jstep) = xqtot(jcat,jstep) + pdr(jcat,jj)
133 ELSEIF (jstep.LE.nnb_topd_step+nnb_stp_restart)
THEN
135 zdr_torout(jcat,jstep) = zdr_torout(jcat,jstep) + pdr(jcat,jj)
142 xqb_run(jcat,kstep) = xqb_run(jcat,kstep) + xrun_torout(jcat,kstep)
143 xqb_dr(jcat,kstep) = xqb_dr(jcat,kstep) + xdr_torout(jcat,kstep)
144 xqtot(jcat,kstep) = xqtot(jcat,kstep) + xrun_torout(jcat,kstep) + xdr_torout(jcat,kstep)
146 xrun_torout(jcat,:) = xrun_torout(jcat,:) + zrun_torout(jcat,:)
147 xdr_torout(jcat,:) = xdr_torout(jcat,:) + zdr_torout(jcat,:)
151 IF (lhook) CALL dr_hook(
'ROUTING',1,zhook_handle)
subroutine routing(PRO, PDR, KSTEP)