21 #include "libmesh/preconditioner.h" 22 #include "libmesh/eigen_preconditioner.h" 23 #include "libmesh/petsc_preconditioner.h" 24 #include "libmesh/trilinos_preconditioner.h" 25 #include "libmesh/enum_solver_package.h" 26 #include "libmesh/enum_preconditioner_type.h" 49 std::unique_ptr<Preconditioner<T>>
57 switch (solver_package)
60 #ifdef LIBMESH_HAVE_PETSC 63 return std::make_unique<PetscPreconditioner<T>>(comm);
67 #ifdef LIBMESH_TRILINOS_HAVE_EPETRA 69 return std::make_unique<TrilinosPreconditioner<T>>(comm);
72 #ifdef LIBMESH_HAVE_EIGEN 74 return std::make_unique<EigenPreconditioner<T>>(comm);
78 libmesh_error_msg(
"ERROR: Unrecognized solver package: " << solver_package);
The libMesh namespace provides an interface to certain functionality in the library.
This class provides a uniform interface for preconditioners.
void libmesh_ignore(const Args &...)
Preconditioner(const libMesh::Parallel::Communicator &comm)
Constructor.
bool _is_initialized
Flag that tells if init() has been called.
An object whose state is distributed along a set of processors.
SolverPackage
Defines an enum for various linear solver packages.