46 integer :: igr,igrold, ipart, itime, ix, j, inest
48 integer :: jy, kpart, ktop, ngrid,kz
49 integer :: igrid(maxpart), ipoint(maxpart), igridn(maxpart,maxnests)
56 real :: x, y, xtn,ytn, ztold, delt
58 integer :: mind1,mind2
69 dt1=
real(itime-memtime(1))
70 dt2=
real(memtime(2)-itime)
74 delt=
real(abs(lsynctime))
82 if (numpart.le.0)
return
99 if (itra1(ipart).ne.itime) goto 20
108 if ( x.gt.xln(j) .and. x.lt.xrn(j) .and. &
109 y.gt.yln(j) .and. y.lt.yrn(j) )
then
121 xtn=(x-xln(ngrid))*xresoln(ngrid)
122 ytn=(y-yln(ngrid))*yresoln(ngrid)
125 igridn(ipart,ngrid) = 1 + jy*nxn(ngrid) + ix
126 else if(ngrid.eq.0)
then
130 igrid(ipart) = 1 + jy*nx + ix
149 call
sort2(numpart,igrid,ipoint)
157 if (igr .eq. -1) goto 50
158 ipart = ipoint(kpart)
160 if (igr .ne. igrold)
then
166 psconv=(ps(ix,jy,1,mind1)*dt2+ps(ix,jy,1,mind2)*dt1)*dtt
167 tt2conv=(tt2(ix,jy,1,mind1)*dt2+tt2(ix,jy,1,mind2)*dt1)*dtt
168 td2conv=(td2(ix,jy,1,mind1)*dt2+td2(ix,jy,1,mind2)*dt1)*dtt
171 pconv(kz)=(pplev(ix,jy,kz,mind1)*dt2+ &
172 pplev(ix,jy,kz,mind2)*dt1)*dtt
173 tconv(kz)=(tt(ix,jy,kz,mind1)*dt2+ &
174 tt(ix,jy,kz,mind2)*dt1)*dtt
175 qconv(kz)=(qv(ix,jy,kz,mind1)*dt2+ &
176 qv(ix,jy,kz,mind2)*dt1)*dtt
186 if (lconv .eqv. .true.)
then
190 call
redist(ipart,ktop,ipconv)
197 itage=abs(itra1(ipart)-itramem(ipart))
199 if (itage.lt.lage(nage)) goto 37
203 if (nage.le.nageclass) &
204 call
calcfluxes(nage,ipart,
real(xtra1(ipart)), &
205 real(ytra1(ipart)),ztold)
222 igrid(ipart) = igridn(ipart,inest)
224 call
sort2(numpart,igrid,ipoint)
232 if (igr .eq. -1) goto 60
233 ipart = ipoint(kpart)
235 if (igr .ne. igrold)
then
237 jy = (igr-1)/nxn(inest)
238 ix = igr - jy*nxn(inest) - 1
241 psconv=(psn(ix,jy,1,mind1,inest)*dt2+ &
242 psn(ix,jy,1,mind2,inest)*dt1)*dtt
243 tt2conv=(tt2n(ix,jy,1,mind1,inest)*dt2+ &
244 tt2n(ix,jy,1,mind2,inest)*dt1)*dtt
245 td2conv=(td2n(ix,jy,1,mind1,inest)*dt2+ &
246 td2n(ix,jy,1,mind2,inest)*dt1)*dtt
249 tconv(kz)=(tthn(ix,jy,kz+1,mind1,inest)*dt2+ &
250 tthn(ix,jy,kz+1,mind2,inest)*dt1)*dtt
251 qconv(kz)=(qvhn(ix,jy,kz+1,mind1,inest)*dt2+ &
252 qvhn(ix,jy,kz+1,mind2,inest)*dt1)*dtt
263 if (lconv .eqv. .true.)
then
266 call
redist(ipart,ktop,ipconv)
273 itage=abs(itra1(ipart)-itramem(ipart))
275 if (itage.lt.lage(nage)) goto 47
279 if (nage.le.nageclass) &
280 call
calcfluxes(nage,ipart,
real(xtra1(ipart)), &
281 real(ytra1(ipart)),ztold)
subroutine calcfluxes(nage, jpart, xold, yold, zold)
subroutine redist(ipart, ktop, ipconv)
subroutine calcmatrix_gfs(lconv, delt, cbmf)
subroutine sort2(n, arr, brr)
subroutine convmix_gfs(itime)