MueLu
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
MueLu_BlockedCoarseMapFactory_def.hpp
Go to the documentation of this file.
1
// @HEADER
2
// *****************************************************************************
3
// MueLu: A package for multigrid based preconditioning
4
//
5
// Copyright 2012 NTESS and the MueLu contributors.
6
// SPDX-License-Identifier: BSD-3-Clause
7
// *****************************************************************************
8
// @HEADER
9
10
#ifndef MUELU_BLOCKEDCOARSEMAPFACTORY_DEF_HPP_
11
#define MUELU_BLOCKEDCOARSEMAPFACTORY_DEF_HPP_
12
13
#include <Xpetra_MultiVector.hpp>
14
#include <Xpetra_StridedMapFactory.hpp>
15
#include <Xpetra_Matrix.hpp>
16
17
#include "
MueLu_BlockedCoarseMapFactory_decl.hpp
"
18
#include "
MueLu_Level.hpp
"
19
#include "MueLu_Aggregates.hpp"
20
#include "
MueLu_Monitor.hpp
"
21
22
#include "
MueLu_Factory.hpp
"
23
24
namespace
MueLu
{
25
26
template
<
class
Scalar,
class
LocalOrdinal,
class
GlobalOrdinal,
class
Node>
27
RCP<const ParameterList>
BlockedCoarseMapFactory<Scalar, LocalOrdinal, GlobalOrdinal, Node>::GetValidParameterList
()
const
{
28
RCP<ParameterList> validParamList = rcp(
new
ParameterList());
29
30
validParamList->set<RCP<const FactoryBase>>(
"Aggregates"
, Teuchos::null,
"Generating factory for aggregates."
);
31
validParamList->set<RCP<const FactoryBase>>(
"Nullspace"
, Teuchos::null,
"Generating factory for null space."
);
32
validParamList->set<RCP<const FactoryBase>>(
"CoarseMap"
, Teuchos::null,
"Generating factory of previous coarse map. (must be set by user!)."
);
33
34
// do we need this?
35
validParamList->set<std::string>(
"Striding info"
,
"{}"
,
"Striding information"
);
36
validParamList->set<
LocalOrdinal
>(
"Strided block id"
, -1,
"Strided block id"
);
37
38
return
validParamList;
39
}
40
41
template
<
class
Scalar,
class
LocalOrdinal,
class
GlobalOrdinal,
class
Node>
42
void
BlockedCoarseMapFactory<Scalar, LocalOrdinal, GlobalOrdinal, Node>::DeclareInput
(
Level
¤tLevel)
const
{
43
this->
Input
(currentLevel,
"Aggregates"
);
44
this->
Input
(currentLevel,
"Nullspace"
);
45
46
// Get CoarseMap from previously defined block
47
RCP<const FactoryBase> prevCoarseMapFact = this->
GetFactory
(
"CoarseMap"
);
48
TEUCHOS_TEST_FOR_EXCEPTION(prevCoarseMapFact == Teuchos::null,
Exceptions::RuntimeError
,
"MueLu::BlockedCoarseMapFactory::getDomainMapOffset: user did not specify CoarseMap of previous block. Do not forget to set the CoarseMap factory."
);
49
currentLevel.
DeclareInput
(
"CoarseMap"
, prevCoarseMapFact.get(),
this
);
50
}
51
52
template
<
class
Scalar,
class
LocalOrdinal,
class
GlobalOrdinal,
class
Node>
53
void
BlockedCoarseMapFactory<Scalar, LocalOrdinal, GlobalOrdinal, Node>::Build
(
Level
¤tLevel)
const
{
54
FactoryMonitor
m(*
this
,
"Build"
, currentLevel);
55
56
GlobalOrdinal
domainGIDOffset =
GetDomainGIDOffset
(currentLevel);
57
CoarseMapFactory::BuildCoarseMap
(currentLevel, domainGIDOffset);
58
}
59
60
template
<
class
Scalar,
class
LocalOrdinal,
class
GlobalOrdinal,
class
Node>
61
GlobalOrdinal
BlockedCoarseMapFactory<Scalar, LocalOrdinal, GlobalOrdinal, Node>::GetDomainGIDOffset
(
62
Level
¤tLevel)
const
{
63
RCP<const FactoryBase> prevCoarseMapFact = this->
GetFactory
(
"CoarseMap"
);
64
RCP<const Map> subPDomainMap = currentLevel.
Get
<RCP<const Map>>(
"CoarseMap"
, prevCoarseMapFact.get());
65
GlobalOrdinal
maxGlobalIndex = subPDomainMap->getMaxAllGlobalIndex();
66
67
return
maxGlobalIndex + Teuchos::ScalarTraits<GlobalOrdinal>::one();
68
}
69
70
}
// namespace MueLu
71
72
#endif
/* MUELU_BLOCKEDCOARSEMAPFACTORY_DEF_HPP_ */
MueLu_BlockedCoarseMapFactory_decl.hpp
MueLu_Factory.hpp
MueLu_Level.hpp
MueLu_Monitor.hpp
LocalOrdinal
MueLu::DefaultLocalOrdinal LocalOrdinal
Definition
MueLu_UseDefaultTypes.hpp:13
GlobalOrdinal
MueLu::DefaultGlobalOrdinal GlobalOrdinal
Definition
MueLu_UseDefaultTypes.hpp:14
MueLu::BlockedCoarseMapFactory::Build
void Build(Level ¤tLevel) const final
Build an object with this factory.
Definition
MueLu_BlockedCoarseMapFactory_def.hpp:53
MueLu::BlockedCoarseMapFactory::DeclareInput
void DeclareInput(Level ¤tLevel) const final
Specifies the data that this class needs, and the factories that generate that data.
Definition
MueLu_BlockedCoarseMapFactory_def.hpp:42
MueLu::BlockedCoarseMapFactory::GetDomainGIDOffset
virtual GlobalOrdinal GetDomainGIDOffset(Level ¤tLevel) const final
Compute domain GID offset from another CoarseMap.
Definition
MueLu_BlockedCoarseMapFactory_def.hpp:61
MueLu::BlockedCoarseMapFactory::GetValidParameterList
RCP< const ParameterList > GetValidParameterList() const final
Return a const parameter list of valid parameters that setParameterList() will accept.
Definition
MueLu_BlockedCoarseMapFactory_def.hpp:27
MueLu::CoarseMapFactory::BuildCoarseMap
virtual void BuildCoarseMap(Level ¤tLevel, const GlobalOrdinal domainGIDOffset) const
Build the coarse map using the domain GID offset.
Definition
MueLu_CoarseMapFactory_def.hpp:88
MueLu::Exceptions::RuntimeError
Exception throws to report errors in the internal logical of the program.
Definition
MueLu_Exceptions.hpp:36
MueLu::Factory::Input
void Input(Level &level, const std::string &varName) const
Definition
MueLu_Factory.cpp:72
MueLu::Factory::GetFactory
const RCP< const FactoryBase > GetFactory(const std::string &varName) const
Default implementation of FactoryAcceptor::GetFactory().
Definition
MueLu_Factory.cpp:30
MueLu::FactoryMonitor
Timer to be used in factories. Similar to Monitor but with additional timers.
Definition
MueLu_Monitor.hpp:165
MueLu::Level
Class that holds all level-specific information.
Definition
MueLu_Level.hpp:63
MueLu::Level::DeclareInput
void DeclareInput(const std::string &ename, const FactoryBase *factory, const FactoryBase *requestedBy=NoFactory::get())
Callback from FactoryBase::CallDeclareInput() and FactoryBase::DeclareInput().
Definition
MueLu_Level.cpp:156
MueLu::Level::Get
T & Get(const std::string &ename, const FactoryBase *factory=NoFactory::get())
Get data without decrementing associated storage counter (i.e., read-only access)....
Definition
MueLu_Level.hpp:154
MueLu
Namespace for MueLu classes and methods.
Definition
MueLu_BrickAggregationFactory_decl.hpp:42
src
Transfers
BlockedTransfers
MueLu_BlockedCoarseMapFactory_def.hpp
Generated by
1.17.0