Go to the documentation of this file.
48 #ifndef MUELU_REORDERBLOCKAFACTORY_DEF_HPP_
49 #define MUELU_REORDERBLOCKAFACTORY_DEF_HPP_
68 template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
74 validParamList->
set< std::string > (
"Reorder Type",
"",
"String describing the reordering of blocks");
77 validParamList->
set<
RCP<const FactoryBase> >(
"Map1", Teuchos::null,
"Generating factory of the fine level map associated with the (1,1) block in your n x n block matrix.");
78 validParamList->
set<
RCP<const FactoryBase> >(
"Map2", Teuchos::null,
"Generating factory of the fine level map associated with the (2,2) block in your n x n block matrix.");
79 validParamList->
set<
RCP<const FactoryBase> >(
"Map3", Teuchos::null,
"Generating factory of the fine level map associated with the (3,3) block in your n x n block matrix.");
80 validParamList->
set<
RCP<const FactoryBase> >(
"Map4", Teuchos::null,
"Generating factory of the fine level map associated with the (4,4) block in your n x n block matrix.");
81 validParamList->
set<
RCP<const FactoryBase> >(
"Map5", Teuchos::null,
"Generating factory of the fine level map associated with the (5,5) block in your n x n block matrix.");
82 validParamList->
set<
RCP<const FactoryBase> >(
"Map6", Teuchos::null,
"Generating factory of the fine level map associated with the (6,6) block in your n x n block matrix.");
83 validParamList->
set<
RCP<const FactoryBase> >(
"Map7", Teuchos::null,
"Generating factory of the fine level map associated with the (7,7) block in your n x n block matrix.");
84 validParamList->
set<
RCP<const FactoryBase> >(
"Map8", Teuchos::null,
"Generating factory of the fine level map associated with the (8,8) block in your n x n block matrix.");
85 validParamList->
set<
RCP<const FactoryBase> >(
"Map9", Teuchos::null,
"Generating factory of the fine level map associated with the (9,9) block in your n x n block matrix.");
87 return validParamList;
90 template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
92 Input(currentLevel,
"A");
95 template <
class Scalar,
class LocalOrdinal,
class GlobalOrdinal,
class Node>
100 std::string reorderStr = pL.
get<std::string>(
"Reorder Type");
102 RCP<Matrix> Ain = Get<RCP<Matrix> >(currentLevel,
"A");
108 if (A == Teuchos::null && currentLevel.GetLevelID() == 0) {
110 GetOStream(
Warnings0) <<
"Split input matrix (Warning: this is a rather expensive operation)" << std::endl;
112 std::vector<Teuchos::RCP<const Map> > xmaps;
114 for(
int it = 1; it < 10; it++) {
115 std::stringstream ss;
119 GetOStream(
Runtime1) <<
"Use user-given submap #" << it <<
": length dimension=" << submap->getGlobalNumElements() << std::endl;
120 xmaps.push_back(submap);
124 bool bThyraMode =
false;
144 GetOStream(
Statistics1) <<
"Got a " << A->Rows() <<
"x" << A->Cols() <<
" blocked operator as input" << std::endl;
147 GetOStream(
Debug) <<
"Reordering A using " << brm->
toString() << std::endl;
150 Teuchos::rcp_dynamic_cast<const ReorderedBlockedCrsMatrix>(Xpetra::buildReorderedBlockedCrsMatrix<Scalar,LocalOrdinal,GlobalOrdinal,Node>(brm, A));
154 GetOStream(
Statistics1) <<
"Reordering A using " << brm->
toString() <<
" block gives a " << brop->Rows() <<
"x" << brop->Cols() <<
" blocked operators" << std::endl;
155 GetOStream(
Debug) <<
"Reordered operator has " << brop->getRangeMap()->getGlobalNumElements() <<
" rows and " << brop->getDomainMap()->getGlobalNumElements() <<
" columns" << std::endl;
156 GetOStream(
Debug) <<
"Reordered operator: Use of Thyra style gids = " << brop->getRangeMapExtractor()->getThyraMode() << std::endl;
160 Teuchos::rcp_const_cast<ReorderedBlockedCrsMatrix>(brop);
166 currentLevel.Set(
"A", Teuchos::rcp_dynamic_cast<Matrix>(bret),
this);
Description of what is happening (more verbose)
void Build(Level ¤tLevel) const
Build an object with this factory.
Timer to be used in factories. Similar to Monitor but with additional timers.
Important warning messages (one line)
T & get(const std::string &name, T def_value)
Exception indicating invalid cast attempted.
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
Namespace for MueLu classes and methods.
Print additional debugging information.
static Teuchos::RCP< Xpetra::BlockedCrsMatrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > > SplitMatrix(const Xpetra::Matrix< Scalar, LocalOrdinal, GlobalOrdinal, Node > &input, Teuchos::RCP< const Xpetra::MapExtractor< Scalar, LocalOrdinal, GlobalOrdinal, Node > > rangeMapExtractor, Teuchos::RCP< const Xpetra::MapExtractor< Scalar, LocalOrdinal, GlobalOrdinal, Node > > domainMapExtractor, Teuchos::RCP< const Xpetra::MapExtractor< Scalar, LocalOrdinal, GlobalOrdinal, Node > > columnMapExtractor=Teuchos::null, bool bThyraMode=false)
ParameterList & set(std::string const &name, T const &value, std::string const &docString="", RCP< const ParameterEntryValidator > const &validator=null)
Exception throws to report errors in the internal logical of the program.
void DeclareInput(Level ¤tLevel) const
Specifies the data that this class needs, and the factories that generate that data.
virtual std::string toString() const
Teuchos::RCP< const Xpetra::BlockReorderManager > blockedReorderFromString(std::string reorder)
RCP< const ParameterList > GetValidParameterList() const
Input.
static const NoFactory * get()
#define TEUCHOS_TEST_FOR_EXCEPTION(throw_exception_test, Exception, msg)
Class that holds all level-specific information.
static const RCP< const NoFactory > getRCP()
Static Get() functions.