18#ifndef AMESOS2_SOLVERCORE_DECL_HPP
19#define AMESOS2_SOLVERCORE_DECL_HPP
23#include <Teuchos_RCP.hpp>
24#include <Teuchos_ParameterList.hpp>
26#include "Amesos2_Solver.hpp"
27#include "Amesos2_MatrixTraits.hpp"
28#include "Amesos2_MatrixAdapter_decl.hpp"
29#include "Amesos2_MultiVecAdapter_decl.hpp"
68 template <
template <
class,
class>
class ConcreteSolver,
78 typedef ConcreteSolver<Matrix,Vector> solver_type;
79 typedef Matrix matrix_type;
80 typedef Vector vector_type;
81 typedef typename MatrixAdapter<matrix_type>::scalar_t scalar_type;
82 typedef typename MatrixAdapter<matrix_type>::local_ordinal_t local_ordinal_type;
83 typedef typename MatrixAdapter<matrix_type>::global_ordinal_t global_ordinal_type;
84 typedef typename MatrixAdapter<matrix_type>::global_size_t global_size_type;
85 typedef typename MatrixAdapter<matrix_type>::node_t node_type;
101 Teuchos::RCP<Vector> X,
102 Teuchos::RCP<const Vector> B );
200 void solve()
override;
201 void solve(
const Teuchos::Ptr<Vector> X,
const Teuchos::Ptr<const Vector> B)
const override;
202 void solve(Vector* X,
const Vector* B)
const override;
204 int solve_ir(
const Teuchos::Ptr<Vector> X,
const Teuchos::Ptr<const Vector> B,
205 const int maxNumIters,
const bool verbose)
const;
206 int solve_ir(Vector* X,
const Vector* B,
207 const int maxNumIters,
const bool verbose)
const;
208 int solve_ir(
const int maxNumIters,
const bool verbose);
224 void setA(
const Teuchos::RCP<const Matrix> a,
EPhase keep_phase = CLEAN )
override;
226 void setA(
const Matrix* a,
EPhase keep_phase = CLEAN )
override {
setA(Teuchos::rcp(a), keep_phase); }
270 const Teuchos::RCP<Teuchos::ParameterList> & parameterList )
override;
307 return Teuchos::null;
318 return Teuchos::null;
329 Teuchos::RCP<const Teuchos::Comm<int> >
getComm()
const override
348 void describe(Teuchos::FancyOStream &out,
349 const Teuchos::EVerbosityLevel verbLevel=Teuchos::Describable::verbLevel_default)
const override;
369 Teuchos::FancyOStream &out,
370 const Teuchos::EVerbosityLevel verbLevel)
const override;
381 void getTiming(Teuchos::ParameterList& timingParameterList)
const override;
391 std::string
name()
const override;
421 Teuchos::RCP<const MatrixAdapter<Matrix> >
matrixA_;
478 typedef Tpetra::Map<local_ordinal_type,
481 Teuchos::RCP<const map_type> contig_rowmap_;
482 Teuchos::RCP<const map_type> contig_colmap_;
486 typedef Kokkos::View<local_ordinal_type*, HostExecSpaceType> host_ordinal_type_array;
487 typedef Kokkos::View< scalar_type*, HostExecSpaceType> host_scalar_type_array;
488 host_ordinal_type_array perm_g2l;
489 host_ordinal_type_array recvCountRows, recvDisplRows;
490 host_ordinal_type_array recvCounts, recvDispls;
491 host_ordinal_type_array transpose_map;
492 host_scalar_type_array nzvals_t;
Container class for control variables.
Container class for status variables.
Container class for Timers used with the Amesos2::Solver class.
Enum and other types declarations for Amesos2.
Amesos2::SolverCore: A templated interface for interaction with third-party direct sparse solvers.
Definition Amesos2_SolverCore_decl.hpp:72
Teuchos::RCP< const Teuchos::ParameterList > getValidParameters() const override
Return a const parameter list of all of the valid parameters that this->setParameterList(....
Definition Amesos2_SolverCore_def.hpp:545
super_type & setParameters(const Teuchos::RCP< Teuchos::ParameterList > ¶meterList) override
Set/update internal variables and solver options.
Definition Amesos2_SolverCore_def.hpp:513
SolverCore(const solver_type &rhs)
Do not allow copying of this Solver object.
int nprocs_
Number of process images in the matrix communicator.
Definition Amesos2_SolverCore_decl.hpp:475
void solve() override
Solves (or )
Definition Amesos2_SolverCore_def.hpp:151
void setParameterList(const Teuchos::RCP< Teuchos::ParameterList > ¶meterList)
Set or update internal variables and solver options.
Definition Amesos2_SolverCore_decl.hpp:294
const Vector * getBRaw() override
Returns a raw pointer to the RHS of the linear system.
Definition Amesos2_SolverCore_decl.hpp:242
const Teuchos::RCP< Vector > getX() override
Returns the vector that is the LHS of the linear system.
Definition Amesos2_SolverCore_decl.hpp:232
Vector * getXRaw() override
Returns a raw pointer to the LHS of the linear system.
Definition Amesos2_SolverCore_decl.hpp:234
Teuchos::RCP< const MatrixAdapter< Matrix > > matrixA_
The LHS operator.
Definition Amesos2_SolverCore_decl.hpp:421
int rank_
The MPI rank of this image.
Definition Amesos2_SolverCore_decl.hpp:469
void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel=Teuchos::Describable::verbLevel_default) const override
Definition Amesos2_SolverCore_def.hpp:593
bool root_
If true, then this is the root processor.
Definition Amesos2_SolverCore_decl.hpp:472
void setNnzLU(size_t nnz)
Set the number of non-zero values in the and factors.
Definition Amesos2_SolverCore_decl.hpp:418
std::string description() const override
Returns a short description of this Solver.
Definition Amesos2_SolverCore_def.hpp:583
void getTiming(Teuchos::ParameterList &timingParameterList) const override
Extracts timing information from the current solver.
Definition Amesos2_SolverCore_def.hpp:736
void printTiming(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const override
Prints timing information about the current solver.
Definition Amesos2_SolverCore_def.hpp:654
void setA(const Matrix *a, EPhase keep_phase=CLEAN) override
Sets the matrix A of this solver.
Definition Amesos2_SolverCore_decl.hpp:226
void setB(const Teuchos::RCP< const Vector > b) override
Sets the RHS vector B.
Definition Amesos2_SolverCore_decl.hpp:236
global_size_type rowIndexBase_
Index base of rowmap of matrixA_.
Definition Amesos2_SolverCore_decl.hpp:451
void setX(Vector *x) override
Sets the LHS vector X using a raw pointer.
Definition Amesos2_SolverCore_decl.hpp:230
super_type & preOrdering() override
Pre-orders the matrix A for minimal fill-in.
Definition Amesos2_SolverCore_def.hpp:73
global_size_type globalNumCols_
Number of global columns in matrixA_.
Definition Amesos2_SolverCore_decl.hpp:445
void loadA(EPhase current_phase)
Refresh this solver's internal data about A.
Definition Amesos2_SolverCore_def.hpp:754
Kokkos::DefaultHostExecutionSpace HostExecSpaceType
Communication pattern for gather.
Definition Amesos2_SolverCore_decl.hpp:485
Tpetra::Map< local_ordinal_type, global_ordinal_type, node_type > map_type
Contiguous GID map for reindex.
Definition Amesos2_SolverCore_decl.hpp:480
bool matrix_loaded_
Definition Amesos2_SolverCore_decl.hpp:428
void setX(const Teuchos::RCP< Vector > x) override
Sets the LHS vector X.
Definition Amesos2_SolverCore_decl.hpp:228
Teuchos::RCP< Teuchos::ParameterList > unsetParameterList()
This is an empty stub.
Definition Amesos2_SolverCore_decl.hpp:316
std::string name() const override
Return the name of this solver.
Definition Amesos2_SolverCore_def.hpp:746
Teuchos::RCP< Teuchos::ParameterList > getNonconstParameterList()
This is a empty stub.
Definition Amesos2_SolverCore_decl.hpp:305
const Teuchos::RCP< const Vector > getB() override
Returns the vector that is the RHS of the linear system.
Definition Amesos2_SolverCore_decl.hpp:240
global_size_type columnIndexBase_
Index base of column map of matrixA_.
Definition Amesos2_SolverCore_decl.hpp:454
Status & getStatus() const override
Returns a reference to this solver's internal status object.
Definition Amesos2_SolverCore_decl.hpp:336
void setB(const Vector *b) override
Sets the RHS vector B using a raw pointer.
Definition Amesos2_SolverCore_decl.hpp:238
Timers timers_
Various timing statistics.
Definition Amesos2_SolverCore_decl.hpp:463
Teuchos::RCP< const Teuchos::Comm< int > > getComm() const override
Returns a pointer to the Teuchos::Comm communicator with this operator.
Definition Amesos2_SolverCore_decl.hpp:329
global_size_type globalNumNonZeros_
Number of global non-zero values in matrixA_.
Definition Amesos2_SolverCore_decl.hpp:448
global_size_type globalNumRows_
Number of global rows in matrixA_.
Definition Amesos2_SolverCore_decl.hpp:442
Status status_
Holds status information about a solver.
Definition Amesos2_SolverCore_decl.hpp:457
~SolverCore()
Destructor.
Definition Amesos2_SolverCore_def.hpp:65
Teuchos::RCP< const Vector > multiVecB_
The RHS vector/multi-vector.
Definition Amesos2_SolverCore_decl.hpp:439
Control control_
Parameters for solving.
Definition Amesos2_SolverCore_decl.hpp:460
super_type & symbolicFactorization() override
Performs symbolic factorization on the matrix A.
Definition Amesos2_SolverCore_def.hpp:93
super_type & operator=(const solver_type *rhs)
Do not allow copying of this Solver by assignment.
super_type & numericFactorization() override
Performs numeric factorization on the matrix A.
Definition Amesos2_SolverCore_def.hpp:122
void setA(const Teuchos::RCP< const Matrix > a, EPhase keep_phase=CLEAN) override
Sets the matrix A of this solver.
Definition Amesos2_SolverCore_def.hpp:470
Teuchos::RCP< Vector > multiVecX_
The LHS vector/multi-vector.
Definition Amesos2_SolverCore_decl.hpp:432
bool matrixShapeOK() override
Returns true if the solver can handle this matrix shape.
Definition Amesos2_SolverCore_def.hpp:456
Interface to Amesos2 solver objects.
Definition Amesos2_Solver_decl.hpp:44
Holds internal status data about the owning Amesos2 solver.
Definition Amesos2_Status.hpp:39
size_t lu_nnz_
The number of non-zeros in the factors.
Definition Amesos2_Status.hpp:115
EPhase
Used to indicate a phase in the direct solution.
Definition Amesos2_TypeDecl.hpp:31