21 #include "libmesh/preconditioner.h"
22 #include "libmesh/auto_ptr.h"
23 #include "libmesh/eigen_preconditioner.h"
24 #include "libmesh/petsc_preconditioner.h"
25 #include "libmesh/trilinos_preconditioner.h"
26 #include "libmesh/enum_solver_package.h"
27 #include "libmesh/enum_preconditioner_type.h"
45 std::unique_ptr<Preconditioner<T>>
53 switch (solver_package)
56 #ifdef LIBMESH_HAVE_PETSC
59 return libmesh_make_unique<PetscPreconditioner<T>>(comm);
63 #ifdef LIBMESH_TRILINOS_HAVE_EPETRA
65 return libmesh_make_unique<TrilinosPreconditioner<T>>(comm);
68 #ifdef LIBMESH_HAVE_EIGEN
70 return libmesh_make_unique<EigenPreconditioner<T>>(comm);
74 libmesh_error_msg(
"ERROR: Unrecognized solver package: " << solver_package);
80 #ifdef LIBMESH_ENABLE_DEPRECATED
91 std::unique_ptr<Preconditioner<T>> ptr =