Here is my solution to Homework 3. It actually can do quite a bit
more, but data has been tuned to run the Homework 2 steady state on 3
different meshes, followed by a Richardson based analysis to estimate
the order of accuracy and local discretization errors.. Note that
I have started to apply the
concept of sparse storage. The derived type SparceMatrixT in
DataM.f90 allows me to store only the non-zero elements of my matrix.

Files are:

main.f90 - the main program driving the calculation

DataM.f90 - Module containing most
variables,
and setting initial conditions for the problem

IntrTypeM.f90 - Sets precision level and number of digits in integers

LinAlgM.f90 -Module
containing Linear Algebra subroutines (Direct
equation solvers)

OutputM.f90 - Module containing
subroutines
for output of results

SetEqn2M.f90 - Subroutines to set the
matrix
and right hand side for the system of finite volume Cartesian
conduction
equations