1 subroutine id_drv(gaclac,west,numi,xlon,xlat,wlon,wlat,nilp,nump)
33 real*4 xlon(1000),xlat(1000),wlon(1000),wlat(1000)
34 integer*4 nilp(1000), nump(1000), gaclac
35 real*8 eptime,dangtl,dmagtl,pangtl,tangtl,tminco
36 real*8 timclm(1000),dmagtg,pangtg,tangtg,tmincg
37 real*4 gcrclm(3,1000),briclm(1000),vrmclm(1000),vrpclm(1000)
38 real*4 datcat(7,16000),skyclm(10,3,1000)
39 real*4 dv(3),dlon(1000),dlat(1000),dlom,dloq,dlam,dlaq
40 integer*4 nobclm(1000),mrkclm(1000),klmstr(1000)
41 integer*4 mrkstr(1000),lblclm(1000),idfclm(1000),nrfclm(1000)
42 integer*4 idncat(16000),mapclm(10,1000),idfhst(1000),iqlimt(6)
46 common /gconst/
pi,radeg,
re,rem,
f,
omf2,omegae
47 common /idparm/dangtl,dmagtl,pangtl,tangtl,tminco,
48 * dmagtg,pangtg,tangtg,tmincg,imatch
50 data eptime/0.d0/,timclm/1000*0.d0/,ifxclm/10/
51 data vrmclm/1000*0.d0/,vrpclm/1000*0.d0/,iqlimt/6*0/
52 data nobclm/1000*1/,mrkclm/1000*0/,mrkstr/1000*0/
54 data dmismn/0.02/,dnotmx/0.015/,dmismg/0.07/,dnotmg/0.05/
57 open (54,file=
'nav_assess.out')
82 gcrclm(1,i) = cos(xlon(i)/radeg)*cos(xlat(i)/radeg)
83 gcrclm(2,i) = sin(xlon(i)/radeg)*cos(xlat(i)/radeg)
84 gcrclm(3,i) = sin(xlat(i)/radeg)
87 zlon = wlon(i)*cos(xlat(i)/radeg)
88 briclm(i) = amax1(zlon,wlat(i)) + 0.01
91 th = sind*(nilp(i)-inpix)
92 vrpclm(i) = rporm*cos(th)/sqrt(1.0-rpor2*(sin(th))**2) - 1
93 vrpclm(i) = vrpclm(i)/sqrt(float(nump(i)))
102 if (west) iqlimt(2) = 1
106 call identy (eptime, imatch, dangtl, dmagtl, pangtl, tangtl,
107 * tminco, smaglm, iqlimt, maxcat, idncat, datcat,
108 * ifxclm, numclm, timclm, gcrclm, briclm, vrmclm,
109 * vrpclm, nobclm, mrkclm, numstr, klmstr, mrkstr,
110 * lblclm, idfclm, nrfclm, mapclm, skyclm, idfhst,
114 write(*,*)
'IDENTY return code',ircode
122 if (nrfclm(i).ge.1)
then
124 dv(j) = gcrclm(j,i) - skyclm(1,j,i)
125 dp = dp + dv(j)*dv(j)
130 if (mrkclm(i).eq.0)
then
134 clat2 = gcrclm(1,i)**2 + gcrclm(2,i)**2
136 dlat(nid) = radeg*dv(3)/clat
137 dlon(nid) = radeg*(dv(2)*gcrclm(1,i)-dv(1)*gcrclm(2,i))/clat2
139 write (55,1200) lblclm(i),xlon(l),xlat(l),nump(l),nilp(l),
140 * mapclm(1,i),dlon(nid),dlat(nid)
141 1200
format (i6,2f12.5,3i8,2f10.5)
144 if (dp.gt.dmismn) mis = mis + 1
147 else if (dp.lt.dnotmx)
then
150 write(*,*)i,lblclm(i),mrkclm(i),nrfclm(i),mapclm(1,i),dp
152 write (54,*) i,lblclm(i),mrkclm(i),nrfclm(i),mapclm(1,i),dp
154 write(*,*)
'IDs',nid,
' Mis',mis,
' Not',nnt
158 call mediqr(dlon,nid,dlom,dloq)
159 write(*,*)
'Longitude median, IQR =',dlom,dloq
160 call mediqr(dlat,nid,dlam,dlaq)
161 write(*,*)
' Latitude median, IQR =',dlam,dlaq