#include <Amesos_Mumps.h>
Inheritance diagram for Amesos_Mumps:
Public Member Functions | |
| int | SetUseTranspose (bool UseTranspose) |
| Returns true if MUMPS can handle this matrix shape. | |
| int | ComputeSchurComplement (bool flag, int NumSchurComplementRows, int *SchurComplementRows) |
| Returns the Schur complement matrix as an Epetra_CrsMatrix. | |
| Epetra_CrsMatrix * | GetCrsSchurComplement () |
| Returns the Schur complement in an Epetra_CrsMatrix on host only. | |
| Epetra_SerialDenseMatrix * | GetDenseSchurComplement () |
| Returns the Schur complement as a SerialDenseMatrix (on host only). | |
| bool | UseTranspose () const |
| Returns the current UseTranspose setting. | |
| int | SetParameters (Teuchos::ParameterList &ParameterList) |
| Updates internal variables. | |
| int | SetPrecscaling (double *ColSca, double *RowSca) |
| Set prescaling. | |
| int | SetRowScaling (double *RowSca) |
| int | SetColScaling (double *ColSca) |
| int | SetOrdering (int *PermIn) |
| Set ordering. | |
| int | SetMaxis (int Maxis) |
| int | SetMaxs (int Maxs) |
| double * | GetRINFO () |
| Get the pointer to the RINFO array (defined on all processes). | |
| int * | GetINFO () |
| Get the pointer to the INFO array (defined on all processes). | |
| double * | GetRINFOG () |
| Get the pointer to the RINFOG array (defined on host only). | |
| int * | GetINFOG () |
| Get the pointer to the INFOG array (defined on host only). | |
| int | SetICNTL (int *ictnl) |
| Copy the input array into the internally stored ICNTL array. | |
| int | SetICNTL (int pos, int value) |
| Set ICNTL[pos] to value. pos is expressed in FORTRAN style (starting from 1). | |
| int | SetCNTL (double *ctnl) |
| Copy the input array into the internally stored CNTL array. | |
| int | SetCNTL (int pos, double value) |
| Set CNTL[pos] to value. pos is expressed in FORTRAN style (starting from 1). | |
| void | PrintTiming () |
| Print timing information. | |
| void | PrintStatus () |
| Print information about the factorization and solution phases. | |
| void | SetUseMpiCommSelf () |
Constructor methods | |
| Amesos_Mumps (const Epetra_LinearProblem &LinearProblem) | |
| Amesos_Mumps Constructor. | |
| ~Amesos_Mumps (void) | |
| Amesos_Mumps Destructor. | |
Mathematical functions. | |
| int | SymbolicFactorization () |
| Performs SymbolicFactorization on the matrix A. | |
| int | NumericFactorization () |
| Performs NumericFactorization on the matrix A. | |
| int | Solve () |
| Solves A X = B (or AT x = B). | |
| void | Destroy () |
Protected Member Functions | |
| int | ConvertToTriplet () |
| int | ConvertToTripletValues () |
| int | PerformSymbolicFactorization () |
| int | PerformNumericFactorization () |
| void | CheckError () |
| void | CheckParameters () |
| void | SetICNTLandCNTL () |
| void | RedistributeMatrix (const int NumProcs) |
| void | RedistributeMatrixValues (const int NumProcs) |
Protected Attributes | |
| bool | SymbolicFactorizationOK_ |
| bool | NumericFactorizationOK_ |
| bool | IsConvertToTripletOK_ |
| bool | IsComputeSchurComplementOK_ |
| bool | UseMpiCommSelf_ |
| DMUMPS_STRUC_C | MDS |
| Epetra_IntSerialDenseVector * | Row |
| Epetra_IntSerialDenseVector * | Col |
| Epetra_SerialDenseVector * | Val |
| int | MyPID |
| int | numentries_ |
| int | NumGlobalElements_ |
| bool | KeepMatrixDistributed_ |
| int | MaxProcs_ |
| int | MaxProcsInputMatrix_ |
| const Epetra_Map * | Map_ |
| int | NumMUMPSNonzeros_ |
| int | NumMyMUMPSNonzeros_ |
| bool | UseTranspose_ |
| bool | AddDiagElement_ |
| double | AddToDiag_ |
| bool | PrintTiming_ |
| bool | PrintStatus_ |
| bool | ComputeVectorNorms_ |
| bool | ComputeTrueResidual_ |
| int | MatrixProperty_ |
| double | Threshold_ |
| int | icntl_ [40] |
| double | cntl_ [5] |
| double * | RowSca_ |
| double * | ColSca_ |
| int * | PermIn_ |
| int | Maxis_ |
| int | Maxs_ |
| int | NumSchurComplementRows_ |
| int * | SchurComplementRows_ |
| Epetra_CrsMatrix * | CrsSchurComplement_ |
| Epetra_SerialDenseMatrix * | DenseSchurComplement_ |
| int | verbose_ |
| int | debug_ |
| EpetraExt_Redistor * | Redistor_ |
| Epetra_RowMatrix * | OldMatrix_ |
| Epetra_MultiVector * | TargetVector_ |
| double | ConTime_ |
| double | SymTime_ |
| double | NumTime_ |
| double | SolTime_ |
| double | VecTime_ |
| double | MatTime_ |
| int | NumSymbolicFact_ |
| int | NumNumericFact_ |
| int | NumSolve_ |
| Epetra_Time | Time |
Amesos_Mumps will solve a linear systems of equations: A X = B using Epetra objects and the Mumps solver library, where A is an Epetra_RowMatrix and X and B are Epetra_MultiVector objects.
Mumps execution can be tuned through a variety of parameters. Amesos_Mumps.h allows control of these parameters through the following named parameters, ignoring parameters with names that it does not recognize. Where possible, the parameters are common to all direct solvers (although some may ignore them). However, some parameters, in particular tuning parameters, are unique to each solver.
MUMPS will not perform column permutation on a matrix provided in distributed form. Amesos_Mumps will match this, allowing column permutation only if the matrix is provided in serial form. This is unfortunate because it is an exception to the general rule that the capability (given adequate memory) of any class implementing the Amesos_BaseSolver base class does not depend on the distribution of the input matrix. However, neither of the other options are attractive. Coalescing the matrix to a single process independent of whether column permutation is requested unnecessarily limits the size problem that can be solved. Coalescing the matrix to a single process only when column permutation is requested would cause some problems to run out of memory when column permutation is requested.
This class should be used with MUMPS 4.3 or 4.3.1 (never tested with older versions of MUMPS, and developed with 4.3.1).
|
|
Amesos_Mumps Constructor. Creates an Amesos_Mumps instance, using an Epetra_LinearProblem, passing in an already-defined Epetra_LinearProblem object. Note: The operator in LinearProblem must be an Epetra_RowMatrix. |
|
|
Amesos_Mumps Destructor. Completely deletes an Amesos_Mumps object. |
|
||||||||||||||||
|
Returns the Schur complement matrix as an Epetra_CrsMatrix.
Returns the (dense) Schur complement matrix as an Epetra_CrsMatrix. This matrix is defined on all the processes in the Epetra Communicator. However, it has rows on the host process only. If flag : if |
|
|
Returns the Schur complement in an Epetra_CrsMatrix on host only. Returns the Schur complement in an Epetra_CrsMatrix on host only. Note that no checks are performed to see whether this action is legal or not (that is, if the call comes after the solver has been invocated). Epetra_CrsMatrix must be freed by the user! |
|
|
Returns the Schur complement as a SerialDenseMatrix (on host only). Returns the Schur complement in an Epetra_SerialDenseMatrix on host only. Note that no checks are performed to see whether this action is legal or not (that is, if the call comes after the solver has been invocated). Epetra_SerialDenseMatrix must be freed by the user! |
|
|
Performs NumericFactorization on the matrix A. In addition to performing numeric factorization (and symbolic factorization if necessary) on the matrix A, the call to NumericFactorization() implies that no change will be made to the underlying matrix without a subsequent call to NumericFactorization(). preconditions:
postconditions:
Implements Amesos_BaseSolver. |
|
|
Set ordering.
Use integer vectors of size N (global dimension of the matrix) as given ordering. |
|
|
Updates internal variables. <br >Preconditions:
<br >Postconditions:
Implements Amesos_BaseSolver. |
|
||||||||||||
|
Set prescaling.
Use double precision vectors of size N (global dimension of the matrix) as scaling for columns and rows. |
|
|
Returns true if MUMPS can handle this matrix shape. Returns true if the matrix shape is one that MUMPS can handle. MUMPS only works with square matrices. Implements Amesos_BaseSolver. |
|
|
Solves A X = B (or AT x = B). preconditions:
postconditions:
Implements Amesos_BaseSolver. |
|
|
Performs SymbolicFactorization on the matrix A. In addition to performing symbolic factorization on the matrix A, the call to SymbolicFactorization() implies that no change will be made to the non-zero structure of the underlying matrix without a subsequent call to SymbolicFactorization(). preconditions:
postconditions:
Implements Amesos_BaseSolver. |
1.3.9.1