To generate a set of global equation numbers based on the wavefront order and compute the profile vector.






This subroutine performs the following tasks:
  1. Renumbers the equations in wavefront order, as determined by the order of the submatrices on file LUS.
  2. Eliminates equations whose solution value is constrained to zero or equations not used.
  3. Computes the vector NEWNUM(MAXEQ) which relates old equation numbers to new equation numbers.
  4. Updates the submatrix integer file LUS(2) to the new equation numbers.
  5. 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).