PROGRAM nearby c Reads list of peaks (or holes) and tells which atoms are near PARAMETER aa = 197.17, bb = 127.03, cc = 134.18, beta = 97.64 PARAMETER NDIM = 5000 REAL x(NDIM), y(NDIM), z(NDIM) CHARACTER*15 label(NDIM) CHARACTER*40 filename conv = 45./atan(1.) sinb = sin(beta/conv) cosb = cos(beta/conv) c Read distance criterion READ (5, 1001) crit WRITE (6, 1001) crit crit = crit*crit c Read coordinates WRITE (6, 1000) 'Enter filename of input Diamond file:' 1000 FORMAT (a) READ (5, 1000) filename WRITE (6, 1000) OPEN (unit=1, form='FORMATTED', status='OLD', file=filename, 1 readonly) READ (1, 1001) READ (1, 1001) READ (1, 1001) num = 1 DO WHILE (.TRUE.) 1 READ (1, 1001, end=99, err=1), x(num), y(num), z(num), b, itype, 1 mres, n, wt, label(num) 1001 FORMAT (4f10.5, 3i5, f9.5, a) num = num + 1 endDO 99 num = num-1 CLOSE (unit=1) c Loop through list and find atoms near by WRITE (6, 1000) 'Enter filename of input list:' READ (5, 1000) filename WRITE (6, 1000) filename OPEN (unit=2, form='FORMATTED', readonly, file=filename, 1 status='OLD') WRITE (6, 1000) 'Enter filename of output list:' READ (5, 1000) filename WRITE (6, 1000) filename OPEN (unit=3, form='FORMATTED', carriagecontrol='LIST', 1 file=filename, status='UNKNOWN') DO WHILE (.TRUE.) READ (2, 1002, end=999) peak, xp, yp, zp 1002 FORMAT (f15.4, 15x, 3f10.3) dmin = 1.e10 DO n = 1, num xx = x(n) - xp yy = y(n) - yp zz = z(n) - zp zz = zz + xx*cosb xx = xx*sinb d = xx*xx + yy*yy + zz*zz IF (d .LT. dmin) THEN dmin = d ijk = n endIF endDO IF (dmin .LT. crit) THEN WRITE (3, 1003) xp, yp, zp, peak, label(ijk), SQRT(dmin) 1003 FORMAT (4f10.4, 3x, a, f10.4) endIF endDO 999 CLOSE (unit=2) CLOSE (unit=3) end