PURPOSE
To generate a set of global equation numbers based on the wavefront order and compute the profile vector.SYNOPSIS
CALL FMSWF (LUS, NEWNUM, MAXEQ, LOWEQ, NUMEQ)
INPUT PARAMETERS
- LUS(25) = Integer array.
Submatrix File Attributes List for the submatrix file. - NEWNUM(NUMEQ) = Integer array.
Flags constrained equations as follows:
= -1, constrained to a non zero value,
= 0, constrained to a zero value,
= 1, value to be determined.
The equation numbers 1 through MAXEQ must correspond to the equation numbers supplied on the submatrix integer file LUS(2). - MAXEQ = Integer.
Maximum number of equations.
OUTPUT PARAMETERS
- NEWNUM(MAXEQ) = Integer array.
Gives the new equation number I from the old equation number J and flags equation constraint type as follows:I = NEWNUM(J)
I < 0, equation I is constrained to a nonzero value.
I = 0, equation I is constrained to zero,
I > 0, equation I is to be determined. - LOWEQ(NUMEQ) = Integer array.
Profile vector based on the new numbering system. -
NUMEQ = Integer.
New number of equations.
DESCRIPTION:
This subroutine performs the following tasks:- Renumbers the equations in wavefront order, as determined by the order of the submatrices on file LUS.
- Eliminates equations whose solution value is constrained to zero or equations not used.
- Computes the vector NEWNUM(MAXEQ) which relates old equation numbers to new equation numbers.
- Updates the submatrix integer file LUS(2) to the new equation numbers.
- Computes the profile vector LOWEQ(NUMEQ) and new number of equations, NUMEQ.
This subroutine is intended for finite element programs designed to use a "wavefront" equation solver. Your program first creates submatrix integer and real files whose record order is the order in which elements will be added to the wavefront. The equation numbers on the integer file must be unique labels which describe the connectivity between elements but are not necessarily the global equation numbers used by FMS during solution.
Your program then creates the NEWNUM(MAXEQ) array which flags constrained equations and equation numbers not used. This subroutine is then called to generate a packed global system of equation numbers which eliminates unused equations and those whose solution value is constrained to zero. This subroutine numbers the equations in the order that they may be eliminated during solution, which results in the same number of arithmetic operations used by wavefront equation solvers.
Your program must reorder the right-hand side vector according to the returned values in NEWNUM(MAXEQ). In addition, nonzero constraints must be imposed, usually by scaling the diagonal and right-hand side by a big number, BIGNUM. After the solution is obtained, the solution values may be placed back in the original numbering system using NEWNUM(MAXEQ).