MueLu
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
Thyra_MueLuPreconditionerFactory_decl.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 THYRA_MUELU_PRECONDITIONER_FACTORY_DECL_HPP
11
#define THYRA_MUELU_PRECONDITIONER_FACTORY_DECL_HPP
12
13
#include <
MueLu_ConfigDefs.hpp
>
14
15
#if defined(HAVE_MUELU_STRATIMIKOS) && defined(HAVE_MUELU_THYRA)
16
17
// Stratimikos needs Thyra, so we don't need special guards for Thyra here
18
#include "Thyra_DefaultPreconditioner.hpp"
19
#include "Thyra_BlockedLinearOpBase.hpp"
20
#include "Thyra_DiagonalLinearOpBase.hpp"
21
#include "
Thyra_XpetraLinearOp.hpp
"
22
#include "Thyra_TpetraLinearOp.hpp"
23
#include "Thyra_TpetraThyraWrappers.hpp"
24
25
#include "Teuchos_Ptr.hpp"
26
#include "Teuchos_TestForException.hpp"
27
#include "Teuchos_Assert.hpp"
28
#include "Teuchos_Time.hpp"
29
30
#include <Xpetra_CrsMatrixWrap.hpp>
31
#include <Xpetra_CrsMatrix.hpp>
32
#include <Xpetra_Matrix.hpp>
33
#include <Xpetra_ThyraUtils.hpp>
34
35
#include <MueLu_Hierarchy.hpp>
36
#include <MueLu_HierarchyManager.hpp>
37
#include <MueLu_HierarchyUtils.hpp>
38
#include <MueLu_Utilities.hpp>
39
#include <MueLu_ParameterListInterpreter.hpp>
40
#include <
MueLu_MasterList.hpp
>
41
#include <
MueLu_XpetraOperator_decl.hpp
>
// todo fix me
42
#include <
MueLu_CreateXpetraPreconditioner.hpp
>
43
#include <MueLu_TpetraOperator.hpp>
44
#include <Xpetra_TpetraHalfPrecisionOperator.hpp>
45
46
#include "Thyra_PreconditionerFactoryBase.hpp"
47
48
#include <Tpetra_KokkosCompat_DefaultNode.hpp>
49
50
#include <list>
51
52
namespace
Thyra
{
53
54
using
Teuchos::RCP;
55
using
Teuchos::rcp;
56
57
template
<
class
Scalar,
class
LocalOrdinal,
class
GlobalOrdinal,
class
Node>
58
struct
Converters {
59
static
bool
replaceWithXpetra(ParameterList& paramList, std::string parameterName);
60
};
61
67
template
<
class
Scalar,
class
LocalOrdinal,
class
GlobalOrdinal,
class
Node = Tpetra::KokkosClassic::DefaultNode::DefaultNodeType>
68
class
MueLuPreconditionerFactory :
public
PreconditionerFactoryBase<Scalar> {
69
public
:
72
74
MueLuPreconditionerFactory();
75
76
~MueLuPreconditionerFactory();
78
81
83
bool
isCompatible(
const
LinearOpSourceBase<Scalar>& fwdOp)
const
;
85
Teuchos::RCP<PreconditionerBase<Scalar> > createPrec()
const
;
87
void
initializePrec(
const
Teuchos::RCP<
const
LinearOpSourceBase<Scalar> >& fwdOp,
88
PreconditionerBase<Scalar>* prec,
89
const
ESupportSolveUse supportSolveUse)
const
;
91
void
uninitializePrec(PreconditionerBase<Scalar>* prec,
92
Teuchos::RCP<
const
LinearOpSourceBase<Scalar> >* fwdOp,
93
ESupportSolveUse* supportSolveUse)
const
;
94
96
99
101
void
setParameterList(
const
Teuchos::RCP<Teuchos::ParameterList>& paramList);
103
Teuchos::RCP<Teuchos::ParameterList> unsetParameterList();
105
Teuchos::RCP<Teuchos::ParameterList> getNonconstParameterList();
107
Teuchos::RCP<const Teuchos::ParameterList> getParameterList()
const
;
109
Teuchos::RCP<const Teuchos::ParameterList>
getValidParameters
()
const
;
111
114
116
std::string description()
const
;
117
118
// ToDo: Add an override of describe(...) to give more detail!
119
121
122
private
:
123
// Teuchos::RCP<MueLu::Hierarchy<Scalar,LocalOrdinal,GlobalOrdinal,Node> > CreateXpetraPreconditioner(Teuchos::RCP<Xpetra::Matrix<Scalar, LocalOrdinal, GlobalOrdinal, Node> > op, const Teuchos::ParameterList& paramList, Teuchos::RCP<Xpetra::MultiVector<typename Teuchos::ScalarTraits<Scalar>::magnitudeType, LocalOrdinal, GlobalOrdinal, Node> > coords, Teuchos::RCP<Xpetra::MultiVector<Scalar, LocalOrdinal, GlobalOrdinal, Node> > nullspace) const;
124
125
Teuchos::RCP<Teuchos::ParameterList> paramList_;
126
};
127
128
}
// namespace Thyra
129
130
#endif
// #ifdef HAVE_MUELU_STRATIMIKOS
131
132
#endif
// THYRA_MUELU_PRECONDITIONER_FACTORY_DECL_HPP
MueLu_ConfigDefs.hpp
MueLu_CreateXpetraPreconditioner.hpp
Various adapters that will create a MueLu preconditioner that is an Xpetra::Matrix.
MueLu_MasterList.hpp
MueLu_XpetraOperator_decl.hpp
Thyra_XpetraLinearOp.hpp
Ifpack2::getValidParameters
void getValidParameters(Teuchos::ParameterList ¶ms)
Thyra
Definition
Thyra_MueLuTpetraQ2Q1PreconditionerFactory_decl.hpp:23
adapters
stratimikos
Thyra_MueLuPreconditionerFactory_decl.hpp
Generated by
1.17.0