42 integer :: igr,igrold, ipart, itime, ix, j, inest
44 integer :: jy, kpart, ktop, ngrid,kz
45 integer :: igrid(maxpart), ipoint(maxpart), igridn(maxpart,maxnests)
52 real :: x, y, xtn,ytn, ztold, delt
54 integer :: mind1,mind2
57 real,
parameter :: eps=nxmax/3.e5
67 dt1=
real(itime-memtime(1))
68 dt2=
real(memtime(2)-itime)
72 delt=
real(abs(lsynctime))
80 if (numpart.le.0)
return
97 if (itra1(ipart).ne.itime) goto 20
106 if ( x.gt.xln(j)+eps .and. x.lt.xrn(j)-eps .and. &
107 y.gt.yln(j)+eps .and. y.lt.yrn(j)-eps )
then
119 xtn=(x-xln(ngrid))*xresoln(ngrid)
120 ytn=(y-yln(ngrid))*yresoln(ngrid)
123 igridn(ipart,ngrid) = 1 + jy*nxn(ngrid) + ix
124 else if(ngrid.eq.0)
then
128 igrid(ipart) = 1 + jy*nx + ix
147 call
sort2(numpart,igrid,ipoint)
155 if (igr .eq. -1) goto 50
156 ipart = ipoint(kpart)
158 if (igr .ne. igrold)
then
164 psconv=(ps(ix,jy,1,mind1)*dt2+ps(ix,jy,1,mind2)*dt1)*dtt
165 tt2conv=(tt2(ix,jy,1,mind1)*dt2+tt2(ix,jy,1,mind2)*dt1)*dtt
166 td2conv=(td2(ix,jy,1,mind1)*dt2+td2(ix,jy,1,mind2)*dt1)*dtt
169 tconv(kz)=(tth(ix,jy,kz+1,mind1)*dt2+ &
170 tth(ix,jy,kz+1,mind2)*dt1)*dtt
171 qconv(kz)=(qvh(ix,jy,kz+1,mind1)*dt2+ &
172 qvh(ix,jy,kz+1,mind2)*dt1)*dtt
182 if (lconv .eqv. .true.)
then
186 call
redist(ipart,ktop,ipconv)
193 itage=abs(itra1(ipart)-itramem(ipart))
195 if (itage.lt.lage(nage)) goto 37
199 if (nage.le.nageclass) &
200 call
calcfluxes(nage,ipart,
real(xtra1(ipart)), &
201 real(ytra1(ipart)),ztold)
218 igrid(ipart) = igridn(ipart,inest)
220 call
sort2(numpart,igrid,ipoint)
228 if (igr .eq. -1) goto 60
229 ipart = ipoint(kpart)
231 if (igr .ne. igrold)
then
233 jy = (igr-1)/nxn(inest)
234 ix = igr - jy*nxn(inest) - 1
237 psconv=(psn(ix,jy,1,mind1,inest)*dt2+ &
238 psn(ix,jy,1,mind2,inest)*dt1)*dtt
239 tt2conv=(tt2n(ix,jy,1,mind1,inest)*dt2+ &
240 tt2n(ix,jy,1,mind2,inest)*dt1)*dtt
241 td2conv=(td2n(ix,jy,1,mind1,inest)*dt2+ &
242 td2n(ix,jy,1,mind2,inest)*dt1)*dtt
245 tconv(kz)=(tthn(ix,jy,kz+1,mind1,inest)*dt2+ &
246 tthn(ix,jy,kz+1,mind2,inest)*dt1)*dtt
247 qconv(kz)=(qvhn(ix,jy,kz+1,mind1,inest)*dt2+ &
248 qvhn(ix,jy,kz+1,mind2,inest)*dt1)*dtt
259 if (lconv .eqv. .true.)
then
262 call
redist(ipart,ktop,ipconv)
269 itage=abs(itra1(ipart)-itramem(ipart))
271 if (itage.lt.lage(nage)) goto 47
275 if (nage.le.nageclass) &
276 call
calcfluxes(nage,ipart,
real(xtra1(ipart)), &
277 real(ytra1(ipart)),ztold)
subroutine calcfluxes(nage, jpart, xold, yold, zold)
subroutine redist(ipart, ktop, ipconv)
subroutine sort2(n, arr, brr)
subroutine calcmatrix_ecmwf(lconv, delt, cbmf)
subroutine convmix_ecmwf(itime)