MueLu
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
MueLu_MLParameterListInterpreter_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_MLPARAMETERLISTINTERPRETER_DECL_HPP
48
#define MUELU_MLPARAMETERLISTINTERPRETER_DECL_HPP
49
50
#include <Teuchos_ParameterList.hpp>
51
52
#include <Xpetra_Matrix_fwd.hpp>
53
#include <Xpetra_MultiVector_fwd.hpp>
54
#include <Xpetra_Operator_fwd.hpp>
55
56
#include "
MueLu_ConfigDefs.hpp
"
57
#include "
MueLu_HierarchyManager.hpp
"
58
#include "
MueLu_MLParameterListInterpreter_fwd.hpp
"
59
60
#include "
MueLu_Hierarchy_fwd.hpp
"
61
#include "
MueLu_SmootherFactory_fwd.hpp
"
62
63
#include "
MueLu_TentativePFactory_fwd.hpp
"
64
#include "
MueLu_SaPFactory_fwd.hpp
"
65
#include "
MueLu_PgPFactory_fwd.hpp
"
66
#include "
MueLu_AmalgamationFactory_fwd.hpp
"
67
#include "
MueLu_TransPFactory_fwd.hpp
"
68
#include "
MueLu_GenericRFactory_fwd.hpp
"
69
#include "
MueLu_SmootherPrototype_fwd.hpp
"
70
#include "
MueLu_TrilinosSmoother_fwd.hpp
"
71
#include "
MueLu_IfpackSmoother_fwd.hpp
"
72
#include "
MueLu_DirectSolver_fwd.hpp
"
73
#include "
MueLu_RAPFactory_fwd.hpp
"
74
#include "
MueLu_CoalesceDropFactory_fwd.hpp
"
75
#include "
MueLu_UncoupledAggregationFactory_fwd.hpp
"
76
#include "
MueLu_NullspaceFactory_fwd.hpp
"
77
#include "
MueLu_FactoryBase_fwd.hpp
"
78
79
#if defined(HAVE_MUELU_ISORROPIA) && defined(HAVE_MPI)
80
#include "
MueLu_RepartitionHeuristicFactory_fwd.hpp
"
81
#include "
MueLu_RepartitionFactory_fwd.hpp
"
82
#include "
MueLu_RebalanceTransferFactory_fwd.hpp
"
83
#include "
MueLu_IsorropiaInterface_fwd.hpp
"
84
#include "
MueLu_RebalanceAcFactory_fwd.hpp
"
85
#include "
MueLu_RebalanceMapFactory_fwd.hpp
"
86
#endif
87
88
namespace
MueLu
{
89
90
/*
91
Utility that from an existing Teuchos::ParameterList creates a new list, in
92
which level-specific parameters are replaced with sublists.
93
94
Currently, level-specific parameters that begin with "smoother:"
95
or "aggregation:" are placed in sublists. Coarse options are also placed
96
in a coarse list.
97
98
Example:
99
Input:
100
smoother: type (level 0) = symmetric Gauss-Seidel
101
smoother: sweeps (level 0) = 1
102
Output:
103
smoother: list (level 0) ->
104
smoother: type = symmetric Gauss-Seidel
105
smoother: sweeps = 1
106
*/
107
// This function is a copy of ML_CreateSublists to avoid dependency on ML
108
// Throw exception on error instead of exit()
109
void
CreateSublists
(
const
ParameterList &List, ParameterList &newList);
110
111
120
121
template
<
class
Scalar
=
DefaultScalar
,
122
class
LocalOrdinal
=
DefaultLocalOrdinal
,
123
class
GlobalOrdinal
=
DefaultGlobalOrdinal
,
124
class
Node
=
DefaultNode
>
125
class
MLParameterListInterpreter
:
public
HierarchyManager
<Scalar, LocalOrdinal, GlobalOrdinal, Node> {
126
#undef MUELU_MLPARAMETERLISTINTERPRETER_SHORT
127
#include "
MueLu_UseShortNames.hpp
"
128
129
public
:
131
132
134
MLParameterListInterpreter
() :
nullspace_
(NULL),
blksize_
(1) { }
135
144
MLParameterListInterpreter
(Teuchos::ParameterList & paramList, Teuchos::RCP<
const
Teuchos::Comm<int>
> comm = Teuchos::null, std::vector<RCP<FactoryBase> > factoryList = std::vector<RCP<FactoryBase> >(0));
145
153
MLParameterListInterpreter
(
const
std::string & xmlFileName,std::vector<RCP<FactoryBase> > factoryList = std::vector<RCP<FactoryBase> >(0));
154
156
virtual
~MLParameterListInterpreter
() { }
157
159
161
162
void
SetParameterList
(
const
Teuchos::ParameterList & paramList);
163
165
167
169
virtual
void
SetupHierarchy
(
Hierarchy
& H)
const
;
170
172
174
177
178
180
// @param AFact: Factory used by smoother to find 'A'
181
static
RCP<SmootherFactory>
GetSmootherFactory
(
const
Teuchos::ParameterList & paramList,
const
RCP<FactoryBase> & AFact = Teuchos::null);
182
184
185
187
188
194
void
AddTransferFactory
(
const
RCP<FactoryBase> & factory);
195
197
size_t
NumTransferFactories
()
const
;
199
200
private
:
201
203
int
nullspaceDim_
;
204
double
*
nullspace_
;
//TODO: replace by Teuchos::ArrayRCP<>
205
207
double
*
xcoord_
;
208
double
*
ycoord_
;
209
double
*
zcoord_
;
210
215
std::vector<RCP<FactoryBase> >
TransferFacts_
;
216
218
220
virtual
void
SetupOperator
(Operator & Op)
const
;
221
223
int
blksize_
;
224
226
227
};
// class MLParameterListInterpreter
228
229
}
// namespace MueLu
230
231
#define MUELU_MLPARAMETERLISTINTERPRETER_SHORT
232
#endif
/* MUELU_MLPARAMETERLISTINTERPRETER_DECL_HPP */
MueLu_AmalgamationFactory_fwd.hpp
MueLu_CoalesceDropFactory_fwd.hpp
MueLu_ConfigDefs.hpp
MueLu_DirectSolver_fwd.hpp
MueLu_FactoryBase_fwd.hpp
MueLu_GenericRFactory_fwd.hpp
MueLu_HierarchyManager.hpp
MueLu_Hierarchy_fwd.hpp
MueLu_IfpackSmoother_fwd.hpp
MueLu_IsorropiaInterface_fwd.hpp
MueLu_MLParameterListInterpreter_fwd.hpp
MueLu_NullspaceFactory_fwd.hpp
MueLu_PgPFactory_fwd.hpp
MueLu_RAPFactory_fwd.hpp
MueLu_RebalanceAcFactory_fwd.hpp
MueLu_RebalanceMapFactory_fwd.hpp
MueLu_RebalanceTransferFactory_fwd.hpp
MueLu_RepartitionFactory_fwd.hpp
MueLu_RepartitionHeuristicFactory_fwd.hpp
MueLu_SaPFactory_fwd.hpp
MueLu_SmootherFactory_fwd.hpp
MueLu_SmootherPrototype_fwd.hpp
MueLu_TentativePFactory_fwd.hpp
MueLu_TransPFactory_fwd.hpp
MueLu_TrilinosSmoother_fwd.hpp
MueLu_UncoupledAggregationFactory_fwd.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::MLParameterListInterpreter::AddTransferFactory
void AddTransferFactory(const RCP< FactoryBase > &factory)
Add transfer factory in the end of list of transfer factories for RAPFactory.
Definition
MueLu_MLParameterListInterpreter_def.hpp:765
MueLu::MLParameterListInterpreter::MLParameterListInterpreter
MLParameterListInterpreter(const std::string &xmlFileName, std::vector< RCP< FactoryBase > > factoryList=std::vector< RCP< FactoryBase > >(0))
Definition
MueLu_MLParameterListInterpreter_def.hpp:140
MueLu::MLParameterListInterpreter< Scalar, LocalOrdinal, GlobalOrdinal, Node >::xcoord_
double * xcoord_
Definition
MueLu_MLParameterListInterpreter_decl.hpp:207
MueLu::MLParameterListInterpreter::SetParameterList
void SetParameterList(const Teuchos::ParameterList ¶mList)
Definition
MueLu_MLParameterListInterpreter_def.hpp:146
MueLu::MLParameterListInterpreter::GetSmootherFactory
static RCP< SmootherFactory > GetSmootherFactory(const Teuchos::ParameterList ¶mList, const RCP< FactoryBase > &AFact=Teuchos::null)
Read smoother options and build the corresponding smoother factory.
Definition
MueLu_MLParameterListInterpreter_def.hpp:592
MueLu::MLParameterListInterpreter::NumTransferFactories
size_t NumTransferFactories() const
Returns number of transfer factories.
Definition
MueLu_MLParameterListInterpreter_def.hpp:772
MueLu::MLParameterListInterpreter< Scalar, LocalOrdinal, GlobalOrdinal, Node >::nullspace_
double * nullspace_
Definition
MueLu_MLParameterListInterpreter_decl.hpp:204
MueLu::MLParameterListInterpreter< Scalar, LocalOrdinal, GlobalOrdinal, Node >::TransferFacts_
std::vector< RCP< FactoryBase > > TransferFacts_
Definition
MueLu_MLParameterListInterpreter_decl.hpp:215
MueLu::MLParameterListInterpreter::MLParameterListInterpreter
MLParameterListInterpreter(Teuchos::ParameterList ¶mList, Teuchos::RCP< const Teuchos::Comm< int > > comm=Teuchos::null, std::vector< RCP< FactoryBase > > factoryList=std::vector< RCP< FactoryBase > >(0))
Definition
MueLu_MLParameterListInterpreter_def.hpp:121
MueLu::MLParameterListInterpreter< Scalar, LocalOrdinal, GlobalOrdinal, Node >::zcoord_
double * zcoord_
Definition
MueLu_MLParameterListInterpreter_decl.hpp:209
MueLu::MLParameterListInterpreter::SetupHierarchy
virtual void SetupHierarchy(Hierarchy &H) const
Setup Hierarchy object.
Definition
MueLu_MLParameterListInterpreter_def.hpp:527
MueLu::MLParameterListInterpreter< Scalar, LocalOrdinal, GlobalOrdinal, Node >::blksize_
int blksize_
Definition
MueLu_MLParameterListInterpreter_decl.hpp:223
MueLu::MLParameterListInterpreter::MLParameterListInterpreter
MLParameterListInterpreter()
Constructor.
Definition
MueLu_MLParameterListInterpreter_decl.hpp:134
MueLu::MLParameterListInterpreter< Scalar, LocalOrdinal, GlobalOrdinal, Node >::nullspaceDim_
int nullspaceDim_
Definition
MueLu_MLParameterListInterpreter_decl.hpp:203
MueLu::MLParameterListInterpreter< Scalar, LocalOrdinal, GlobalOrdinal, Node >::Hierarchy
MueLu::Hierarchy< Scalar, LocalOrdinal, GlobalOrdinal, Node > Hierarchy
MueLu::MLParameterListInterpreter< Scalar, LocalOrdinal, GlobalOrdinal, Node >::ycoord_
double * ycoord_
Definition
MueLu_MLParameterListInterpreter_decl.hpp:208
MueLu::MLParameterListInterpreter::~MLParameterListInterpreter
virtual ~MLParameterListInterpreter()
Destructor.
Definition
MueLu_MLParameterListInterpreter_decl.hpp:156
MueLu::MLParameterListInterpreter::SetupOperator
virtual void SetupOperator(Operator &Op) const
Setup Operator object.
Definition
MueLu_MLParameterListInterpreter_def.hpp:777
MueLu::MLParameterListInterpreter::HierarchyManager
MueLu::HierarchyManager< Scalar, LocalOrdinal, GlobalOrdinal, Node > HierarchyManager
Teuchos::Comm
Definition
MueLu_Memory.hpp:54
MueLu
Namespace for MueLu classes and methods.
Definition
MueLu_BrickAggregationFactory_decl.hpp:78
MueLu::CreateSublists
void CreateSublists(const ParameterList &List, ParameterList &newList)
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
Interface
MueLu_MLParameterListInterpreter_decl.hpp
Generated by
1.17.0