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: