MueLu
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
MueLu_CoarseMapFactory_decl.hpp
Go to the documentation of this file.
1
// @HEADER
2
//
3
// ***********************************************************************
4
//
5
// MueLu: A package for multigrid based preconditioning
6
// Copyright 2012 Sandia Corporation
7
//
8
// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
9
// the U.S. Government retains certain rights in this software.
10
//
11
// Redistribution and use in source and binary forms, with or without
12
// modification, are permitted provided that the following conditions are
13
// met:
14
//
15
// 1. Redistributions of source code must retain the above copyright
16
// notice, this list of conditions and the following disclaimer.
17
//
18
// 2. Redistributions in binary form must reproduce the above copyright
19
// notice, this list of conditions and the following disclaimer in the
20
// documentation and/or other materials provided with the distribution.
21
//
22
// 3. Neither the name of the Corporation nor the names of the
23
// contributors may be used to endorse or promote products derived from
24
// this software without specific prior written permission.
25
//
26
// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
27
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
29
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
30
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
31
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
32
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
33
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
34
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
35
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
36
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37
//
38
// Questions? Contact
39
// Jonathan Hu (jhu@sandia.gov)
40
// Andrey Prokopenko (aprokop@sandia.gov)
41
// Ray Tuminaro (rstumin@sandia.gov)
42
//
43
// ***********************************************************************
44
//
45
// @HEADER
46
47
#ifndef MUELU_COARSEMAPFACTORY_DECL_HPP_
48
#define MUELU_COARSEMAPFACTORY_DECL_HPP_
49
50
#include "Xpetra_StridedMapFactory_fwd.hpp"
51
52
#include "
MueLu_ConfigDefs.hpp
"
53
#include "
MueLu_SingleLevelFactoryBase.hpp
"
54
#include "
MueLu_CoarseMapFactory_fwd.hpp
"
55
56
#include "
MueLu_Level_fwd.hpp
"
57
#include "
MueLu_Aggregates_fwd.hpp
"
58
#include "
MueLu_Exceptions.hpp
"
59
60
namespace
MueLu
{
61
109
110
template
<
class
Scalar
=
DefaultScalar
,
111
class
LocalOrdinal
=
DefaultLocalOrdinal
,
112
class
GlobalOrdinal
=
DefaultGlobalOrdinal
,
113
class
Node
=
DefaultNode
>
114
class
CoarseMapFactory
:
public
SingleLevelFactoryBase
{
115
#undef MUELU_COARSEMAPFACTORY_SHORT
116
#include "
MueLu_UseShortNames.hpp
"
117
118
public
:
119
121
122
123
RCP<const ParameterList>
GetValidParameterList
()
const override
;
124
131
void
DeclareInput
(
Level
¤tLevel)
const override
;
132
134
136
137
139
void
Build
(
Level
¤tLevel)
const override
;
140
142
143
150
virtual
size_t
getFixedBlockSize
()
const
{
151
// sum up size of all strided blocks (= number of dofs per node)
152
size_t
blkSize = 0;
153
std::vector<size_t>::const_iterator it;
154
for
(it =
stridingInfo_
.begin(); it !=
stridingInfo_
.end(); ++it) {
155
blkSize += *it;
156
}
157
return
blkSize;
158
}
159
161
166
virtual
std::vector<size_t>
getStridingData
()
const
{
return
stridingInfo_
; }
167
172
virtual
void
setStridingData
(std::vector<size_t> stridingInfo);
173
178
virtual
LocalOrdinal
getStridedBlockId
()
const
{
179
const
ParameterList & pL =
GetParameterList
();
180
return
pL.get<
LocalOrdinal
>(
"Strided block id"
);
181
}
182
187
virtual
void
setStridedBlockId
(
LocalOrdinal
stridedBlockId) {
188
SetParameter
(
"Strided block id"
, ParameterEntry(stridedBlockId));
189
}
190
192
193
protected
:
194
196
virtual
void
BuildCoarseMap
(
Level
& currentLevel,
const
GlobalOrdinal
domainGIDOffset)
const
;
197
199
virtual
GlobalOrdinal
GetDomainGIDOffset
(
Level
& currentLevel)
const
;
200
201
private
:
202
203
virtual
void
CheckForConsistentStridingInformation
(
204
LocalOrdinal
stridedBlockId,
const
size_t
nullspaceDimension)
const
;
205
207
mutable
std::vector<size_t>
stridingInfo_
;
208
209
};
//class CoarseMapFactory
210
211
}
//namespace MueLu
212
213
#define MUELU_COARSEMAPFACTORY_SHORT
214
#endif
/* MUELU_COARSEMAPFACTORY_DECL_HPP_ */
MueLu_Aggregates_fwd.hpp
MueLu_CoarseMapFactory_fwd.hpp
MueLu_ConfigDefs.hpp
MueLu_Exceptions.hpp
MueLu_Level_fwd.hpp
MueLu_SingleLevelFactoryBase.hpp
LocalOrdinal
MueLu::DefaultLocalOrdinal LocalOrdinal
Definition
MueLu_UseDefaultTypes.hpp:50
Scalar
MueLu::DefaultScalar Scalar
Definition
MueLu_UseDefaultTypes.hpp:49
GlobalOrdinal
MueLu::DefaultGlobalOrdinal GlobalOrdinal
Definition
MueLu_UseDefaultTypes.hpp:51
Node
MueLu::DefaultNode Node
Definition
MueLu_UseDefaultTypes.hpp:52
MueLu_UseShortNames.hpp
MueLu::CoarseMapFactory
Factory for generating coarse level map. Used by TentativePFactory.
Definition
MueLu_CoarseMapFactory_decl.hpp:114
MueLu::CoarseMapFactory< Scalar, LocalOrdinal, GlobalOrdinal, Node >::stridingInfo_
std::vector< size_t > stridingInfo_
Definition
MueLu_CoarseMapFactory_decl.hpp:207
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:121
MueLu::CoarseMapFactory::getFixedBlockSize
virtual size_t getFixedBlockSize() const
Get information on the fixed block size.
Definition
MueLu_CoarseMapFactory_decl.hpp:150
MueLu::CoarseMapFactory::CheckForConsistentStridingInformation
virtual void CheckForConsistentStridingInformation(LocalOrdinal stridedBlockId, const size_t nullspaceDimension) const
Definition
MueLu_CoarseMapFactory_def.hpp:191
MueLu::CoarseMapFactory::GetValidParameterList
RCP< const ParameterList > GetValidParameterList() const override
Return a const parameter list of valid parameters that setParameterList() will accept.
Definition
MueLu_CoarseMapFactory_def.hpp:69
MueLu::CoarseMapFactory::GetDomainGIDOffset
virtual GlobalOrdinal GetDomainGIDOffset(Level ¤tLevel) const
Extract domain GID offset from user data.
Definition
MueLu_CoarseMapFactory_def.hpp:168
MueLu::CoarseMapFactory::Build
void Build(Level ¤tLevel) const override
Build an object with this factory.
Definition
MueLu_CoarseMapFactory_def.hpp:112
MueLu::CoarseMapFactory::getStridingData
virtual std::vector< size_t > getStridingData() const
getStridingData returns vector with size of striding blocks in the domain DOF map (= coarse map)....
Definition
MueLu_CoarseMapFactory_decl.hpp:166
MueLu::CoarseMapFactory::setStridedBlockId
virtual void setStridedBlockId(LocalOrdinal stridedBlockId)
setStridedBlockId set strided block id for the domain DOF map of Ptent (= coarse map) or -1 if full s...
Definition
MueLu_CoarseMapFactory_decl.hpp:187
MueLu::CoarseMapFactory::setStridingData
virtual void setStridingData(std::vector< size_t > stridingInfo)
setStridingData set striding vector for the domain DOF map (= coarse map), e.g. (2,...
Definition
MueLu_CoarseMapFactory_def.hpp:100
MueLu::CoarseMapFactory::getStridedBlockId
virtual LocalOrdinal getStridedBlockId() const
getStridedBlockId returns strided block id for the domain DOF map of Ptent (= coarse map) or -1 if fu...
Definition
MueLu_CoarseMapFactory_decl.hpp:178
MueLu::CoarseMapFactory::DeclareInput
void DeclareInput(Level ¤tLevel) const override
Specifies the data that this class needs, and the factories that generate that data.
Definition
MueLu_CoarseMapFactory_def.hpp:93
MueLu::Level
Class that holds all level-specific information.
Definition
MueLu_Level.hpp:99
MueLu::ParameterListAcceptorImpl::GetParameterList
virtual const Teuchos::ParameterList & GetParameterList() const
Definition
MueLu_ParameterListAcceptor.cpp:41
MueLu::ParameterListAcceptorImpl::SetParameter
void SetParameter(const std::string &name, const ParameterEntry &entry)
Set a parameter directly as a ParameterEntry.
Definition
MueLu_ParameterListAcceptor.cpp:64
MueLu::SingleLevelFactoryBase::SingleLevelFactoryBase
SingleLevelFactoryBase()
Constructor.
Definition
MueLu_SingleLevelFactoryBase.hpp:71
MueLu
Namespace for MueLu classes and methods.
Definition
MueLu_BrickAggregationFactory_decl.hpp:78
MueLu::DefaultNode
Tpetra::KokkosClassic::DefaultNode::DefaultNodeType DefaultNode
Definition
MueLu_Details_DefaultTypes.hpp:70
MueLu::DefaultGlobalOrdinal
int DefaultGlobalOrdinal
Definition
MueLu_Details_DefaultTypes.hpp:67
MueLu::DefaultLocalOrdinal
int DefaultLocalOrdinal
Definition
MueLu_Details_DefaultTypes.hpp:60
MueLu::DefaultScalar
Tpetra::Details::DefaultTypes::scalar_type DefaultScalar
Definition
MueLu_Details_DefaultTypes.hpp:58
src
Transfers
Smoothed-Aggregation
MueLu_CoarseMapFactory_decl.hpp
Generated by
1.17.0