PROGRAM nearby c Reads list of peaks (or holes) and tells which atoms are near c Only sees if near potential H-bond partner unless crit<0 PARAMETER NDIM = 30000 REAL x(NDIM), y(NDIM), z(NDIM), cell(6) CHARACTER*15 label(NDIM) CHARACTER*60 filename LOGICAL flag c Read distance criterion WRITE (6, 1000) 'Enter distance criterion:' READ (5, 1001) crit WRITE (6, 1001) crit flag = crit.GT.0 crit = crit*crit c Read coordinates WRITE (6, 1000) 'Enter filename for Diamond file:' 1000 FORMAT (a) READ (5, 1000) filename WRITE (6, 1000) filename OPEN (unit=1, form='FORMATTED', status='OLD', file=filename, 1 readonly) READ (1, 2001) cell 2001 FORMAT (6F10.3) sinb = SIND(cell(5)) cosb = COSD(cell(5)) WRITE (6, 2001) cell READ (1, 1001) READ (1, 1001) num = 1 nn = 1 DO WHILE (.TRUE.) 1 READ (1, 1001, end=99, err=1) x(nn), y(nn), z(nn), b, 1 itype, mres, n, wt, label(nn) 1001 FORMAT (4f10.5, 3i5, f9.5, a) nn = nn + 1 endDO 99 num = nn-1 CLOSE (unit=1) c Loop through list and find atoms near by WRITE (6, 1000) 'Enter filename for input list:' READ (5, 1000) filename WRITE (6, 1000) filename OPEN (unit=2, form='FORMATTED', status='OLD', file=filename, 1 readonly) WRITE (6, 1000) 'Enter filename for output list:' READ (5, 1000) filename WRITE (6, 1000) filename OPEN (unit=3, form='FORMATTED', 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 .GE. ABS(crit)) GOTO 100 ! have nearest atom IF (flag .AND. label(ijk)(12:13) .NE. 'FE' .AND. 1 label(ijk)(12:12) .NE. 'O' .AND. 2 label(ijk)(12:12) .NE. 'N') 3 GOTO 100 WRITE (3, 1003) peak, label(ijk), xp, yp, zp, SQRT(dmin) 1003 FORMAT (f15.4, a15, 4f10.3) 100 continue endDO 999 CLOSE (unit=2) CLOSE (unit=3) end