ES105 - Winter, 2012
Problem Set 2
Due: Friday, 20 January, 11:15 AM
Read: text, through Chapter 4, to complete this assignment.
Reconsider Problem Set 1 and solve it with Jacobi, Gauss-Seidel and “optimal” SOR point iterative methods for N = 10, 20, 40 and 80.
COMPUTE IN DOUBLE PRECISION (i.e. REAL*8 in Fortran). Use a relative stopping criterion of 10E-5 based on an L2 vector norm.
In each case,
- Estimate the spectral radius and convergence rate,
- Report the number of iterations required to reach a fixed convergence criterion, and
- Tabulate the RMS error for each solution with each iterative method.
Discuss whether your results agree with theory relative to the convergence and convergence rates of the 3 solvers
and with respect to the accuracy of your solutions as a function of N.
EXTRA CREDIT:
Repeat with the Line Iterative Methods.
For the tridiagnonal line matrix solution, use the subroutine Thomas.f (extension f90 for Fortran 90) from the
105 library.
NOTES: The Thomas solver uses 3 1-D arrays, A(N) = subdiagonal, B(N) = diagonal, C(N) = superdiagnonal, plus R(N), the
right-hand-side. Call Thomas with KKK=1 a single time, once the arrays are filled with the matrix coefficients, then
use KKK=2 in your line iteration loop for computing the back-substitution with each new right-hand side at each iteration. As with Solve.f,
the solution is returned in vector R(N) for each subroutine call with KKK=2.
EXTRA EXTRA CREDIT:
Repeat with ADI. Here, build separate arrays for each direction, calling the Thomas algorithm once with KKK=1
for each set of coefficients (since the matrices are different in the r vs. theta directions) and then use the appropriately
decomposed matrix with KKK=2 to compute the intermediate solutions to the evolving right hand sides for each iteration
in the ADI sweeps.