82 & nfm3, nfm2, nfm1, nf, nfp1, &
83 & Predictor, my_thread, bounded, &
84 & Tinfo, rwalk, nudg, track)
104 integer,
intent(in) :: ng, Lstr, Lend
105 integer,
intent(in) :: nfm3, nfm2, nfm1, nf, nfp1
106 logical,
intent(in) :: Predictor
109 logical,
intent(in) :: bounded(:)
110 logical,
intent(in) :: my_thread(Lstr:)
112 real(r8),
intent(in) :: Tinfo(0:,:)
114 real(r8),
intent(inout) :: rwalk(:)
115 real(r8),
intent(inout) :: nudg(Lstr:)
116 real(r8),
intent(inout) :: track(:,0:,:)
118 logical,
intent(in) :: bounded(Nfloats(ng))
119 logical,
intent(in) :: my_thread(Lstr:Lend)
121 real(r8),
intent(in) :: Tinfo(0:izrhs,Nfloats(ng))
123 real(r8),
intent(inout) :: rwalk(Nfloats(ng))
124 real(r8),
intent(inout) :: nudg(Lstr:Lend)
125 real(r8),
intent(inout) :: track(NFV(ng),0:NFT,Nfloats(ng))
131 logical,
parameter :: Lmask = .true.
133 logical,
parameter :: Lmask = .false.
135 integer :: LBi, UBi, LBj, UBj
136 integer :: i, l, nfindx
139 real(r8) :: HalfDT, akt, dakt, zrhs
140 real(r8) :: cff, cff1, cff2, cff3, cff4
144 lbi=lbound(
grid(ng)%h,dim=1)
145 ubi=ubound(
grid(ng)%h,dim=1)
146 lbj=lbound(
grid(ng)%h,dim=2)
147 ubj=ubound(
grid(ng)%h,dim=2)
191 &
grid(ng) % rmask, &
194 & my_thread, bounded, track)
203 &
grid(ng) % rmask, &
206 & my_thread, bounded, track)
213 IF (my_thread(l).and.bounded(l))
THEN
214 nudg(l)=sqrt(cff*max(0.0_r8,track(
ifakt,nfindx,l)))*rwalk(l)+ &
215 & track(
ifdak,nfindx,l)
224 & lstr, lend, nfindx, izrhs,
isbw3d, &
230 &
grid(ng) % rmask, &
233 & my_thread, bounded, track)
240 IF (my_thread(l).and.bounded(l))
THEN
241 IF (
time(ng)-halfdt.le.tinfo(
itstr,l).and. &
242 &
time(ng)+halfdt.gt.tinfo(
itstr,l))
THEN
243 akt =track(
ifakt,nfindx,l)
244 dakt=track(
ifdak,nfindx,l)
245 zrhs=track(izrhs,nfindx,l)
248 track(
ifakt,i,l)=dakt
249 track(izrhs,i,l)=zrhs
274# if defined FLOAT_BIOLOGY
276 IF (my_thread(l).and.bounded(l))
THEN
278 &
dt(ng)*(track(izrhs,nf,l)+ &
279 & track(
iwbio,nf,l)* &
285 IF (my_thread(l).and.bounded(l))
THEN
287 &
dt(ng)*track(izrhs,nf,l)
292# if defined FLOAT_BIOLOGY
295 IF (my_thread(l).and.bounded(l))
THEN
297 &
dt(ng)*(cff1*track(izrhs,nf ,l)- &
298 & cff2*track(izrhs,nfm1,l)+ &
299 & cff1*track(izrhs,nfm2,l)+ &
300 & cff1*track(
iwbio,nf ,l)* &
301 & track(
i1ohz,nf ,l)- &
302 & cff2*track(
iwbio,nfm1,l)* &
303 & track(
i1ohz,nfm1,l)+ &
304 & cff1*track(
iwbio,nfm2,l)* &
305 & track(
i1ohz,nfm2,l))
310 IF (my_thread(l).and.bounded(l))
THEN
311 track(
izgrd,nfp1,l)=cff1*track(
izgrd,nf ,l)- &
312 & cff2*track(
izgrd,nfm2,l)+ &
313 &
dt(ng)*(cff3*track(izrhs,nfp1,l)+ &
314 & cff4*track(izrhs,nf ,l)- &
315 & cff3*track(izrhs,nfm1,l)+ &
316 & cff3*track(
iwbio,nfp1,l)* &
317 & track(
i1ohz,nfp1,l)+ &
318 & cff4*track(
iwbio,nf ,l)* &
319 & track(
i1ohz,nf ,l)- &
320 & cff3*track(
iwbio,nfm1,l)* &
321 & track(
i1ohz,nf ,l))
328 IF (my_thread(l).and.bounded(l))
THEN
330 &
dt(ng)*(cff1*track(izrhs,nf ,l)- &
331 & cff2*track(izrhs,nfm1,l)+ &
332 & cff1*track(izrhs,nfm2,l))
337 IF (my_thread(l).and.bounded(l))
THEN
338 track(
izgrd,nfp1,l)=cff1*track(
izgrd,nf ,l)- &
339 & cff2*track(
izgrd,nfm2,l)+ &
340 &
dt(ng)*(cff3*track(izrhs,nfp1,l)+ &
341 & cff4*track(izrhs,nf ,l)- &
342 & cff3*track(izrhs,nfm1,l))
subroutine, public interp_floats(ng, lbi, ubi, lbj, ubj, lbk, ubk, lstr, lend, itime, ifield, isbval, gtype, maskit, fspval, nudg, pm, pn, hz, amask, a, my_thread, bounded, track)
subroutine vwalk_floats_tile(ng, lstr, lend, nfm3, nfm2, nfm1, nf, nfp1, predictor, my_thread, bounded, tinfo, rwalk, nudg, track)