Amesos Package Browser (Single Doxygen Collection)  Development
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Private Attributes | List of all members
Amesos_Umfpack Class Reference

Class Amesos_Umfpack: An object-oriented wrapper for UMFPACK. More...

#include <Amesos_Umfpack.h>

Inheritance diagram for Amesos_Umfpack:
Inheritance graph
[legend]

Private Attributes

void * Symbolic
 Umfpack internal opaque object. More...
 
void * Numeric
 Umfpack internal opaque object. More...
 
std::vector< int > Ap
 Ap, Ai, Aval form the compressed row storage used by Umfpack. More...
 
std::vector< int > Ai
 
std::vector< double > Aval
 
int IsLocal_
 1 if Problem_->GetOperator() is stored entirely on process 0 More...
 
int numentries_
 Number of non-zero entries in Problem_->GetOperator() More...
 
int NumGlobalElements_
 Number of rows and columns in the Problem_->GetOperator() More...
 
Teuchos::RCP< Epetra_MapSerialMap_
 Points to a Serial Map (unused if IsLocal == 1 ) More...
 
Epetra_RowMatrixSerialMatrix_
 Points to a Serial Copy of A. More...
 
Teuchos::RCP< Epetra_CrsMatrixSerialCrsMatrixA_
 
bool UseTranspose_
 If true, solve the problem with the transpose. More...
 
const Epetra_LinearProblemProblem_
 Pointer to the linear problem to solve. More...
 
double Rcond_
 Reciprocal condition number estimate. More...
 
bool RcondValidOnAllProcs_
 
Teuchos::RCP< Epetra_ImportImportToSerial_
 Importer from distributed to serial (all rows on process 0). More...
 
int MtxConvTime_
 Quick access pointers to internal timer data. More...
 
int MtxRedistTime_
 
int VecRedistTime_
 
int SymFactTime_
 
int NumFactTime_
 
int SolveTime_
 
int OverheadTime_
 
- Private Attributes inherited from Amesos_Control
double AddToDiag_
 Add this value to the diagonal. More...
 
bool refactorize_
 
double rcond_threshold_
 If error is greater than this value, perform symbolic and numeric factorization with full partial pivoting. More...
 
int ScaleMethod_
 
bool AddZeroToDiag_
 Adds zero to diagonal of redistributed matrix (some solvers choke on a matrix with a partly empty diag) More...
 
int MatrixProperty_
 Set the matrix property. More...
 
int MaxProcesses_
 
bool Reindex_
 If true, the Amesos class should reindex the matrix to standard indexing (i.e. More...
 
- Private Attributes inherited from Amesos_Status
bool IsSymbolicFactorizationOK_
 If true, SymbolicFactorization() has been successfully called. More...
 
bool IsNumericFactorizationOK_
 If true, NumericFactorization() has been successfully called. More...
 
bool PrintTiming_
 If true, prints timing information in the destructor. More...
 
bool PrintStatus_
 If true, print additional information in the destructor. More...
 
bool ComputeVectorNorms_
 If true, prints the norms of X and B in Solve(). More...
 
bool ComputeTrueResidual_
 If true, computes the true residual in Solve(). More...
 
int verbose_
 Toggles the output level. More...
 
int debug_
 Sets the level of debug_ output. More...
 
int NumSymbolicFact_
 Number of symbolic factorization phases. More...
 
int NumNumericFact_
 Number of numeric factorization phases. More...
 
int NumSolve_
 Number of solves. More...
 
double Threshold_
 
int MyPID_
 
int NumProcs_
 
 Amesos_Umfpack (const Epetra_LinearProblem &LinearProblem)
 Amesos_Umfpack Constructor. More...
 
 ~Amesos_Umfpack (void)
 Amesos_Umfpack Destructor. More...
 
int SymbolicFactorization ()
 Performs SymbolicFactorization on the matrix A. More...
 
int NumericFactorization ()
 Performs NumericFactorization on the matrix A. More...
 
int Solve ()
 Solves A X = B (or AT x = B) More...
 
const Epetra_LinearProblemGetProblem () const
 Returns the Epetra_LinearProblem. More...
 
bool MatrixShapeOK () const
 Returns true if UMFPACK can handle this matrix shape. More...
 
int SetUseTranspose (bool UseTranspose_in)
 If set true, X will be set to the solution of AT X = B (not A X = B) More...
 
bool UseTranspose () const
 Returns the current UseTranspose setting. More...
 
const Epetra_CommComm () const
 Returns a pointer to the Epetra_Comm communicator associated with this operator. More...
 
double GetRcond () const
 Returns an estimate of the reciprocal of the condition number. More...
 
int SetParameters (Teuchos::ParameterList &ParameterList)
 Updates internal variables. More...
 
int NumSymbolicFact () const
 Returns the number of symbolic factorizations performed by this object. More...
 
int NumNumericFact () const
 Returns the number of numeric factorizations performed by this object. More...
 
int NumSolve () const
 Returns the number of solves performed by this object. More...
 
void PrintTiming () const
 Prints timing information. More...
 
void PrintStatus () const
 Prints information about the factorization and solution phases. More...
 
void GetTiming (Teuchos::ParameterList &TimingParameterList) const
 Extracts timing information from the current solver and places it in the parameter list. More...
 
Epetra_RowMatrixMatrix ()
 Returns a pointer to the linear system matrix. More...
 
int ConvertToSerial (const bool FirstTime)
 Converts matrix to a serial Epetra_CrsMatrix. More...
 
int ConvertToUmfpackCRS ()
 
int PerformSymbolicFactorization ()
 
int PerformNumericFactorization ()
 
const Epetra_ImportImporter () const
 
const Epetra_MapSerialMap () const
 
const Epetra_CrsMatrixSerialCrsMatrix () const
 
Epetra_CrsMatrixSerialCrsMatrix ()
 

Additional Inherited Members

- Public Member Functions inherited from Amesos_BaseSolver
virtual ~Amesos_BaseSolver ()
 Destructor. More...
 
virtual void setParameterList (Teuchos::RCP< Teuchos::ParameterList > const &paramList)
 Redefined from Teuchos::ParameterListAcceptor (Does Not Work) More...
 
virtual Teuchos::RCP
< Teuchos::ParameterList
getNonconstParameterList ()
 This is an empty stub. More...
 
virtual Teuchos::RCP
< Teuchos::ParameterList
unsetParameterList ()
 This is an empty stub. More...
 
- Public Member Functions inherited from Teuchos::ParameterListAcceptor
virtual RCP< const ParameterListgetParameterList () const
 
virtual RCP< const ParameterListgetValidParameters () const
 
- Private Member Functions inherited from Amesos_Time
 Amesos_Time ()
 Default constructor to create size timers. More...
 
virtual ~Amesos_Time ()
 Default destructor. More...
 
void CreateTimer (const Epetra_Comm &Comm, int size=1)
 Initializes the Time object. More...
 
void ResetTimer (const int timerID=0)
 Resets the internally stored time object. More...
 
int AddTime (const std::string what, int dataID, const int timerID=0)
 Adds to field what the time elapsed since last call to ResetTimer(). More...
 
double GetTime (const std::string what) const
 Gets the cumulative time using the string. More...
 
double GetTime (const int dataID) const
 Gets the cumulative time using the dataID. More...
 
void GetTiming (Teuchos::ParameterList &list) const
 Load up the current timing information into the parameter list. More...
 
- Private Member Functions inherited from Amesos_NoCopiable
 Amesos_NoCopiable ()
 Default constructor. More...
 
 ~Amesos_NoCopiable ()
 Default destructor. More...
 
- Private Member Functions inherited from Amesos_Utils
 Amesos_Utils ()
 Default constructor. More...
 
 ~Amesos_Utils ()
 Default destructor. More...
 
void ComputeTrueResidual (const Epetra_RowMatrix &Matrix, const Epetra_MultiVector &X, const Epetra_MultiVector &B, const bool UseTranspose, const std::string prefix) const
 Computes the true residual, B - Matrix * X, and prints the results. More...
 
void ComputeVectorNorms (const Epetra_MultiVector &X, const Epetra_MultiVector &B, const std::string prefix) const
 Computes the norms of X and B and print the results. More...
 
void PrintLine () const
 Prints line on std::cout. More...
 
void SetMaxProcesses (int &MaxProcesses, const Epetra_RowMatrix &A)
 
- Private Member Functions inherited from Amesos_Control
 Amesos_Control ()
 Default constructor. More...
 
 ~Amesos_Control ()
 Default destructor. More...
 
void SetControlParameters (const Teuchos::ParameterList &ParameterList)
 
- Private Member Functions inherited from Amesos_Status
 Amesos_Status ()
 Default constructor. More...
 
 ~Amesos_Status ()
 Default destructor. More...
 
void SetStatusParameters (const Teuchos::ParameterList &ParameterList)
 

Detailed Description

Class Amesos_Umfpack: An object-oriented wrapper for UMFPACK.

Amesos_Umfpack will solve a linear systems of equations: A X = B using Epetra objects and the UMFPACK solver library, where A is an Epetra_RowMatrix and X and B are Epetra_MultiVector objects.

Definition at line 76 of file Amesos_Umfpack.h.

Constructor & Destructor Documentation

Amesos_Umfpack::Amesos_Umfpack ( const Epetra_LinearProblem LinearProblem)

Amesos_Umfpack Constructor.

Creates an Amesos_Umfpack instance, using an Epetra_LinearProblem, passing in an already-defined Epetra_LinearProblem object.

Note: The operator in LinearProblem must be an Epetra_RowMatrix.

Definition at line 50 of file Amesos_Umfpack.cpp.

Amesos_Umfpack::~Amesos_Umfpack ( void  )

Amesos_Umfpack Destructor.

Completely deletes an Amesos_Umfpack object.

Definition at line 86 of file Amesos_Umfpack.cpp.

Member Function Documentation

int Amesos_Umfpack::SymbolicFactorization ( )
virtual

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().

<br >Preconditions:

<br >Postconditions:

Returns
Integer error code, set to 0 if successful.

Implements Amesos_BaseSolver.

Definition at line 389 of file Amesos_Umfpack.cpp.

int Amesos_Umfpack::NumericFactorization ( )
virtual

Performs NumericFactorization on the matrix A.

In addition to performing numeric factorization 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().

<br >Preconditions:

  • GetProblem().GetOperator() != 0 (return -1)
  • MatrixShapeOk(GetProblem().GetOperator()) == true (return -6)
  • The non-zero structure of the matrix should not have changed since the last call to SymbolicFactorization(). (return -2 if the number of non-zeros changes) Other changes can have arbitrary consequences.
  • The distribution of the matrix should not have changed since the last call to SymbolicFactorization()
  • The matrix should be indexed from 0 to n-1, unless the parameter "Reindex" was set to "true" prior to the call to SymbolicFactorization(). (return -3 - if caught)
  • The paremeter "Reindex" should not be set to "true" except on CrsMatrices. (return -4)
  • The paremeter "Reindex" should not be set to "true" unless Amesos was built with EpetraExt, i.e. with –enable-epetraext on the configure line. (return -4)
  • Internal errors retur -5.

<br >Postconditions:

  • Numeric Factorization will be performed (or marked to be performed) allowing Solve() to be performed correctly despite a potential change in in the matrix values (though not in the non-zero structure).
Returns
Integer error code, set to 0 if successful.

Implements Amesos_BaseSolver.

Definition at line 429 of file Amesos_Umfpack.cpp.

int Amesos_Umfpack::Solve ( )
virtual

Solves A X = B (or AT x = B)

<br >Preconditions:

<br >Postconditions:

  • X will be set such that A X = B (or AT X = B), within the limits of the accuracy of the underlying solver.
Returns
Integer error code, set to 0 if successful.

Implements Amesos_BaseSolver.

Definition at line 469 of file Amesos_Umfpack.cpp.

const Epetra_LinearProblem* Amesos_Umfpack::GetProblem ( ) const
inlinevirtual

Returns the Epetra_LinearProblem.

Warning! Do not call return->SetOperator(...) to attempt to change the Epetra_Operator object (even if the new matrix has the same structure). This new operator matrix will be ignored!

Implements Amesos_BaseSolver.

Definition at line 113 of file Amesos_Umfpack.h.

bool Amesos_Umfpack::MatrixShapeOK ( ) const
virtual

Returns true if UMFPACK can handle this matrix shape.

Returns true if the matrix shape is one that UMFPACK can handle. UMFPACK only works with square matrices.

Implements Amesos_BaseSolver.

Definition at line 378 of file Amesos_Umfpack.cpp.

int Amesos_Umfpack::SetUseTranspose ( bool  UseTranspose)
inlinevirtual

If set true, X will be set to the solution of AT X = B (not A X = B)

If the implementation of this interface does not support transpose use, this method should return a value of -1.

<br >Preconditions:

<br >Postconditions:

  • The next factorization and solve will be performed with the new value of UseTranspose.
Parameters
UseTranspose– (In) If true, solve AT X = B, otherwise solve A X = B.
Returns
Integer error code, set to 0 if successful. Set to -1 if this implementation does not support transpose.

Implements Amesos_BaseSolver.

Definition at line 121 of file Amesos_Umfpack.h.

bool Amesos_Umfpack::UseTranspose ( ) const
inlinevirtual

Returns the current UseTranspose setting.

Implements Amesos_BaseSolver.

Definition at line 123 of file Amesos_Umfpack.h.

const Epetra_Comm& Amesos_Umfpack::Comm ( ) const
inlinevirtual

Returns a pointer to the Epetra_Comm communicator associated with this operator.

Implements Amesos_BaseSolver.

Definition at line 125 of file Amesos_Umfpack.h.

double Amesos_Umfpack::GetRcond ( ) const

Returns an estimate of the reciprocal of the condition number.

Definition at line 368 of file Amesos_Umfpack.cpp.

int Amesos_Umfpack::SetParameters ( Teuchos::ParameterList ParameterList)
virtual

Updates internal variables.

  <br \>Preconditions:<ul>
  <li>None.</li>
  </ul>

  <br \>Postconditions:<ul> 
  <li>Internal variables controlling the factorization and solve will
  be updated and take effect on all subseuent calls to NumericFactorization() 
  and Solve().</li>
  <li>All parameters whose value are to differ from the default values must 

be included in ParameterList. Parameters not specified in ParameterList revert to their default values.

Returns
Integer error code, set to 0 if successful.

Implements Amesos_BaseSolver.

Definition at line 236 of file Amesos_Umfpack.cpp.

int Amesos_Umfpack::NumSymbolicFact ( ) const
inlinevirtual

Returns the number of symbolic factorizations performed by this object.

Implements Amesos_BaseSolver.

Definition at line 138 of file Amesos_Umfpack.h.

int Amesos_Umfpack::NumNumericFact ( ) const
inlinevirtual

Returns the number of numeric factorizations performed by this object.

Implements Amesos_BaseSolver.

Definition at line 141 of file Amesos_Umfpack.h.

int Amesos_Umfpack::NumSolve ( ) const
inlinevirtual

Returns the number of solves performed by this object.

Implements Amesos_BaseSolver.

Definition at line 144 of file Amesos_Umfpack.h.

void Amesos_Umfpack::PrintTiming ( ) const
virtual

Prints timing information.

Implements Amesos_BaseSolver.

Definition at line 605 of file Amesos_Umfpack.cpp.

void Amesos_Umfpack::PrintStatus ( ) const
virtual

Prints information about the factorization and solution phases.

Implements Amesos_BaseSolver.

Definition at line 585 of file Amesos_Umfpack.cpp.

void Amesos_Umfpack::GetTiming ( Teuchos::ParameterList TimingParameterList) const
inlinevirtual

Extracts timing information from the current solver and places it in the parameter list.

Reimplemented from Amesos_BaseSolver.

Definition at line 153 of file Amesos_Umfpack.h.

Epetra_RowMatrix* Amesos_Umfpack::Matrix ( )
inlineprivate

Returns a pointer to the linear system matrix.

Definition at line 161 of file Amesos_Umfpack.h.

int Amesos_Umfpack::ConvertToSerial ( const bool  FirstTime)
private

Converts matrix to a serial Epetra_CrsMatrix.

Definition at line 101 of file Amesos_Umfpack.cpp.

int Amesos_Umfpack::ConvertToUmfpackCRS ( )
private

Definition at line 181 of file Amesos_Umfpack.cpp.

int Amesos_Umfpack::PerformSymbolicFactorization ( )
private

Definition at line 251 of file Amesos_Umfpack.cpp.

int Amesos_Umfpack::PerformNumericFactorization ( )
private

Definition at line 286 of file Amesos_Umfpack.cpp.

const Epetra_Import& Amesos_Umfpack::Importer ( ) const
inlineprivate

Definition at line 207 of file Amesos_Umfpack.h.

const Epetra_Map& Amesos_Umfpack::SerialMap ( ) const
inlineprivate

Definition at line 212 of file Amesos_Umfpack.h.

const Epetra_CrsMatrix& Amesos_Umfpack::SerialCrsMatrix ( ) const
inlineprivate

Definition at line 217 of file Amesos_Umfpack.h.

Epetra_CrsMatrix& Amesos_Umfpack::SerialCrsMatrix ( )
inlineprivate

Definition at line 222 of file Amesos_Umfpack.h.

Member Data Documentation

void* Amesos_Umfpack::Symbolic
private

Umfpack internal opaque object.

Definition at line 230 of file Amesos_Umfpack.h.

void* Amesos_Umfpack::Numeric
private

Umfpack internal opaque object.

Definition at line 232 of file Amesos_Umfpack.h.

std::vector<int> Amesos_Umfpack::Ap
private

Ap, Ai, Aval form the compressed row storage used by Umfpack.

Definition at line 235 of file Amesos_Umfpack.h.

std::vector<int> Amesos_Umfpack::Ai
private

Definition at line 236 of file Amesos_Umfpack.h.

std::vector<double> Amesos_Umfpack::Aval
private

Definition at line 237 of file Amesos_Umfpack.h.

int Amesos_Umfpack::IsLocal_
private

1 if Problem_->GetOperator() is stored entirely on process 0

Definition at line 240 of file Amesos_Umfpack.h.

int Amesos_Umfpack::numentries_
private

Number of non-zero entries in Problem_->GetOperator()

Definition at line 242 of file Amesos_Umfpack.h.

int Amesos_Umfpack::NumGlobalElements_
private

Number of rows and columns in the Problem_->GetOperator()

Definition at line 244 of file Amesos_Umfpack.h.

Teuchos::RCP<Epetra_Map> Amesos_Umfpack::SerialMap_
private

Points to a Serial Map (unused if IsLocal == 1 )

Definition at line 247 of file Amesos_Umfpack.h.

Epetra_RowMatrix* Amesos_Umfpack::SerialMatrix_
private

Points to a Serial Copy of A.

Definition at line 252 of file Amesos_Umfpack.h.

Teuchos::RCP<Epetra_CrsMatrix> Amesos_Umfpack::SerialCrsMatrixA_
private

Definition at line 254 of file Amesos_Umfpack.h.

bool Amesos_Umfpack::UseTranspose_
private

If true, solve the problem with the transpose.

Definition at line 257 of file Amesos_Umfpack.h.

const Epetra_LinearProblem* Amesos_Umfpack::Problem_
private

Pointer to the linear problem to solve.

Definition at line 259 of file Amesos_Umfpack.h.

double Amesos_Umfpack::Rcond_
mutableprivate

Reciprocal condition number estimate.

Definition at line 261 of file Amesos_Umfpack.h.

bool Amesos_Umfpack::RcondValidOnAllProcs_
mutableprivate

Definition at line 263 of file Amesos_Umfpack.h.

Teuchos::RCP<Epetra_Import> Amesos_Umfpack::ImportToSerial_
private

Importer from distributed to serial (all rows on process 0).

Definition at line 265 of file Amesos_Umfpack.h.

int Amesos_Umfpack::MtxConvTime_
private

Quick access pointers to internal timer data.

Definition at line 268 of file Amesos_Umfpack.h.

int Amesos_Umfpack::MtxRedistTime_
private

Definition at line 268 of file Amesos_Umfpack.h.

int Amesos_Umfpack::VecRedistTime_
private

Definition at line 268 of file Amesos_Umfpack.h.

int Amesos_Umfpack::SymFactTime_
private

Definition at line 269 of file Amesos_Umfpack.h.

int Amesos_Umfpack::NumFactTime_
private

Definition at line 269 of file Amesos_Umfpack.h.

int Amesos_Umfpack::SolveTime_
private

Definition at line 269 of file Amesos_Umfpack.h.

int Amesos_Umfpack::OverheadTime_
private

Definition at line 269 of file Amesos_Umfpack.h.


The documentation for this class was generated from the following files: