PROGRAM xsor ! driver for routine sor USE nrtype USE nr IMPLICIT NONE INTEGER(I4B), PARAMETER :: JMAX=33,NSTEP=4 INTEGER(I4B) :: i,j,midl REAL(DP) :: rjac REAL(DP), DIMENSION(JMAX,JMAX) :: a,b,c,d,e,f,u a(:,:)=1.0 b(:,:)=1.0 c(:,:)=1.0 d(:,:)=1.0 e(:,:)=-4.0 f(:,:)=0.0 u(:,:)=0.0 midl=JMAX/2+1 f(midl,midl)=2.0_dp/(JMAX-1)**2 rjac=cos(PI/JMAX) call sor(a,b,c,d,e,f,u,rjac) write(*,'(1x,a)') 'SOR Solution:' do i=1,JMAX,NSTEP write(*,'(1x,9f8.4)') (u(i,j),j=1,JMAX,NSTEP) end do write(*,'(/1x,a)') 'Test that solution satisfies Difference Eqns:' do i=NSTEP+1,JMAX-1,NSTEP f(i,NSTEP+1:JMAX-1:NSTEP)=& u(i+1,NSTEP+1:JMAX-1:NSTEP)+u(i-1,NSTEP+1:JMAX-1:NSTEP)+& u(i,NSTEP+2:JMAX:NSTEP)+u(i,NSTEP:JMAX-2:NSTEP)-& 4.0_dp*u(i,NSTEP+1:JMAX-1:NSTEP) write(*,'(7x,9f8.4)') (f(i,j),j=NSTEP+1,JMAX-1,NSTEP) end do END PROGRAM xsor