MueLu  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
MueLu_ConstraintFactory_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_CONSTRAINTFACTORY_DEF_HPP
11 #define MUELU_CONSTRAINTFACTORY_DEF_HPP
12 
14 
15 #include "MueLu_Constraint.hpp"
16 #include "MueLu_Monitor.hpp"
17 
18 namespace MueLu {
19 
20 template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
22  RCP<ParameterList> validParamList = rcp(new ParameterList());
23 
24  validParamList->set<RCP<const FactoryBase> >("FineNullspace", Teuchos::null, "Generating factory for the nullspace");
25  validParamList->set<RCP<const FactoryBase> >("CoarseNullspace", Teuchos::null, "Generating factory for the nullspace");
26  validParamList->set<RCP<const FactoryBase> >("Ppattern", Teuchos::null, "Generating factory for the nonzero pattern");
27 
28  return validParamList;
29 }
30 
31 template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
33  Input(fineLevel, "Nullspace", "FineNullspace");
34  Input(coarseLevel, "Nullspace", "CoarseNullspace");
35  Input(coarseLevel, "Ppattern");
36 }
37 
38 template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
40  FactoryMonitor m(*this, "Constraint", coarseLevel);
41 
42  RCP<MultiVector> fineNullspace = Get<RCP<MultiVector> >(fineLevel, "Nullspace", "FineNullspace");
43  RCP<MultiVector> coarseNullspace = Get<RCP<MultiVector> >(coarseLevel, "Nullspace", "CoarseNullspace");
44 
45  RCP<Constraint> constraint(new Constraint);
46  constraint->Setup(*fineNullspace, *coarseNullspace,
47  Get<RCP<const CrsGraph> >(coarseLevel, "Ppattern"));
48 
49  Set(coarseLevel, "Constraint", constraint);
50 }
51 
52 } // namespace MueLu
53 
54 #endif // MUELU_CONSTRAINTFACTORY_DEF_HPP
Timer to be used in factories. Similar to Monitor but with additional timers.
Constraint space information for the potential prolongator.
ParameterList & set(std::string const &name, T &&value, std::string const &docString="", RCP< const ParameterEntryValidator > const &validator=null)
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
Class that holds all level-specific information.
Definition: MueLu_Level.hpp:63
void Build(Level &fineLevel, Level &coarseLevel) const
Build method.
RCP< const ParameterList > GetValidParameterList() const
Return a const parameter list of valid parameters that setParameterList() will accept.
void DeclareInput(Level &fineLevel, Level &coarseLevel) const
Input.