/* From: "COMPUTATIONAL PHYSICS, 2nd Ed" by RH Landau, MJ Paez, and CC Bordeianu Copyright Wiley-VCH, 2007. Electronic Materials copyright: R Landau, Oregon State Univ, 2007; MJ Paez, Univ Antioquia, 2007; & CC Bordeianu, Univ Bucharest, 2007 Support by National Science Foundation */ // LaplaceSOR.c:Solve Laplace equation with finite difference method // Output data saved in 3D grid format of gnuplot #include #include #include main() { int max= 40; // number of grid points double tol,omega,r; double p[40][40]; int i, j, iter; FILE *output1; output1 = fopen("laplaceR.dat","w") ; // save data in laplaceR.dat omega = 1.4; // The SQR parameter for (i = 0; i 0.000001) && (iter <= 140) ){ tol= 0.0; for (i = 1; i<(max-1); i++) { // x-direction for (j = 1; j<(max-1); j++) { // y-direction r= omega * ( p[i][j+1] + p[i][j-1] + p[i+1][j] + p[i-1][j] - 4.0 * p[i][j] ) / 4.0; p[i][j] += r; if ( fabs(r) > tol ) tol= fabs(r); } iter++; } } for (i = 0; i