47#ifndef STRATIMIKOS_MUELU_TPETRA_HELPERS_HPP
48#define STRATIMIKOS_MUELU_TPETRA_HELPERS_HPP
51#include "Stratimikos_LinearSolverBuilder.hpp"
57#if defined(HAVE_MUELU_EXPERIMENTAL) && defined(HAVE_MUELU_TEKO)
61#include "Teuchos_RCP.hpp"
62#include "Teuchos_ParameterList.hpp"
63#include "Teuchos_TestForException.hpp"
64#include "Teuchos_AbstractFactoryStd.hpp"
70 template <
typename Scalar = MueLu::DefaultScalar,
typename LocalOrdinal = MueLu::DefaultLocalOrdinal,
typename GlobalOrdinal = MueLu::DefaultGlobalOrdinal,
typename Node = MueLu::DefaultNode>
71 void enableMueLu(LinearSolverBuilder<Scalar>& builder,
const std::string& stratName =
"MueLu")
73#if defined(HAVE_MUELU_STRATIMIKOS) && defined(HAVE_MUELU_THYRA)
74 const Teuchos::RCP<const Teuchos::ParameterList> precValidParams = Teuchos::sublist(builder.getValidParameters(),
"Preconditioner Types");
76 TEUCHOS_TEST_FOR_EXCEPTION(precValidParams->isParameter(stratName), std::logic_error,
77 "Stratimikos::enableMueLu cannot add \"" + stratName +
"\" because it is already included in builder!");
79 typedef Thyra::PreconditionerFactoryBase<Scalar> Base;
80 typedef Thyra::MueLuPreconditionerFactory<Scalar, LocalOrdinal, GlobalOrdinal, Node> Impl;
82 builder.setPreconditioningStrategyFactory(Teuchos::abstractFactoryStd<Base, Impl>(), stratName);
86 template <
typename LocalOrdinal,
typename GlobalOrdinal,
typename Node>
87 MUELU_DEPRECATED
void enableMueLu(LinearSolverBuilder<double>& builder,
const std::string& stratName =
"MueLu")
89 enableMueLu<double,LocalOrdinal,GlobalOrdinal,Node>(builder,stratName);
92 template <
typename Scalar = MueLu::DefaultScalar,
typename LocalOrdinal = MueLu::DefaultLocalOrdinal,
typename GlobalOrdinal = MueLu::DefaultGlobalOrdinal,
typename Node = MueLu::DefaultNode>
93 void enableMueLuRefMaxwell(LinearSolverBuilder<Scalar>& builder,
const std::string& stratName =
"MueLuRefMaxwell")
95#if defined(HAVE_MUELU_STRATIMIKOS) && defined(HAVE_MUELU_THYRA)
96 const Teuchos::RCP<const Teuchos::ParameterList> precValidParams = Teuchos::sublist(builder.getValidParameters(),
"Preconditioner Types");
98 TEUCHOS_TEST_FOR_EXCEPTION(precValidParams->isParameter(stratName), std::logic_error,
99 "Stratimikos::enableMueLuRefMaxwell cannot add \"" + stratName +
"\" because it is already included in builder!");
101 typedef Thyra::PreconditionerFactoryBase<Scalar> Base;
102 typedef Thyra::MueLuRefMaxwellPreconditionerFactory<Scalar, LocalOrdinal, GlobalOrdinal, Node> Impl;
104 builder.setPreconditioningStrategyFactory(Teuchos::abstractFactoryStd<Base, Impl>(), stratName);
108 template <
typename LocalOrdinal,
typename GlobalOrdinal,
typename Node>
109 MUELU_DEPRECATED
void enableMueLuRefMaxwell(LinearSolverBuilder<double>& builder,
const std::string& stratName =
"MueLuRefMaxwell")
111 enableMueLuRefMaxwell<double,LocalOrdinal,GlobalOrdinal,Node>(builder,stratName);
114 template <
typename Scalar = MueLu::DefaultScalar,
typename LocalOrdinal = MueLu::DefaultLocalOrdinal,
typename GlobalOrdinal = MueLu::DefaultGlobalOrdinal,
typename Node = MueLu::DefaultNode>
115 void enableMueLuMaxwell1(LinearSolverBuilder<Scalar>& builder,
const std::string& stratName =
"MueLuMaxwell1")
117#if defined(HAVE_MUELU_STRATIMIKOS) && defined(HAVE_MUELU_THYRA)
118 const Teuchos::RCP<const Teuchos::ParameterList> precValidParams = Teuchos::sublist(builder.getValidParameters(),
"Preconditioner Types");
120 TEUCHOS_TEST_FOR_EXCEPTION(precValidParams->isParameter(stratName), std::logic_error,
121 "Stratimikos::enableMueLuRefMaxwell cannot add \"" + stratName +
"\" because it is already included in builder!");
123 typedef Thyra::PreconditionerFactoryBase<Scalar> Base;
124 typedef Thyra::MueLuMaxwell1PreconditionerFactory<Scalar, LocalOrdinal, GlobalOrdinal, Node> Impl;
126 builder.setPreconditioningStrategyFactory(Teuchos::abstractFactoryStd<Base, Impl>(), stratName);
130 template <
typename LocalOrdinal,
typename GlobalOrdinal,
typename Node>
131 MUELU_DEPRECATED
void enableMueLuMaxwell1(LinearSolverBuilder<double>& builder,
const std::string& stratName =
"MueLuMaxwell1")
133 enableMueLuMaxwell1<double,LocalOrdinal,GlobalOrdinal,Node>(builder,stratName);
136#if defined(HAVE_MUELU_EXPERIMENTAL) && defined(HAVE_MUELU_TEKO)
139 void enableMueLuTpetraQ2Q1(DefaultLinearSolverBuilder &builder,
const std::string &stratName =
"MueLu");
142 template <
typename Scalar = MueLu::DefaultScalar,
typename LocalOrdinal = MueLu::DefaultLocalOrdinal,
typename GlobalOrdinal = MueLu::DefaultGlobalOrdinal,
typename Node = MueLu::DefaultNode>
144 const Teuchos::RCP<const Teuchos::ParameterList> precValidParams = Teuchos::sublist(builder.getValidParameters(),
"Preconditioner Types");
146 TEUCHOS_TEST_FOR_EXCEPTION(precValidParams->isParameter(stratName), std::logic_error,
147 "Stratimikos::enableMueLuTpetraQ2Q1 cannot add \"" + stratName +
"\" because it is already included in builder!");
149 typedef Thyra::PreconditionerFactoryBase<Scalar> Base;
152 builder.setPreconditioningStrategyFactory(Teuchos::abstractFactoryStd<Base, Impl>(), stratName);
155 template <
typename LocalOrdinal,
typename GlobalOrdinal,
typename Node>
156 MUELU_DEPRECATED
void enableMueLuTpetraQ2Q1(LinearSolverBuilder<double>& builder,
const std::string& stratName =
"MueLu")
158 enableMueLuTpetraQ2Q1<double,LocalOrdinal,GlobalOrdinal,Node>(builder,stratName);
Concrete preconditioner factory subclass based on MueLu.
void enableMueLuTpetraQ2Q1(LinearSolverBuilder< Scalar > &builder, const std::string &stratName="MueLu")
void enableMueLu(LinearSolverBuilder< Scalar > &builder, const std::string &stratName="MueLu")
void enableMueLuMaxwell1(LinearSolverBuilder< Scalar > &builder, const std::string &stratName="MueLuMaxwell1")
void enableMueLuRefMaxwell(LinearSolverBuilder< Scalar > &builder, const std::string &stratName="MueLuRefMaxwell")