C This is a fortran90 program solving Laplace's equation in 2 dimensions C with 64 x 64 grain size. The boundary conditions are 1. C KAYASIDH KASYAPANUN C CPS615 Fall96 C Compile : f90 laplace2d.f90 (on NOVA.npac or via VPL) C--------------------------------------------------------------------------- PROGRAM LAPLACE2D REAL, DIMENSION(64,64) :: PHINEW,PHIOLD REAL :: TEST=1.0 C----------------------------------- C Initialize the boundary condition C----------------------------------- PHIOLD(1:64,1)=1 PHIOLD(1:64,64)=1 PHIOLD(1,1:64)=1 PHIOLD(64,1:64)=1 PHINEW=PHIOLD C--------------------- C Calculate PHI values C--------------------- DO WHILE (TEST>0.0001) PHINEW(2:63,2:63)=0.25*(PHIOLD(1:62,2:63)+PHIOLD(2:63,1:62)+ * PHIOLD(2:63,3:64)+PHIOLD(3:64,2:63)) C----------------------------------------------------- C Find the difference between Phi values in iterations C----------------------------------------------------- TEST = MAXVAL(ABS(PHIOLD-PHINEW)) PHIOLD = PHINEW END DO C-------------------------------- C Display slution of Laplaces 2D C-------------------------------- WRITE(*,*) '64 x 64 2-dimensions Laplaces equation' WRITE(*,*) '======================================' WRITE(*,*) 'Each line has solutions from 8 points' WRITE(*,*) '8 lines -> 64 points = 1 row' WRITE(*,*) '------------------------------------------------' DO I=1, 64 WRITE(*, FMT="(8(f7.4))" ) PHIOLD(I,:) WRITE(*,*) '------------------------------------------------' ENDDO END