46 #ifndef MUELU_RFROMP_OR_TRANSP_DEF_HPP
47 #define MUELU_RFROMP_OR_TRANSP_DEF_HPP
59 #include "MueLu_PFactory.hpp"
60 #include "MueLu_PgPFactory.hpp"
61 #include "MueLu_TogglePFactory.hpp"
63 #include "MueLu_PerfUtils.hpp"
64 #include "MueLu_Utilities.hpp"
68 template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
76 norecurse.disableRecursiveValidation();
77 validParamList->
set<
ParameterList>(
"matrixmatrix: kernel params", norecurse,
"MatrixMatrix kernel parameters");
79 return validParamList;
82 template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
84 Input(coarseLevel,
"RfromPfactory");
101 if (PFact == Teuchos::null) {
102 PFact = GetFactory(
"P");
106 if (myToggleFact != Teuchos::null) {
107 for (
size_t ii = 0; ii < myToggleFact->NumProlongatorFactories(); ii++) {
109 if (actualPFact != Teuchos::null) {
123 template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
132 if (pL.isSublist(
"matrixmatrix: kernel params"))
133 Tparams =
rcp(
new ParameterList(pL.sublist(
"matrixmatrix: kernel params")));
138 Tparams->
set(
"compute global constants: temporaries", Tparams->
get(
"compute global constants: temporaries",
false));
139 Tparams->
set(
"compute global constants", Tparams->
get(
"compute global constants",
false));
143 if (PFact == Teuchos::null) {
144 PFact = GetFactory(
"P");
150 std::string strType = coarseLevel.
GetTypeName(
"RfromPfactory", PFact.
get());
156 if (strType ==
"int") {
159 if (myToggleFact != Teuchos::null) {
161 RCP<PFactory> actualPFact = Teuchos::rcp_const_cast<
PFactory>(rcp_dynamic_cast<
const PFactory>(myToggleFact->getProlongatorFactory((
size_t)coarseLevel.
Get<
int>(
"RfromPfactory", PFact.
get()))));
177 params->
set(
"printLoadBalancingInfo",
true);
178 params->
set(
"printCommInfo",
true);
182 Set(coarseLevel,
"R", R);
185 if (P->IsView(
"stridedMaps"))
186 R->CreateView(
"stridedMaps", P,
true);
192 #endif // MUELU_RFROMP_OR_TRANSP_DEF_HPP
T & Get(const std::string &ename, const FactoryBase *factory=NoFactory::get())
Get data without decrementing associated storage counter (i.e., read-only access). Usage: Level->Get< RCP<Matrix> >("A", factory) if factory == NULL => use default factory.
void DeclareDependencies(const FactoryBase *factory, bool bRequestOnly=false, bool bReleaseOnly=false)
Callback from FactoryBase::CallDeclareInput() and FactoryBase::DeclareInput() to declare factory depe...
void DeclareInput(Level &fineLevel, Level &coarseLevel) const
Input.
T & get(const std::string &name, T def_value)
ParameterList & set(std::string const &name, T const &value, std::string const &docString="", RCP< const ParameterEntryValidator > const &validator=null)
Timer to be used in factories. Similar to Monitor but with additional timers.
void setRestrictionMode(bool bRestrictionMode=false)
RCP< const ParameterList > GetValidParameterList() const
Return a const parameter list of valid parameters that setParameterList() will accept.
Print even more statistics.
void Build(Level &fineLevel, Level &coarseLevel) const
Build an object with this factory.
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
Class that holds all level-specific information.
std::string GetTypeName(const std::string &ename, const FactoryBase *factory=NoFactory::get())
GetTypeName returns type string of variable stored using ename and factory.
Prolongator factory which allows switching between two different prolongator strategies.
static RCP< Xpetra::Matrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > Transpose(Xpetra::Matrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > &Op, bool optimizeTranspose=false, const std::string &label=std::string(), const Teuchos::RCP< Teuchos::ParameterList > ¶ms=Teuchos::null)
bool isRestrictionModeSet()
returns restrictionMode flag
static std::string PrintMatrixInfo(const Matrix &A, const std::string &msgTag, RCP< const Teuchos::ParameterList > params=Teuchos::null)
An exception safe way to call the method TwoLevelFactoryBase::DisableMultipleCallCheck.
const RCP< const FactoryManagerBase > GetFactoryManager()
returns the current factory manager
int GetLevelID() const
Return level number.
Factory that provides an interface for a concrete implementation of a prolongation operator...
Factory for building Petrov-Galerkin Smoothed Aggregation prolongators.
void DeclareInput(const std::string &ename, const FactoryBase *factory, const FactoryBase *requestedBy=NoFactory::get())
Callback from FactoryBase::CallDeclareInput() and FactoryBase::DeclareInput()
std::string toString(const T &t)
bool IsAvailable(const std::string &ename, const FactoryBase *factory=NoFactory::get()) const
Test whether a need's value has been saved.