Tpetra parallel linear algebra
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
core
src
Tpetra_Operator.hpp
1
// @HEADER
2
// *****************************************************************************
3
// Tpetra: Templated Linear Algebra Services Package
4
//
5
// Copyright 2008 NTESS and the Tpetra contributors.
6
// SPDX-License-Identifier: BSD-3-Clause
7
// *****************************************************************************
8
// @HEADER
9
10
#ifndef TPETRA_OPERATOR_HPP
11
#define TPETRA_OPERATOR_HPP
12
13
#include <
Tpetra_Operator_fwd.hpp
>
14
#include <
Tpetra_MultiVector_fwd.hpp
>
15
#include <
Tpetra_Vector_fwd.hpp
>
16
#include <
Tpetra_Map_fwd.hpp
>
17
#include <Teuchos_Describable.hpp>
18
#include <Teuchos_BLAS_types.hpp>
19
#include <Teuchos_ScalarTraits.hpp>
20
21
namespace
Tpetra
{
22
51
template
<
class
Scalar,
52
class
LocalOrdinal,
53
class
GlobalOrdinal,
54
class
Node>
55
class
Operator
:
virtual
public
Teuchos::Describable {
56
public
:
59
61
typedef
Scalar
scalar_type
;
62
64
typedef
LocalOrdinal
local_ordinal_type
;
65
67
typedef
GlobalOrdinal
global_ordinal_type
;
68
70
typedef
Node
node_type
;
71
73
75
77
virtual
Teuchos::RCP<const Map<LocalOrdinal, GlobalOrdinal, Node> >
getDomainMap
()
const
= 0;
78
80
virtual
Teuchos::RCP<const Map<LocalOrdinal, GlobalOrdinal, Node> >
getRangeMap
()
const
= 0;
81
83
88
virtual
void
89
apply
(
const
MultiVector<Scalar, LocalOrdinal, GlobalOrdinal, Node>
&X,
90
MultiVector<Scalar, LocalOrdinal, GlobalOrdinal, Node>
&Y,
91
Teuchos::ETransp mode = Teuchos::NO_TRANS,
92
Scalar alpha = Teuchos::ScalarTraits<Scalar>::one(),
93
Scalar beta = Teuchos::ScalarTraits<Scalar>::zero())
const
= 0;
94
101
virtual
bool
hasTransposeApply
()
const
;
102
107
virtual
bool
hasDiagonal
()
const
;
108
113
virtual
void
getLocalDiagCopy
(
Vector<Scalar, LocalOrdinal, GlobalOrdinal, Node>
&diag)
const
;
114
116
};
117
118
template
<
class
Scalar,
class
LocalOrdinal,
class
GlobalOrdinal,
class
Node>
119
bool
Operator<Scalar, LocalOrdinal, GlobalOrdinal, Node>::hasTransposeApply
()
const
{
120
return
false
;
121
}
122
123
template
<
class
Scalar,
class
LocalOrdinal,
class
GlobalOrdinal,
class
Node>
124
bool
Operator<Scalar, LocalOrdinal, GlobalOrdinal, Node>::hasDiagonal
()
const
{
125
return
false
;
126
}
127
128
template
<
class
Scalar,
class
LocalOrdinal,
class
GlobalOrdinal,
class
Node>
129
void
Operator<Scalar, LocalOrdinal, GlobalOrdinal, Node>::getLocalDiagCopy
(
Vector<Scalar, LocalOrdinal, GlobalOrdinal, Node>
&diag)
const
{
130
TEUCHOS_ASSERT(
false
);
131
}
132
133
}
// namespace Tpetra
134
135
#endif
// TPETRA_OPERATOR_HPP
Tpetra_Map_fwd.hpp
Forward declaration of Tpetra::Map.
Tpetra_MultiVector_fwd.hpp
Forward declaration of Tpetra::MultiVector.
Tpetra_Operator_fwd.hpp
Forward declaration of Tpetra::Operator.
Tpetra_Vector_fwd.hpp
Forward declaration of Tpetra::Vector.
Tpetra::MultiVector
One or more distributed dense vectors.
Definition
Tpetra_MultiVector_decl.hpp:350
Tpetra::Operator
Abstract interface for operators (e.g., matrices and preconditioners).
Definition
Tpetra_Operator.hpp:55
Tpetra::Operator::getRangeMap
virtual Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > getRangeMap() const =0
The Map associated with the range of this operator, which must be compatible with Y....
Tpetra::Operator< OpScalar, LocalOrdinal, GlobalOrdinal, Node >::scalar_type
OpScalar scalar_type
Definition
Tpetra_Operator.hpp:61
Tpetra::Operator::getLocalDiagCopy
virtual void getLocalDiagCopy(Vector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &diag) const
Get the diagonal of the operator.
Definition
Tpetra_Operator.hpp:129
Tpetra::Operator::hasDiagonal
virtual bool hasDiagonal() const
Whether this operator can return its diagonal.
Definition
Tpetra_Operator.hpp:124
Tpetra::Operator< OpScalar, LocalOrdinal, GlobalOrdinal, Node >::local_ordinal_type
LocalOrdinal local_ordinal_type
Definition
Tpetra_Operator.hpp:64
Tpetra::Operator::getDomainMap
virtual Teuchos::RCP< const Map< LocalOrdinal, GlobalOrdinal, Node > > getDomainMap() const =0
The Map associated with the domain of this operator, which must be compatible with X....
Tpetra::Operator< OpScalar, LocalOrdinal, GlobalOrdinal, Node >::node_type
Node node_type
Definition
Tpetra_Operator.hpp:70
Tpetra::Operator::apply
virtual void apply(const MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &X, MultiVector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &Y, Teuchos::ETransp mode=Teuchos::NO_TRANS, Scalar alpha=Teuchos::ScalarTraits< Scalar >::one(), Scalar beta=Teuchos::ScalarTraits< Scalar >::zero()) const =0
Computes the operator-multivector application.
Tpetra::Operator::hasTransposeApply
virtual bool hasTransposeApply() const
Whether this operator supports applying the transpose or conjugate transpose.
Definition
Tpetra_Operator.hpp:119
Tpetra::Operator< OpScalar, LocalOrdinal, GlobalOrdinal, Node >::global_ordinal_type
GlobalOrdinal global_ordinal_type
Definition
Tpetra_Operator.hpp:67
Tpetra::Vector
A distributed dense vector.
Definition
Tpetra_Vector_decl.hpp:44
Tpetra
Namespace Tpetra contains the class and methods constituting the Tpetra library.
Generated by
1.17.0