PUBLIC ROUTINES
call tri_invert ( X, D, A, B, C )
Input
D The right-hand side term, see the schematic above.
[real, dimension(:,:,:)]
Output
X The solution to the tridiagonal system of equations.
[real, dimension(:,:,:)]
Optional Input/Output
A,B,C The left-hand-side terms (matrix), see the schematic above.
If A is not present, it is assumed that the matrix (A,B.C)
has not been changed since the last call to tri_invert.
[real, dimension(:,:,:)]
Notes:
For simplicity, A and C are assumed to be dimensioned the same size
as B, D, and X, although any input values for A(N) and C(1) are ignored.
There are no checks to make sure the sizes agree.
The value of A(N) is modified on output, and B and C are unchanged.
--------------------------------------------------------------
call close_tridiagonal
There are no arguments to this routine.
NOTES
The following private allocatable arrays save the relevant information
if one recalls tri_invert without changing (A,B,C):
allocate ( e (size(x,1), size(x,2), size(x,3)) )
allocate ( g (size(x,1), size(x,2), size(x,3)) )
allocate ( cc (size(x,1), size(x,2), size(x,3)) )
allocate ( bb (size(x,1), size(x,2)) )
This storage is deallocated when close_tridiagonal is called.