MueLu Version of the Day
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"
59
62
78
79#if defined(HAVE_MUELU_ISORROPIA) && defined(HAVE_MPI)
86#endif
87
88namespace 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.
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,
124 class Node = DefaultNode>
125 class MLParameterListInterpreter : public HierarchyManager<Scalar, LocalOrdinal, GlobalOrdinal, Node> {
126#undef MUELU_MLPARAMETERLISTINTERPRETER_SHORT
128
129 public:
131
132
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
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
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
224
226
227 }; // class MLParameterListInterpreter
228
229} // namespace MueLu
230
231#define MUELU_MLPARAMETERLISTINTERPRETER_SHORT
232#endif /* MUELU_MLPARAMETERLISTINTERPRETER_DECL_HPP */
MueLu::DefaultLocalOrdinal LocalOrdinal
MueLu::DefaultScalar Scalar
MueLu::DefaultGlobalOrdinal GlobalOrdinal
MueLu::DefaultNode Node
void AddTransferFactory(const RCP< FactoryBase > &factory)
Add transfer factory in the end of list of transfer factories for RAPFactory.
MLParameterListInterpreter(const std::string &xmlFileName, std::vector< RCP< FactoryBase > > factoryList=std::vector< RCP< FactoryBase > >(0))
void SetParameterList(const Teuchos::ParameterList &paramList)
static RCP< SmootherFactory > GetSmootherFactory(const Teuchos::ParameterList &paramList, const RCP< FactoryBase > &AFact=Teuchos::null)
Read smoother options and build the corresponding smoother factory.
size_t NumTransferFactories() const
Returns number of transfer factories.
MLParameterListInterpreter(Teuchos::ParameterList &paramList, Teuchos::RCP< const Teuchos::Comm< int > > comm=Teuchos::null, std::vector< RCP< FactoryBase > > factoryList=std::vector< RCP< FactoryBase > >(0))
virtual void SetupHierarchy(Hierarchy &H) const
Setup Hierarchy object.
MueLu::Hierarchy< Scalar, LocalOrdinal, GlobalOrdinal, Node > Hierarchy
virtual void SetupOperator(Operator &Op) const
Setup Operator object.
MueLu::HierarchyManager< Scalar, LocalOrdinal, GlobalOrdinal, Node > HierarchyManager
Namespace for MueLu classes and methods.
void CreateSublists(const ParameterList &List, ParameterList &newList)
Tpetra::KokkosClassic::DefaultNode::DefaultNodeType DefaultNode
Tpetra::Details::DefaultTypes::scalar_type DefaultScalar