home *** CD-ROM | disk | FTP | other *** search
- PROGRAM d17r1(input,output);
- (* driver for routine SOR *)
- CONST
- jmax=11;
- pi=3.1415926;
- TYPE
- double = real;
- gljmax = ARRAY [1..jmax,1..jmax] OF double;
- VAR
- i,j,midl : integer;
- rjac : double;
- a,b,c,d,e,f,u : gljmax;
-
- (*$I SOR.PAS *)
-
- BEGIN
- FOR i := 1 to jmax DO BEGIN
- FOR j := 1 to jmax DO BEGIN
- a[i,j] := 1.0;
- b[i,j] := 1.0;
- c[i,j] := 1.0;
- d[i,j] := 1.0;
- e[i,j] := -4.0;
- f[i,j] := 0.0;
- u[i,j] := 0.0
- END
- END;
- midl := (jmax DIV 2)+1;
- f[midl,midl] := 2.0;
- rjac := cos(pi/jmax);
- sor(a,b,c,d,e,f,u,jmax,rjac);
- writeln('SOR Solution:');
- FOR i := 1 to jmax DO BEGIN
- FOR j := 1 to jmax DO write(u[i,j]:7:2);
- writeln
- END;
- writeln;
- writeln('Test that solution satisfies difference eqns:');
- FOR i := 2 to (jmax-1) DO BEGIN
- FOR j := 2 to (jmax-1) DO BEGIN
- f[i,j] := u[i+1,j]+u[i-1,j]+u[i,j+1]
- +u[i,j-1]-4.0*u[i,j]
- END;
- write(' ':7);
- FOR j := 2 to (jmax-1) DO write(f[i,j]:7:2);
- writeln
- END
- END.
-