program tst c parameter(ntms=25,imx=73,dlon=5.) dimension ut(ntms),gcmlon(imx),ix(imx) data censlt/12./ c do i=1,ntms ut(i) = float(i-1) enddo do i=1,imx gcmlon(i) = -180.+(i-1)*5. enddo do it=1,ntms slt0 = censlt-12. if (slt0.lt.0.) slt0 = slt0-12. ix0 = ixslt(slt0,ut(it),xlon,gcmlon,imx,dlon) write(6,"('censlt=',f5.2,' ut=',f5.2,' slt0=',f5.2, + ' ix0=',i3,' xlon=',f7.2)") censlt,ut(it),slt0,ix0,xlon iflag = 0 do i=1,imx ix(i) = mod(ix0+i-1,imx) if (ix(i).eq.0) ix(i) = imx if (i.gt.1.and.ix(i-1).gt.ix(i)) iflag = 1 if (iflag.gt.0) ix(i) = ix(i)+1 enddo write(6,"('ix=',/(18i4))") ix enddo stop end c function ixslt(slt,ut,xlon,gcmlon,imx,dlon) dimension gcmlon(imx) c c Find nearest tgcm longitude index corresponding to c given solar local time (slt) and ut: c (also return the longitude at slt in xlon) c xlon = (slt-ut) * 15. if (xlon.ge.180.) xlon = xlon-360. if (xlon.lt.-180.) xlon = xlon+360. ilon = ixfind(gcmlon,imx,xlon,dlon) if (ilon.le.0) then write(6,"(' ')") write(6,"('>>> ixslt: slt=',f8.3,' ut=',f8.3,' ilon=',i3, + ' apparent error from ixfind: xlon=',f12.3)") + slt,ut,ilon,xlon stop 'ilon' endif ixslt = ilon return end c c------------------------------------------------------------------ c Begin file /home/sting/foster/lib/ixfind.f c------------------------------------------------------------------ c function ixfind(z,nz,val,del) c c Find nearest index to val in z(nz), with increment del c If not found, return -1 c dimension z(nz) c do n=1,nz if (val.ge.z(n)-0.5*del.and.val.le.z(n)+0.5*del) then ixfind = n return endif enddo ixfind = -1 return end