## PURPOSE

To compute the profile vector from submatrix integer files and optionally impose constraints.## SYNOPSIS

```
CALL FMSPF (LUS, NUMSF, NEWNUM, MAXEQ, LOWEQ, NUMEQ)
```

## INPUT PARAMETERS

- LUS(25,NUMSF) = Integer array.

File attributes for each submatrix file. - NUMSF = Integer.

Number of submatrix files. - NEWNUM(NUMEQ) = Integer array.

Flags constrained equations as follows:

= -1, constrained to a nonzero 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 files LUS(2,i). - MAXEQ = Integer.

Maximum number of equations.

= 0, compute profile vector only. Do not renumber equations to eliminate constraints.

## 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:- Eliminates equations whose solution value is constrained to zero.
- Computes the vector NEWNUM(MAXEQ) which relates old equation numbers to new equation numbers.
- Updates the submatrix integer files LUS(2,i) to the new equation numbers.
- Computes the profile vector LOWEQ(NUMEQ) and new number of equations, NUMEQ.
- The renumbering of equations, steps 1 through 3, may be skipped by specifying a value of 0 for MAXEQ.

This subroutine is intended for finite element programs solving mixed boundary value problems where some of the solution values are constrained to specified values. You first create the submatrix integer and real files using equation numbers that include both free and constrained equations. The NEWNUM(MAXEQ) vector is then created to flag the constrained equations. This subroutine is then called to renumber the equations into a packed global system which eliminates equations whose value is constrained to zero.

Your program must pack the right-hand side vectors to correspond to the new numbering system 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 may be expanded back to the original numbering system using NEWNUM(MAXEQ).