Tempus
Version of the Day
Time Integration
Toggle main menu visibility
Loading...
Searching...
No Matches
src
Thyra_AdjointPreconditioner.hpp
Go to the documentation of this file.
1
// @HEADER
2
// ****************************************************************************
3
// Tempus: Copyright (2017) Sandia Corporation
4
//
5
// Distributed under BSD 3-clause license (See accompanying file Copyright.txt)
6
// ****************************************************************************
7
// @HEADER
8
9
#ifndef Thyra_AdjointPreconditioner_hpp
10
#define Thyra_AdjointPreconditioner_hpp
11
12
#include "Thyra_PreconditionerBase.hpp"
13
#include "Teuchos_ConstNonconstObjectContainer.hpp"
14
#include "Thyra_DefaultScaledAdjointLinearOp.hpp"
15
16
namespace
Thyra
{
17
21
template
<
class
Scalar>
22
class
AdjointPreconditioner
:
virtual
public
PreconditionerBase
<Scalar>
23
{
24
public
:
25
28
30
AdjointPreconditioner
() {}
31
32
void
nonconstInitialize
(
33
const
RCP<
PreconditionerBase<Scalar>
> &prec) {
34
validateInitialize
(prec);
35
prec_
= prec;
36
}
37
38
void
initialize
(
39
const
RCP<
const
PreconditionerBase<Scalar>
> &prec) {
40
validateInitialize
(prec);
41
prec_
= prec;
42
}
43
44
RCP<PreconditionerBase<Scalar> >
45
getNonconstPreconditioner
() {
return
prec_
.getNonconstObj(); }
46
47
RCP<const PreconditionerBase<Scalar> >
48
getPreconditioner
()
const
{
return
prec_
.getConstObj(); }
49
50
void
uninitialize
() {
51
prec_
.uninitialize();
52
}
53
55
58
59
bool
isLeftPrecOpConst
()
const
60
{
return
prec_
.getConstObj()->isLeftPrecOpConst(); }
61
62
Teuchos::RCP<LinearOpBase<Scalar> >
getNonconstLeftPrecOp
()
63
{
return
nonconstAdjoint(
prec_
.getNonconstObj()->getNonconstLeftPrecOp()); }
64
65
Teuchos::RCP<const LinearOpBase<Scalar> >
getLeftPrecOp
()
const
66
{
return
adjoint(
prec_
.getConstObj()->getLeftPrecOp()); }
67
68
bool
isRightPrecOpConst
()
const
69
{
return
prec_
.getConstObj()->isRightPrecOpConst(); }
70
71
Teuchos::RCP<LinearOpBase<Scalar> >
getNonconstRightPrecOp
()
72
{
return
nonconstAdjoint(
prec_
.getNonconstObj()->getNonconstRightPrecOp()); }
73
74
Teuchos::RCP<const LinearOpBase<Scalar> >
getRightPrecOp
()
const
75
{
return
adjoint(
prec_
.getConstObj()->getRightPrecOp()); }
76
77
bool
isUnspecifiedPrecOpConst
()
const
78
{
return
prec_
.getConstObj()->isUnspecifiedPrecOpConst(); }
79
80
Teuchos::RCP<LinearOpBase<Scalar> >
getNonconstUnspecifiedPrecOp
()
81
{
return
nonconstAdjoint(
82
prec_
.getNonconstObj()->getNonconstUnspecifiedPrecOp()); }
83
84
Teuchos::RCP<const LinearOpBase<Scalar> >
getUnspecifiedPrecOp
()
const
85
{
return
adjoint(
prec_
.getNonconstObj()->getUnspecifiedPrecOp()); }
86
88
89
private
:
90
91
// //////////////////////////////
92
// Private types
93
94
typedef
Teuchos::ConstNonconstObjectContainer<PreconditionerBase<Scalar> >
CNPB
;
95
96
// //////////////////////////////
97
// Private data members
98
99
CNPB
prec_
;
100
101
// //////////////////////////////
102
// Private member functions
103
104
static
void
validateInitialize
(
105
const
RCP<
const
PreconditionerBase<Scalar>
> &prec) {
106
#ifdef TEUCHOS_DEBUG
107
TEUCHOS_TEST_FOR_EXCEPT(is_null(prec));
108
#else
109
(void)prec;
110
#endif
111
}
112
113
};
114
119
template
<
class
Scalar>
120
RCP<AdjointPreconditioner<Scalar> >
121
adjointPreconditioner
()
122
{
123
return
Teuchos::rcp(
new
AdjointPreconditioner<Scalar>
());
124
}
125
130
template
<
class
Scalar>
131
RCP<AdjointPreconditioner<Scalar> >
132
nonconstAdjointPreconditioner
(
133
const
RCP<
PreconditionerBase<Scalar>
> &prec
134
)
135
{
136
RCP<AdjointPreconditioner<Scalar> >
137
aprec = Teuchos::rcp(
new
AdjointPreconditioner<Scalar>
());
138
aprec->nonconstInitialize(prec);
139
return
aprec;
140
}
141
146
template
<
class
Scalar>
147
RCP<AdjointPreconditioner<Scalar> >
148
adjointPreconditioner
(
149
const
RCP<
const
PreconditionerBase<Scalar>
> &prec
150
)
151
{
152
RCP<AdjointPreconditioner<Scalar> >
153
aprec = Teuchos::rcp(
new
AdjointPreconditioner<Scalar>
());
154
aprec->initialize(prec);
155
return
aprec;
156
}
157
158
}
// end namespace Thyra
159
160
#endif
Thyra::AdjointPreconditioner::AdjointPreconditioner
AdjointPreconditioner()
Construct to uninitialized.
Definition
Thyra_AdjointPreconditioner.hpp:30
Thyra::AdjointPreconditioner::getNonconstRightPrecOp
Teuchos::RCP< LinearOpBase< Scalar > > getNonconstRightPrecOp()
Definition
Thyra_AdjointPreconditioner.hpp:71
Thyra::AdjointPreconditioner::getRightPrecOp
Teuchos::RCP< const LinearOpBase< Scalar > > getRightPrecOp() const
Definition
Thyra_AdjointPreconditioner.hpp:74
Thyra::AdjointPreconditioner::isLeftPrecOpConst
bool isLeftPrecOpConst() const
Definition
Thyra_AdjointPreconditioner.hpp:59
Thyra::AdjointPreconditioner::getNonconstPreconditioner
RCP< PreconditionerBase< Scalar > > getNonconstPreconditioner()
Definition
Thyra_AdjointPreconditioner.hpp:45
Thyra::AdjointPreconditioner::getLeftPrecOp
Teuchos::RCP< const LinearOpBase< Scalar > > getLeftPrecOp() const
Definition
Thyra_AdjointPreconditioner.hpp:65
Thyra::AdjointPreconditioner::isUnspecifiedPrecOpConst
bool isUnspecifiedPrecOpConst() const
Definition
Thyra_AdjointPreconditioner.hpp:77
Thyra::AdjointPreconditioner::nonconstAdjointPreconditioner
RCP< AdjointPreconditioner< Scalar > > nonconstAdjointPreconditioner(const RCP< PreconditionerBase< Scalar > > &prec)
Nonmember constructor function.
Definition
Thyra_AdjointPreconditioner.hpp:132
Thyra::AdjointPreconditioner::CNPB
Teuchos::ConstNonconstObjectContainer< PreconditionerBase< Scalar > > CNPB
Definition
Thyra_AdjointPreconditioner.hpp:94
Thyra::AdjointPreconditioner::getUnspecifiedPrecOp
Teuchos::RCP< const LinearOpBase< Scalar > > getUnspecifiedPrecOp() const
Definition
Thyra_AdjointPreconditioner.hpp:84
Thyra::AdjointPreconditioner::prec_
CNPB prec_
Definition
Thyra_AdjointPreconditioner.hpp:99
Thyra::AdjointPreconditioner::adjointPreconditioner
RCP< AdjointPreconditioner< Scalar > > adjointPreconditioner(const RCP< const PreconditionerBase< Scalar > > &prec)
Nonmember constructor function.
Definition
Thyra_AdjointPreconditioner.hpp:148
Thyra::AdjointPreconditioner::adjointPreconditioner
RCP< AdjointPreconditioner< Scalar > > adjointPreconditioner()
Nonmember constructor function.
Definition
Thyra_AdjointPreconditioner.hpp:121
Thyra::AdjointPreconditioner::getNonconstUnspecifiedPrecOp
Teuchos::RCP< LinearOpBase< Scalar > > getNonconstUnspecifiedPrecOp()
Definition
Thyra_AdjointPreconditioner.hpp:80
Thyra::AdjointPreconditioner::initialize
void initialize(const RCP< const PreconditionerBase< Scalar > > &prec)
Definition
Thyra_AdjointPreconditioner.hpp:38
Thyra::AdjointPreconditioner::isRightPrecOpConst
bool isRightPrecOpConst() const
Definition
Thyra_AdjointPreconditioner.hpp:68
Thyra::AdjointPreconditioner::getNonconstLeftPrecOp
Teuchos::RCP< LinearOpBase< Scalar > > getNonconstLeftPrecOp()
Definition
Thyra_AdjointPreconditioner.hpp:62
Thyra::AdjointPreconditioner::validateInitialize
static void validateInitialize(const RCP< const PreconditionerBase< Scalar > > &prec)
Definition
Thyra_AdjointPreconditioner.hpp:104
Thyra::AdjointPreconditioner::uninitialize
void uninitialize()
Definition
Thyra_AdjointPreconditioner.hpp:50
Thyra::AdjointPreconditioner::getPreconditioner
RCP< const PreconditionerBase< Scalar > > getPreconditioner() const
Definition
Thyra_AdjointPreconditioner.hpp:48
Thyra::AdjointPreconditioner::nonconstInitialize
void nonconstInitialize(const RCP< PreconditionerBase< Scalar > > &prec)
Definition
Thyra_AdjointPreconditioner.hpp:32
Thyra::PreconditionerBase
Thyra
Definition
Thyra_AdjointLinearOpWithSolveFactory.hpp:19
Generated by
1.17.0