Technical data

124
Chapter 6: Compiling and Debugging Parallel Fortran
DO I = 1, NUM_ATOMS
DO J = 1, I-1
DIST_SQ(1) = (ATOMS(I,1) - ATOMS(J,1)) ** 2
DIST_SQ(2) = (ATOMS(I,2) - ATOMS(J,2)) ** 2
DIST_SQ(3) = (ATOMS(I,3) - ATOMS(J,3)) ** 2
TOTAL_DIST_SQ=DIST_SQ(1)+DIST_SQ(2)+ DIST_SQ(3)
C
C SET A FLAG IF THE DISTANCE IS WITHIN THE
C THRESHOLD
C
IF (TOTAL_DIST_SQ .LE. THRESHOLD_SQ) THEN
FLAGS(I,J) = .TRUE.
ELSE
FLAGS(I,J) = .FALSE.
END IF
END DO
END DO
DO I = 1, NUM_ATOMS
DO J = 1, I-1
IF (FLAGS(I,J)) THEN
C
C ADD THE FORCE OF THE NEARBY ATOM ACTING ON THIS
C ATOM ...
C
FORCE(I,1) = FORCE(I,1) + WEIGHT(I)
FORCE(I,2) = FORCE(I,2) + WEIGHT(I)
FORCE(I,3) = FORCE(I,3) + WEIGHT(I)
C
C ... AND THE FORCE OF THIS ATOM ACTING ON THE
C NEARBY ATOM
C
FORCE(J,1) = FORCE(J,1) + WEIGHT(J)
FORCE(J,2) = FORCE(J,2) + WEIGHT(J)
FORCE(J,3) = FORCE(J,3) + WEIGHT(J)
END IF
END DO
END DO
RETURN
END