
74 Chapter 3 Boundary value problems for elliptic equations
IFREE — indicator showing the position of the free segment in the array A.
The parameters in the common block /SB5/ specify the method of setting the
system coefficients in the input array A. A given value IDEFAULT = 0 indicates that
the coefficients in the array appear in the order adopted in the subroutine SBAND5.
Otherwise, allocation of coefficients must be specified by parameters in the common
block /SB5/.
Parameters in the common block /CONTROL/ of the subroutine SBAND5:
IREPT — indicator of the necessity to perform actions that must be executed fol-
lowing the first call for the subroutine SBAND5 with the given matrix; the user must
set the value IREPT = 0 prior to the first call with the given matrix, and the sub-
routine SBAND5, in its turn, assigns the value IREPT = 1 to this variable; to solve
a system with the same matrix but with another right-hand side, the user must call
for SBAND5 with newly set values of Y, F but with the same values of A;
NITER — the number of iterations at the output.
Description of data structure and an estimate of required memory capac-
ity. The data structure in the subroutine SBAND5 obeys the concept of through-
programming for all operations used to treat matrices and vectors. This concept con-
sists in the possibility to program all operations in one cycle, without specially treating
vector and matrix components corresponding to “incomplete” rows of the matrix (in
the case of interest, to first L and to last L rows, in which, in turn, the first and last rows
would have necessitated special consideration). In the difference-equation-on-grid in-
terpretation, this implies treating all mesh points as inner nodes. This concept makes
the program code more concise and easy to read, with each linear or matrix numerical
operation realized in one cycle.
In the description of the order of setting the coefficients in the input array A it will
be indicated which components in the subroutine SBAND5 are recorded as zeros. The
common block /SB5/ provides the user with freedom in setting the coefficients. It is
necessary that the coefficients be allocated in the diagonal-by-diagonal manner using
one and the same ordering method. It must also be guaranteed that, in writing zeros,
the values in other diagonals within the matrix remained unchanged.
Setting IDEFAULT = 0 at the input, the user can omit setting of all other values
in the common block /SB5/. In the latter case, the input array A must contain in the
first 3
*
N components the following values:
A(I), I = 1,2,...,N — coefficients A0;
A(I1R+I), I1R = N, I = 1,2,...,N-1 — coefficients A1R within the
matrix, the values A(I1R+N) = 0 being assigned;
A(I2R+I), I2R = 2
*
N, I = 1,2,...,N - L — coefficients A2R
within the matrix, the values A(I2R+I) = 0, I = N-L+1, N-L+2,...,N
being assigned.
The coefficients A0 must always be allocated in first components of the array A.
The coefficients in other diagonals can be recorded as arbitrary components of A.
In the latter case it is necessary, however, in the inversion to preset some nonzero