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
- LUF(25) = Integer array.
File attributes for the factored matrix. - LUB(25) = Integer array.
File attributes for the right-hand side vectors. This parameter is not used if ISKIP=1. - LUX(25) = Integer array.
File attributes for the file where solution vectors are to be written. This can be the same parameter as LUB to overlay the solution vectors on the right-hand side vectors. If the parameter ISKIP=1, LUX specifies the file containing reduced vectors. - NUMRHS = Integer.
Number of right-hand side vectors. - ISKIP = Integer.
Operations to skip.
The following options are available:- 0
Perform forward reduction, diagonal scaling (symmetric) and back substitution. - 1
Skip forward reduction and diagonal scaling, perform back substitution. - 2
Perform forward reduction and diagonal scaling, skip back substitution.
- 0
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.