1: PROGRAM adi 2: PARAMETER (NN=100) 3: REAL :: a,b,brhs,c 4: REAL,DIMENSION(NN,NN) :: beta,psi,zeta,rhs,wspace 5: !HPF$ PROCESSORS procs(4) 6: !HPF$ TEMPLATE tplate(NN) 7: !HPF$ DISTRIBUTE tplate(BLOCK) 8: !HPF$ ALIGN beta(*,:) WITH tplate(:) 9: !HPF$ ALIGN psi(*,:) WITH tplate(:) 10: !HPF$ ALIGN zeta(*,:) WITH tplate(:) 11: !HPF$ ALIGN rhs(*,:) WITH tplate(:) 12: !HPF$ ALIGN wspace(*,:) WITH tplate(:) 13: alpha = 2.0*h2/DT 14: psi (2:NN-1,2:NN-1) = 2.0 15: DO iTime = 1,NTime 16: forall (i=j1:jN) psi(j1,i) = (rhs(j1,i) - a*psi(1,i))/b 17: DO k=jN,j1,-1 18: forall (i=j1:jN) psi(k,i) = psi(k,i) - wspace(k+1,i)*psi(k+1,i) 19: END DO 20: rhs(1,:) = psi(1,:) 21: END DO ! iTime 22: PRINT *, 'Final Result: for psi()' 23: DO i=1,NN 24: WRITE(UNIT=6,FMT=1002) (psi(i,j),j=1,NN/4) 25: END DO 26: STOP 27: 1002 FORMAT(12F9.3) 28: END 29: