PURPOSE

Solve a system of equations having one or more right-hand side vectors using a matrix [A] that has previously been factored.

SYNOPSIS

CALL RSDS (LUF, LUB, LUX, NUMRHS, ISKIP)
CALL RNDS (LUF, LUB, LUX, NUMRHS, ISKIP)
CALL CHDS (LUF, LUB, LUX, NUMRHS, ISKIP)
CALL CSDS (LUF, LUB, LUX, NUMRHS, ISKIP)
CALL CNDS (LUF, LUB, LUX, NUMRHS, ISKIP)

INPUT PARAMETERS

OUTPUT PARAMETERS:

None.

FMS PARAMETERS:

The following FMS Parameters are especially important to this routine:
Parameter Description
IPRA Assembly print code
IPRS Solution print code
NEQSUB First equation of substructure
LUTRAN Solve [A]T{X}={B} instead of [A]{X}={B}
IPBACK Use dot products during back substitution
IALGOR Optional factoring algorithms
MINDIM Minimum dimension to terminate Strassen's algorithm
SAVOPS Number of floating point operations saved

DESCRIPTION:

This subroutine performs forward reduction, diagonal scaling (symmetric), and back substitution on one or more systems of simultaneous equations. The solution uses the triangular and diagonal matrix factors [L], [D], and [U] computed in the factoring subroutine.

The forward reduction process consists of solving the system as follows:

[L]{Y} = {B}

for the intermediate vectors {Y} using the right-hand side vectors {B} and the lower- triangular matrix factor [L]. The same forward reduction calculation is performed for symmetric and nonsymmetric matrices.

For symmetric problems, the second step is to scale the reduced vectors {Y} by the diagonal factor reciprocals [l/D] to obtain the following:

{Z} = [1/D] {Y}

The final step in the solution process is back substitution. For symmetric problems, the system:

[L] T {X} = {Z}

is solved for {X}, while for nonsymmetric problems

[U]{X} = {Y}

is solved for {X}.

This data structures used provide maximum performance when several solution vectors are processed together.

The ISKIP parameter can be used to skip forward reduction, diagonal scaling, or back substitution as shown in the following table:

ISKIP Functions Skipped
0 None
1 Forward Reduction, Diagonal Scaling
2 Back Substitution

When ISKIP = 0, right-hand side vectors are read from the file LUB, and solution vectors are written to the file LUX.

When ISKIP = 1, reduced and scaled (symmetric) vectors are read from the file LUX and solution vectors are written to the file LUX. The file LUB is not used. This option should be selected if forward reduction was performed during factoring or if the solution process is being restarted after substructuring.

When ISKIP = 2, right-hand side vectors are read from the file LUB and reduced and scaled (symmetric) vectors are written to the file LUX. This calculation is equivalent to performing forward reduction during factoring. It is used to halt the solution process after forward reduction when substructuring is being performed.

The FMS substructuring parameter NEQSUB controls where the forward reduction stops and where back substitution begins. When the NEQSUB parameter is used, this subroutine is called the first time with ISKIP=2 to stop the solution after the partial forward reduction and diagonal scaling. After the substructure solution is computed and placed in file LUX, this subroutine is called a second time with ISKIP=1 to complete the solution.