39#ifndef AMESOS_PARAKLETE_H
40#define AMESOS_PARAKLETE_H
49#include "Epetra_LinearProblem.h"
50#include "Epetra_Time.h"
51#include "Epetra_Import.h"
53#include "Epetra_MpiComm.h"
55#include "Epetra_Comm.h"
57#include "Epetra_CrsGraph.h"
58#include "Epetra_CrsMatrix.h"
59#ifdef HAVE_AMESOS_EPETRAEXT
60#include "EpetraExt_Transpose_RowMatrix.h"
89#ifndef DOXYGEN_SHOULD_SKIP_THIS
256 std::vector <long>
Ap;
257 std::vector <long>
Ai;
277#ifdef HAVE_AMESOS_EPETRAEXT
278 Teuchos::RCP<EpetraExt::RowMatrix_Transpose> transposer_;
Amesos_BaseSolver: A pure virtual class for direct solution of real-valued double-precision operators...
Amesos_Control: Container for some control variables.
Amesos_NoCopiable: Simple class to prevent the usage of copy constructor and operator =.
Amesos_Paraklete: A serial, unblocked code ideal for getting started and for very sparse matrices,...
int NumNumericFact() const
Returns the number of numeric factorizations performed by this object.
bool UseTranspose() const
Returns the current UseTranspose setting.
bool MatrixShapeOK() const
Returns true if PARAKLETE can handle this matrix shape.
bool TrustMe_
If true, no checks are made and the matrix is assume to be distributed.
int NumSolve() const
Returns the number of solves performed by this object.
Epetra_MultiVector * SerialX_
std::vector< int > ColIndicesV_
Only used for RowMatrices to extract copies.
int MtxConvTime_
Quick access pointers to internal timing information.
Epetra_MultiVector * StdIndexDomainVector_
int UseDataInPlace_
1 if Problem_->GetOperator() is stored entirely on process 0
Teuchos::RCP< Epetra_MultiVector > SerialXextract_
Serial versions of the LHS and RHS (if necessary)
int numentries_
Number of non-zero entries in Problem_->GetOperator()
std::vector< long > Ap
Ap, Ai, Aval form the compressed row storage used by Paraklete Ai and Aval can point directly into a ...
Epetra_MultiVector * SerialB_
Serial versions of the LHS and RHS (may point to the original vector if serial)
Teuchos::RCP< Epetra_CrsMatrix > SerialCrsMatrixA_
Points to a Serial Copy of A (unused if UseDataInPlace_==1)
Epetra_RowMatrix * SerialMatrix_
Points to a Serial Copy of A.
void PrintStatus() const
Prints information about the factorization and solution phases.
int NumSymbolicFact() const
Returns the number of symbolic factorizations performed by this object.
const Epetra_LinearProblem * GetProblem() const
Get a pointer to the Problem.
int NumericFactorization()
Performs NumericFactorization on the matrix A.
std::vector< double > RowValuesV_
Only used for RowMatrices to extract copies.
Teuchos::RCP< Amesos_StandardIndex > StdIndexDomain_
int NumVectors_
Number of vectors in RHS and LHS.
int PerformSymbolicFactorization()
int PerformNumericFactorization()
double * SerialXBvalues_
Pointer to the actual values in the serial version of X and B.
Teuchos::RCP< Amesos_StandardIndex > StdIndex_
void PrintTiming() const
Prints timing information.
Epetra_CrsMatrix * CrsMatrixA_
Operator converted to a CrsMatrix.
Teuchos::RCP< Amesos_Paraklete_Pimpl > PrivateParakleteData_
Teuchos::RCP< Amesos_StandardIndex > StdIndexRange_
int ConvertToParakleteCRS(bool firsttime)
Teuchos::RCP< Epetra_MultiVector > SerialBextract_
const Epetra_Comm & Comm() const
Returns a pointer to the Epetra_Comm communicator associated with this operator.
int SetUseTranspose(bool UseTranspose_in)
SetUseTranpose()
int Solve()
Solves A X = B (or AT x = B)
int CreateLocalMatrixAndExporters()
const Epetra_LinearProblem * Problem_
Pointer to the linear system problem.
bool UseTranspose_
If true, the transpose of A is used.
Epetra_RowMatrix * StdIndexMatrix_
Points to a Contiguous Copy of A.
~Amesos_Paraklete(void)
Amesos_Paraklete Destructor.
Teuchos::RCP< Epetra_Map > SerialMap_
Points to a Serial Map (unused if UseDataInPlace_ == 1 )
int SymbolicFactorization()
Performs SymbolicFactorization on the matrix A.
void GetTiming(Teuchos::ParameterList &TimingParameterList) const
Extracts timing information from the current solver and places it in the parameter list.
Amesos_Paraklete(const Epetra_LinearProblem &LinearProblem)
Amesos_Paraklete Constructor.
std::vector< double > VecAval
Epetra_MultiVector * StdIndexRangeVector_
Teuchos::RCP< Epetra_Import > ImportDomainToSerial_
int NumGlobalElements_
Number of rows and columns in the Problem_->GetOperator()
Teuchos::RCP< Epetra_Import > ImportRangeToSerial_
Epetra_RowMatrix * RowMatrixA_
Operator converted to a RowMatrix.
int SetParameters(Teuchos::ParameterList &ParameterList)
Updates internal variables.
Teuchos::RCP< Epetra_Import > ImportToSerial_
Importer to process 0.
Amesos_Status: Container for some status variables.
int NumSymbolicFact_
Number of symbolic factorization phases.
int NumSolve_
Number of solves.
int NumNumericFact_
Number of numeric factorization phases.
Amesos_Time: Container for timing information.
void GetTiming(Teuchos::ParameterList &list) const
Load up the current timing information into the parameter list.
Amesos_Utils: Collections of basic utilities.