MueLu Version of the Day
Loading...
Searching...
No Matches
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
18namespace MueLu {
19
20template <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
31template <class Scalar, class LocalOrdinal, class GlobalOrdinal, class Node>
33 Input(fineLevel, "Nullspace", "FineNullspace");
34 Input(coarseLevel, "Nullspace", "CoarseNullspace");
35 Input(coarseLevel, "Ppattern");
36}
37
38template <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
RCP< const ParameterList > GetValidParameterList() const
Return a const parameter list of valid parameters that setParameterList() will accept.
void Build(Level &fineLevel, Level &coarseLevel) const
Build method.
void DeclareInput(Level &fineLevel, Level &coarseLevel) const
Input.
Constraint space information for the potential prolongator.
Timer to be used in factories. Similar to Monitor but with additional timers.
Class that holds all level-specific information.
Namespace for MueLu classes and methods.