Technical data
Parallel Programming Exercise
129
DIST_SQ3 = (ATOMS(I,3) - ATOMS(J,3)) ** 2
TOTAL_DIST_SQ = DIST_SQ1 + DIST_SQ2 + DIST_SQ3
IF (TOTAL_DIST_SQ .LE. THRESHOLD_SQ) THEN
C
C ADD THE FORCE OF THE NEARBY ATOM ACTING ON THIS
C ATOM ...
C
PARTIAL(I,1,THREAD_INDEX) = PARTIAL(I,1,
+ THREAD_INDEX) + WEIGHT(I)
PARTIAL(I,2,THREAD_INDEX) = PARTIAL(I,2,
+ THREAD_INDEX) + WEIGHT(I)
PARTIAL(I,3,THREAD_INDEX) = PARTIAL(I,3,
+ THREAD_INDEX) + WEIGHT(I)
C
C ... AND THE FORCE OF THIS ATOM ACTING ON THE
C NEARBY ATOM
C
PARTIAL(J,1,THREAD_INDEX) = PARTIAL(J,1,THREAD_INDEX)
+ + WEIGHT(J)
PARTIAL(J,2,THREAD_INDEX) = PARTIAL(J,2,THREAD_INDEX)
+ + WEIGHT(J)
PARTIAL(J,3,THREAD_INDEX) = PARTIAL(J,3,THREAD_INDEX)
+ + WEIGHT(J)
END IF
END DO
END DO
ENDDO
C
C TOTAL UP THE PARTIAL SUMS
C
DO I = 1, NUM_ATOMS
DO THREAD_INDEX = 1, MP_SET_NUMTHREADS
FORCE(I,1) = FORCE(I,1) + PARTIAL(I,1,THREAD_INDEX)
FORCE(I,2) = FORCE(I,2) + PARTIAL(I,2,THREAD_INDEX)
FORCE(I,3) = FORCE(I,3) + PARTIAL(I,3,THREAD_INDEX)
END DO
END DO
RETURN
END










