program laplace integer imax,jmax,im1,im2,jm1,jm2,it,itmax ! parameter (imax=2001,jmax=2001) parameter (imax=501,jmax=501) parameter (im1=imax-1,im2=imax-2,jm1=jmax-1,jm2=jmax-2) parameter (itmax=100) real*8 u(imax,jmax),du(imax,jmax),umax,dumax,tol ! parameter (umax=10.0,tol=1.0e-3) parameter (umax=10.0, tol=1.0e-2) real t(2), e ! Initialize do j=1,jmax do i=1,imax-1 u(i,j)=0.0 du(i,j)=0.0 enddo u(imax,j)=umax enddo dumax = 1000.0 it=1 e = dtime(t) ! Main computation loop do while (dumax.ge.tol) dumax=0.0 do j=2,jm1 do i=2,im1 du(i,j)=0.25*(u(i-1,j)+u(i+1,j)+u(i,j-1)+u(i,j+1))-u(i,j) dumax=max(dumax,abs(du(i,j))) u(i,j)=u(i,j)+du(i,j) enddo enddo ! write (1,*) it,dumax it=it+1 enddo e = dtime(t) write (1,*) 'Time=',e write (1,*) it, dumax print *, 'Time = ', e print *, it, dumax stop end