|
Ifpack2 Templated Preconditioning Package
Version 1.0
|
A factory class to create Ifpack2 preconditioners. More...
#include <Ifpack2_Factory.hpp>
Static Public Member Functions | |
| template<class MatrixType > | |
| static Teuchos::RCP < Ifpack2::Preconditioner < typename MatrixType::scalar_type, typename MatrixType::local_ordinal_type, typename MatrixType::global_ordinal_type, typename MatrixType::node_type > > | create (const std::string &prec_type, const Teuchos::RCP< const MatrixType > &matrix, const int overlap=0) |
| Creates an instance of Ifpack2_Preconditioner given the string name of the preconditioner type (throws exception if given unrecognized name). | |
A factory class to create Ifpack2 preconditioners.
Ifpack2::Factory contains just one method: create(). Using Ifpack2::Factory::create(), users can easily create a variety of Ifpack2 preconditioners.
create requires 3 arguments:
The first argument can assume the following values:
"DIAGONAL" : returns an instance of Ifpack2::Diagonal."RELAXATION" : returns an instance of Ifpack2::Relaxation."CHEBYSHEV" : returns an instance of Ifpack2::Chebyshev (overlap is ignored)."ILUT" : returns an instance of Ifpack2::ILUT."RILUK" : returns an instance of Ifpack2::RILUK.The following fragment of code shows the basic usage of this class.
#include "Ifpack2_Factory.hpp" ... typedef double Scalar; typedef int LocalOrdinal; typedef int GlobalOrdinal; typedef Tpetra::DefaultPlatform::DefaultPlatformType::NodeType Node; typedef Tpetra::CrsMatrix<Scalar,LocalOrdinal,GlobalOrdinal,Node> TCrsMatrix; typedef Ifpack2::Preconditioner<Scalar,LocalOrdinal,GlobalOrdinal,Node> TPrecond; ... Ifpack2::Factory factory; Teuchos::RCP<TCrsMatrix> A; // A is fillComplete()'d. std::string PrecType = "ILUT"; // use incomplete LU on each process Teuchos::RCP<TPrecond> prec = factory.create(PrecType, A); Teuchos::ParameterList params; params.set("fact: ilut level-of-fill", 5.0); // use ILUT(fill=5, drop=0) prec->setParameters(List); prec->initialize(); prec->compute(); // now prec can be used as a preconditioner
| Teuchos::RCP< Ifpack2::Preconditioner< typename MatrixType::scalar_type, typename MatrixType::local_ordinal_type, typename MatrixType::global_ordinal_type, typename MatrixType::node_type > > Ifpack2::Factory::create | ( | const std::string & | prec_type, |
| const Teuchos::RCP< const MatrixType > & | matrix, | ||
| const int | overlap = 0 |
||
| ) | [static] |
Creates an instance of Ifpack2_Preconditioner given the string name of the preconditioner type (throws exception if given unrecognized name).
| PrecType | (In) - String name of preconditioner type to be created. |
| Matrix | (In) - Matrix used to define the preconditioner |
| overlap | (In) - specified overlap, defaulted to 0. |
Returns 0 if the preconditioner with that input name does not exist. Otherwise, return a newly created preconditioner object. Note that the client is responsible for calling delete on the returned object once it is finished using it!
1.7.6.1