45 #ifndef AMESOS2_STRUMPACK_DECL_HPP
46 #define AMESOS2_STRUMPACK_DECL_HPP
49 #include "Amesos2_SolverCore.hpp"
52 #include "StrumpackSparseSolverMPIDist.hpp"
54 #include "StrumpackSparseSolver.hpp"
69 template <
class Matrix,
84 typedef Matrix matrix_type;
85 typedef Vector vector_type;
88 typedef typename strum_type::scalar_type scalar_type;
89 typedef typename strum_type::local_ordinal_type local_ordinal_type;
90 typedef typename strum_type::global_ordinal_type global_ordinal_type;
91 typedef typename strum_type::global_size_type global_size_type;
92 typedef typename strum_type::node_type node_type;
94 typedef Kokkos::DefaultHostExecutionSpace HostExecSpaceType;
95 typedef Kokkos::View<global_ordinal_type*, HostExecSpaceType> host_ordinal_type_array;
96 typedef Kokkos::View<scalar_type*, HostExecSpaceType> host_value_type_array;
108 Teuchos::RCP<Vector> X,
109 Teuchos::RCP<const Vector> B);
157 int
solve_impl(const Teuchos::Ptr<MultiVecAdapter<Vector> > X,
158 const Teuchos::Ptr<const MultiVecAdapter<Vector> > B) const;
203 const Teuchos::RCP<Teuchos::ParameterList> & parameterList );
232 Teuchos::RCP<strumpack::StrumpackSparseSolverMPIDist<scalar_type,global_ordinal_type>> sp_;
234 Teuchos::RCP<strumpack::StrumpackSparseSolver<scalar_type,global_ordinal_type>> sp_;
246 mutable Teuchos::Array<scalar_type> bvals_;
248 mutable Teuchos::Array<scalar_type> xvals_;
251 Teuchos::RCP<const Tpetra::Map<local_ordinal_type,
254 node_type> > strumpack_rowmap_;
262 #if defined(HAVE_TEUCHOS_COMPLEX) && !defined(__clang__)
263 typedef Meta::make_list4<float, double, std::complex<float>, std::complex<double>> supported_scalars;
265 typedef Meta::make_list2<float, double> supported_scalars;
271 #endif // AMESOS2_STRUMPACK_DECL_HPP
Amesos2::SolverCore: A templated interface for interaction with third-party direct sparse solvers...
Definition: Amesos2_SolverCore_decl.hpp:105
host_ordinal_type_array colind_view_
Stores the row indices of the nonzero entries.
Definition: Amesos2_STRUMPACK_decl.hpp:242
int preOrdering_impl()
Performs pre-ordering on the matrix to increase efficiency.
Definition: Amesos2_STRUMPACK_def.hpp:136
void setParameters_impl(const Teuchos::RCP< Teuchos::ParameterList > ¶meterList)
Definition: Amesos2_STRUMPACK_def.hpp:320
int symbolicFactorization_impl()
Perform symbolic factorization of the matrix using STRUMPACK.
Definition: Amesos2_STRUMPACK_def.hpp:156
bool matrixShapeOK_impl() const
Determines whether the shape of the matrix is OK for this solver.
Definition: Amesos2_STRUMPACK_def.hpp:302
Provides traits about solvers.
Definition: Amesos2_SolverTraits.hpp:71
host_ordinal_type_array rowptr_view_
Stores the location in Ai_ and Aval_ that starts row j.
Definition: Amesos2_STRUMPACK_decl.hpp:244
host_value_type_array nzvals_view_
Stores the values of the nonzero entries for STRUMPACK.
Definition: Amesos2_STRUMPACK_decl.hpp:240
bool loadA_impl(EPhase current_phase)
Reads matrix data into internal solver structures.
Definition: Amesos2_STRUMPACK_def.hpp:490
std::string name() const override
Return the name of this solver.
Definition: Amesos2_SolverCore_def.hpp:759
Interface to Amesos2 solver objects.
Definition: Amesos2_Solver_decl.hpp:78
Amesos2 interface to STRUMPACK direct solver and preconditioner.
Definition: Amesos2_STRUMPACK_decl.hpp:71
Provides access to interesting solver traits.
Teuchos::RCP< const Teuchos::ParameterList > getValidParameters_impl() const
Definition: Amesos2_STRUMPACK_def.hpp:377
int solve_impl(const Teuchos::Ptr< MultiVecAdapter< Vector > > X, const Teuchos::Ptr< const MultiVecAdapter< Vector > > B) const
STRUMPACK specific solve.
Definition: Amesos2_STRUMPACK_def.hpp:203
int numericFactorization_impl()
STRUMPACK specific numeric factorization.
Definition: Amesos2_STRUMPACK_def.hpp:181