CALL RSDF (LUA, LUF, LUB, LUX, NUMRHS)
CALL RNDF (LUA, LUF, LUB, LUX, NUMRHS)
CALL CHDF (LUA, LUF, LUB, LUX, NUMRHS)
CALL CSDF (LUA, LUF, LUB, LUX, NUMRHS)
CALL CNDF (LUA, LUF, LUB, LUX, NUMRHS)
| Parameter | Description |
|---|---|
| Input Parameters | |
| IPRF | Factoring print code |
| IPRS | Solution print code |
| MDATAU | Call your subroutine to define or modify matrix data |
| NEQSUB | First equation of substructure |
| MPOSDF | Positive definite flag |
| MZERO | Zero pivot flag |
| NBITSZ | Number of lost bits on diagonal to call zero |
| NBITSP | Number of lost bits on diagonal to print a warning |
| RPIVOT | Value to set zero pivot reciprocal |
| PIVMIN | Absolute value of minimum pivot |
| IALGOR | Optional factoring algorithms |
| MINDIM | Minimum dimension to terminate Strassen's algorithm |
| IPOLLD | CPU synchronization on diagonal elements |
| Output Parameters | |
| NUMSCG | Number of diagonal sign changes during factoring |
| NPIVOT | Number of equations pivoted (SLAB format) |
| CONINV | Inverse condition number |
| ATERMS | Number of terms in matrix |
| AZEROS | Number of zero's in matrix |
| FZEROS | Number of zero's in matrix factor |
| SAVOPS | Number of floating point operations saved |
This subroutine performs the following steps:
| Matrix Format | Data Type | Matrix Symmetry | Subroutines Required |
|---|---|---|---|
| PROFLIE or BLOCK | Real | Symmetric | RSUBLK |
| PROFLIE or BLOCK | Real | Nonsymmetric | RSUBLK, RNUBLK |
| PROFLIE or BLOCK | Complex | Hermitian | CHUBLK |
| PROFLIE or BLOCK | Complex | Symmetric | CSUBLK |
| PROFLIE or BLOCK | Complex | Nonsymmetric | CSUBLK, CNUBLK |
| SLAB | Real | Nonsymmetric | RNUSLB |
| SLAB | Complex | Nonsymmetric | CNUSLB |
If MDATAU has any value other than 2, the matrix is read from file LUA and your subroutine(s) are not called.
[L][D][L]T = [A] for symmetric [A]
or
[L][U] = [A] for nonsymmetric [A].
Here, [L] is a lower triangular matrix with Lii = 1 and Lij = 0 for i<j. The matrix [D] is diagonal with Dij = 0 for i not equal to j. The upper triangular matrix [U] has nonzero values on and above the diagonal with Uij = 0 for i>j. The symbol "T" is used to denote the transpose for symmetric problems.
This subroutine is a subset of the more general assemble- factor subroutines RSDAF, RNDAF, CHDAF, CSDAF, CNDAF. It is equivalent to one of the following calls:
CALL RSDAF (LUA,1.0D0,NUMAI,IDUM,0,0,LUF,LUB,LUX,NUMRHS)
CALL RNDAF (LUA,1.0D0,NUMAI,IDUM,0,0,LUF,LUB,LUX,NUMRHS)
CALL CHDAF (LUA,1.0D0,NUMAI,IDUM,0,0,LUF,LUB,LUX,NUMRHS)
CALL CSDAF (LUA,1.0D0,NUMAI,IDUM,0,0,LUF,LUB,LUX,NUMRHS)
CALL CNDAF (LUA,1.0D0,NUMAI,IDUM,0,0,LUF,LUB,LUX,NUMRHS)
where IDUM is a dummy argument. The value of NUMAI is 0 if MDATAU = 2. Otherwise, NUMAI is 1. If you want to perform matrix factoring as a separate step, you may use this subroutine. Otherwise, you should use the more general assemble-factor subroutine.