PROGRAM angles c Calculate angles and off plane distances REAL x(3,0:17), y(3), z(3), u(3), v(3), w(3) OPEN (unit=1, form='FORMATTED', status='OLD', file='ligands.diam', 1 readonly) DO i = 1,3 READ (1, 1000) 1000 FORMAT (3f10.4) endDO DO i = 1,17 READ (1, 1000) (x(j,i), j=1,3) endDO CLOSE (unit=1) DO WHILE (.TRUE.) READ (5, 1001, end=9) i1, i2, i3, i4, i5, i6, i7, i8 1001 FORMAT (8i5) DO i = 1,3 y(i) = x(i,i2) - x(i,i1) z(i) = x(i,i4) - x(i,i3) v(i) = x(i,i6) - x(i,i5) w(i) = x(i,i8) - x(i,i7) endDO IF (i1 .LE. 0) GOTO 9 c Do distances IF (i3 .EQ. 0) THEN sum = 0. DO i = 1,3 sum = sum + y(i)*y(i) endDO dist = SQRT(sum) WRITE (6, 1000) dist c Do angles ELSE IF (i5 .EQ. 0) THEN sum = 0. sy = 0. sz = 0. DO i = 1,3 sum = sum + y(i)*z(i) sy = sy + y(i)*y(i) sz = sz + z(i)*z(i) endDO sz = SQRT(sz) sy = SQRT(sy) angle = ACOSD(sum/(sz*sy)) WRITE (6, 1000) angle c Do planes ELSE u(1) = y(2)*z(3) - z(2)*y(3) u(2) = z(1)*y(3) - z(3)*y(1) u(3) = y(1)*z(2) - z(1)*y(2) sum = 0. su = 0. sv = 0. DO i = 1,3 sum = sum + u(i)*v(i) su = su + u(i)*u(i) sv = sv + v(i)*v(i) endDO su = SQRT(su) sv = SQRT(sv) dist = sum/su WRITE (6, 1000) dist IF (i7 .NE. 0) THEN sum = 0. sw = 0. DO i = 1,3 sum = sum + u(i)*w(i) sw = sw + w(i)*w(i) endDO sw = SQRT(sw) angle = 90. - ACOSD(sum/(su*sw)) WRITE (6, 1000) angle endIF endIF endDO 9 stop end