43 #ifdef HAVE_IFPACK_AMESOS 46 #ifdef HAVE_IFPACK_HIPS 49 #ifdef HAVE_IFPACK_SUPERLU 57 #include "Teuchos_StringToIntMap.hpp" 58 #include "Epetra_CrsMatrix.h" 60 std::map<std::string, Ifpack_DynamicFactory::builderFunction>
69 = &buildPreconditioner<Ifpack_PointRelaxation, false>;
71 = &buildPreconditioner<Ifpack_PointRelaxation, true>;
73 = &buildPreconditioner<Ifpack_BlockRelaxation<Ifpack_DenseContainer>,
false>;
75 = &buildPreconditioner<Ifpack_BlockRelaxation<Ifpack_DenseContainer>,
true>;
77 = &buildPreconditioner<Ifpack_BlockRelaxation<Ifpack_SparseContainer<Ifpack_ILU> >,
true>;
79 #ifdef HAVE_IFPACK_AMESOS 81 = &buildPreconditioner<Ifpack_BlockRelaxation<Ifpack_SparseContainer<Ifpack_Amesos> >,
true>;
83 = &buildPreconditioner<Ifpack_BlockRelaxation<Ifpack_SparseContainer<Ifpack_Amesos> >,
false>;
85 = &buildPreconditioner<Ifpack_Amesos, false>;
87 = &buildPreconditioner<Ifpack_Amesos, true>;
88 #endif // HAVE_IFPACK_AMESOS 99 #ifdef HAVE_IFPACK_SPARSKIT 101 = &buildPreconditioner<Ifpack_SPARSKIT, true>;
104 #ifdef HAVE_IFPACK_HIPS 106 = &buildPreconditioner<Ifpack_HIPS, true>;
111 = &buildPreconditioner<Ifpack_Hypre, true>;
114 #ifdef HAVE_IFPACK_SUPERLU 116 = &buildPreconditioner<Ifpack_SILU, true>;
120 = &buildPreconditioner<Ifpack_Chebyshev, true>;
122 #ifdef HAVE_IFPACK_EPETRAEXT 124 = &buildPreconditioner<Ifpack_IHSS, true>;
126 = &buildPreconditioner<Ifpack_SORa, true>;
131 #ifdef HAVE_IFPACK_AMESOS 135 #ifdef HAVE_IFPACK_SPARSKIT 138 #ifdef HAVE_IFPACK_HIPS 144 #ifdef HAVE_IFPACK_SUPERLU 148 #ifdef HAVE_IFPACK_EPETRAEXT 160 const std::string PrecName,
173 os <<
"Ifpack_DynamicFactory registered preconditioners: " << std::endl;
174 for (std::map<std::string, builderFunction>::const_iterator it =
PreconditionerMap_.begin();
176 os << it->first << std::endl;
182 Epetra_RowMatrix* Matrix,
184 bool overrideSerialDefault)
186 bool serial = (Matrix->Comm().NumProc() == 1);
188 std::map<std::string, builderFunction>::const_iterator it
193 return f(Matrix, Overlap, serial, overrideSerialDefault);
Ifpack_Preconditioner *(* builderFunction)(Epetra_RowMatrix *, int, bool, bool)
static void Print(std::ostream &os=std::cout)
Prints the current list of registered preconditioners.
static std::map< std::string, builderFunction > PreconditionerMap_
Ifpack_Preconditioner: basic class for preconditioning in Ifpack.
static bool Initialize()
Initializes the static data of the Ifpac_DynamicFactory class.
Ifpack_Preconditioner * Create(const std::string PrecType, Epetra_RowMatrix *Matrix, const int overlap=0, bool overrideSerialDefault=false)
Creates an instance of Ifpack_Preconditioner given the std::string name of the preconditioner type (c...
static int RegisterPreconditioner(const std::string PrecName, builderFunction PrecBuilder)
Register a new preconditioner with the factory.
static int NumPreconditioners_