胶片19:用消息传递方法求解拉普拉斯方程的节点程序
DIMENSION PHINEW(NLOC+2), PHIOLD(NLOC+2)
NLOC=NTOT/NPROC
I1=2
NLOC1=NLOC + 1
IF (PROCNUM.EQ.NPROC-1 .or. PROCNUM.EQ.0) NLOC1=NLOC1-1
BEGIN
TEST = 0
SOURCE = PHIOLD(NLOC1)
IF(PROCNUM.EQ.NPROC-1) SOURCE = "DUMMY"
DEST = PHIOLD(1)
IF(PROCNUM.EQ.1)DEST = "DUMMY"
CALL MPSHIFT(+1, SOURCE, DEST)
SOURCE = FOLD(I1)
IF(PROCNUM.EQ.0) SOURCE = "DUMMY"
DEST = PHIOLD(NLOC1+1)
IF(PROCNUM.EQ.NPROC-1) DEST = "DUMMY"
CALL MPSHIFT(-1, SOURCE, DEST)
DO
1
I=I1,NLOC1
TEMP = 0.5 * (PHIOLD(I-1) + PHIOLD(I+1))
TEST = AMAX1(TEST,ABS(TEMP-PHIOLD(I)))
1
PHINEW (I) = TEMP
DO
2
I=I1, NLOC1
2
PHIOLD(I) = PHINEW(I)
CALL GLOBALMAX (TEST)
IF (TEST>CONVG) GO TO
BEGIN
ELSE STOP
Copyright: NPACT