46 #ifndef MUELU_GENERICRFACTORY_DEF_HPP
47 #define MUELU_GENERICRFACTORY_DEF_HPP
49 #include <Xpetra_Matrix.hpp>
54 #include "MueLu_PFactory.hpp"
61 template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
63 RCP<ParameterList> validParamList = rcp(
new ParameterList());
64 validParamList->set< RCP<const FactoryBase> >(
"P", Teuchos::null,
"Generating factory of the matrix P");
65 return validParamList;
68 template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
70 RCP<const FactoryBase> PFact1 = GetFactory(
"P");
71 if (PFact1 == Teuchos::null) { PFact1 = coarseLevel.
GetFactoryManager()->GetFactory(
"P"); }
72 RCP<PFactory> PFact = Teuchos::rcp_const_cast<PFactory>(rcp_dynamic_cast<const PFactory>(PFact1));;
74 bool rmode = PFact->isRestrictionModeSet();
75 PFact->setRestrictionMode(
true);
88 PFact->setRestrictionMode(rmode);
91 template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
93 FactoryMonitor m(*
this,
"Call prolongator factory for calculating restrictor", coarseLevel);
95 RCP<const FactoryBase> PFact1 = GetFactory(
"P");
96 if (PFact1 == Teuchos::null) { PFact1 = coarseLevel.
GetFactoryManager()->GetFactory(
"P"); }
97 RCP<PFactory> PFact = Teuchos::rcp_const_cast<PFactory>(rcp_dynamic_cast<const PFactory>(PFact1));;
101 bool rmode = PFact->isRestrictionModeSet();
102 PFact->setRestrictionMode(
true);
105 RCP<Matrix> R = coarseLevel.
Get<RCP<Matrix> >(
"R",PFact.get());
107 PFact->setRestrictionMode(rmode);
109 Set(coarseLevel,
"R", R);
115 #define MUELU_GENERICRFACTORY_SHORT
116 #endif // MUELU_GENERICRFACTORY_DEF_HPP