Elsevier Science Home
Computer Physics Communications Program Library
Full text online from Science Direct
Programs in Physics & Physical Chemistry
CPC Home

[Licence| Download | New Version Template] aarf_v1_0.gz(6 Kbytes)
Manuscript Title: Recurrence solution of a block tridiagonal matrix equation with Neumann, Dirichlet, mixed or periodic boundary conditions.
Authors: F. Marsh, D.E. Potter
Program title: PERDIAG
Catalogue identifier: AARF_v1_0
Distribution format: gz
Journal reference: Comput. Phys. Commun. 24(1981)185
Programming language: Fortran.
Computer: CDC 6500.
Operating system: NOS.
RAM: 18K words
Word size: 60
Keywords: General purpose, Matrix equation, Perdiagonal, Tridiagonal, Nxn blocks, Direct method, Recursive, Periodic boundary Conditions, N finite difference Equations, One space dimension, Implicit.
Classification: 4.8.

Nature of problem:
A theorist may wish to solve the matrix equation AU = W, rapidly, where A is a block tridiagonal matrix. This type of matrix equation frequently arises in the solution of problems in one space dimension; in the soluion of boundary-value and many initial-value problems (because the time-dependent problem has been formulated implicitly), where it is necessary to solve n coupled, finite difference equations. The program is capable of dealing with Neumann, Dirichlet, mixed or periodic boundary conditions. If the boundary conditions are periodic, the resulting matrix A is block tridiagonal with additional blocks in the upper right and lower left corners, referred to here as block perdiagonal.

Solution method:
A recurrence solution is used to solve the matrix equations AU=W. The method follows the principles for a recurrence solution of a tridiagonal matrix equation, modified, when appropriate, to deal with the more complex case of periodic boundary conditions.

Restrictions:
None. The method does not assume any particular properties of the nXn submatrices, other than their being non-singular.

Running time:
The test runs took about 0.3 s. Generally, the running time would depend on the size of the blocks and the number of mesh points.