20 #ifndef LIBMESH_PRECONDITIONER_H 21 #define LIBMESH_PRECONDITIONER_H 30 #ifdef LIBMESH_FORWARD_DECLARE_ENUMS 49 template <
typename T>
class SparseMatrix;
50 template <
typename T>
class NumericVector;
51 template <
typename T>
class ShellMatrix;
66 class Preconditioner :
public ReferenceCountedObject<Preconditioner<T>>,
86 static std::unique_ptr<Preconditioner<T>>
96 #ifdef LIBMESH_ENABLE_DEPRECATED 97 static Preconditioner<T> *
172 template <
typename T>
179 template <
typename T>
188 template <
typename T>
194 _preconditioner_type = pct;
200 #endif // LIBMESH_PRECONDITIONER_H
PreconditionerType type() const
virtual void apply(const NumericVector< T > &x, NumericVector< T > &y)=0
PreconditionerType _preconditioner_type
Provides a uniform interface to vector storage schemes for different linear algebra libraries...
const Parallel::Communicator & comm() const
void set_matrix(SparseMatrix< Number > &mat)
static Preconditioner< T > * build(const libMesh::Parallel::Communicator &comm, const SolverPackage solver_package=libMesh::default_solver_package())
SolverPackage default_solver_package()
Preconditioner(const libMesh::Parallel::Communicator &comm)
void set_type(const PreconditionerType pct)
static std::unique_ptr< Preconditioner< T > > build_preconditioner(const libMesh::Parallel::Communicator &comm, const SolverPackage solver_package=libMesh::default_solver_package())
virtual ~Preconditioner()
SparseMatrix< T > * _matrix