47#include "Teko_AddPreconditionerFactory.hpp"
54 const RCP<const BlockPreconditionerFactory> & FirstFactory,
55 const RCP<const BlockPreconditionerFactory> & SecondFactory)
56 : FirstFactory_(FirstFactory), SecondFactory_(SecondFactory)
59AddPreconditionerFactory::AddPreconditionerFactory()
66 mystate->StateOne_ = Teuchos::rcp_dynamic_cast<BlockPreconditionerState>(FirstFactory_->buildPreconditionerState());
67 mystate->StateTwo_ = Teuchos::rcp_dynamic_cast<BlockPreconditionerState>(SecondFactory_->buildPreconditionerState());
72LinearOp AddPreconditionerFactory
73 ::buildPreconditionerOperator(BlockedLinearOp & blockOp,
82 TEUCHOS_ASSERT(MyState != 0);
84 LinearOp M1 = FirstFactory_->buildPreconditionerOperator(blockOp, *MyState->StateOne_);
85 LinearOp M2 = SecondFactory_->buildPreconditionerOperator(blockOp, *MyState->StateTwo_);
87 LinearOp invA = add(M1, M2);
99 std::string aStr=
"", bStr=
"";
102 aStr = pl.get<std::string>(
"Preconditioner A");
103 bStr = pl.get<std::string>(
"Preconditioner B");
105 RCP<const Teuchos::ParameterList> aSettings = invLib->getParameterList(aStr);
106 RCP<const Teuchos::ParameterList> bSettings = invLib->getParameterList(bStr);
109 std::string aType = aSettings->get<std::string>(
"Preconditioner Type");
110 RCP<Teko::PreconditionerFactory> precA
114 std::string bType = bSettings->get<std::string>(
"Preconditioner Type");
115 RCP<Teko::PreconditionerFactory> precB
119 FirstFactory_ = Teuchos::rcp_dynamic_cast<const Teko::BlockPreconditionerFactory>(precA);
120 SecondFactory_ = Teuchos::rcp_dynamic_cast<const Teko::BlockPreconditionerFactory>(precB);
virtual Teuchos::RCP< Teko::PreconditionerState > buildPreconditionerState() const
Build the AddPrecondState object.
AddPreconditionerFactory(const Teuchos::RCP< const Teko::BlockPreconditionerFactory > &FirstFactory, const Teuchos::RCP< const Teko::BlockPreconditionerFactory > &SecondFactory)
Constructor.
virtual void initializeFromParameterList(const Teuchos::ParameterList &pl)
Initialize from a parameter list.
An implementation of a state object for block preconditioners.
static Teuchos::RCP< PreconditionerFactory > buildPreconditionerFactory(const std::string &name, const Teuchos::ParameterList &settings, const Teuchos::RCP< const InverseLibrary > &invLib=Teuchos::null)
Builder function for creating preconditioner factories (yes this is a factory factory).
Teuchos::RCP< const InverseLibrary > getInverseLibrary() const
Get the inverse library used by this preconditioner factory.