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
//
4
// Tpetra: Templated Linear Algebra Services Package
5
// Copyright (2008) Sandia Corporation
6
//
7
// Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
8
// the U.S. Government retains certain rights in this software.
9
//
10
// Redistribution and use in source and binary forms, with or without
11
// modification, are permitted provided that the following conditions are
12
// met:
13
//
14
// 1. Redistributions of source code must retain the above copyright
15
// notice, this list of conditions and the following disclaimer.
16
//
17
// 2. Redistributions in binary form must reproduce the above copyright
18
// notice, this list of conditions and the following disclaimer in the
19
// documentation and/or other materials provided with the distribution.
20
//
21
// 3. Neither the name of the Corporation nor the names of the
22
// contributors may be used to endorse or promote products derived from
23
// this software without specific prior written permission.
24
//
25
// THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
26
// EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27
// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28
// PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
29
// CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30
// EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31
// PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
32
// PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33
// LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
34
// NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35
// SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36
//
37
// Questions? Contact Michael A. Heroux (maherou@sandia.gov)
38
//
39
// ************************************************************************
40
// @HEADER
41
42
#ifndef TPETRA_OPERATOR_HPP
43
#define TPETRA_OPERATOR_HPP
44
45
#include <
Tpetra_Operator_fwd.hpp
>
46
#include <
Tpetra_MultiVector_fwd.hpp
>
47
#include <
Tpetra_Vector_fwd.hpp
>
48
#include <
Tpetra_Map_fwd.hpp
>
49
#include <Teuchos_Describable.hpp>
50
#include <Teuchos_BLAS_types.hpp>
51
#include <Teuchos_ScalarTraits.hpp>
52
53
namespace
Tpetra
{
54
83
template
<
class
Scalar,
84
class
LocalOrdinal,
85
class
GlobalOrdinal,
86
class
Node>
87
class
Operator
:
virtual
public
Teuchos::Describable {
88
public
:
91
93
typedef
Scalar
scalar_type
;
94
96
typedef
LocalOrdinal
local_ordinal_type
;
97
99
typedef
GlobalOrdinal
global_ordinal_type
;
100
102
typedef
Node
node_type
;
103
105
107
109
virtual
Teuchos::RCP<const Map<LocalOrdinal,GlobalOrdinal,Node> >
getDomainMap
()
const
= 0;
110
112
virtual
Teuchos::RCP<const Map<LocalOrdinal,GlobalOrdinal,Node> >
getRangeMap
()
const
= 0;
113
115
120
virtual
void
121
apply
(
const
MultiVector<Scalar,LocalOrdinal,GlobalOrdinal,Node>
&X,
122
MultiVector<Scalar,LocalOrdinal,GlobalOrdinal,Node>
&Y,
123
Teuchos::ETransp mode = Teuchos::NO_TRANS,
124
Scalar alpha = Teuchos::ScalarTraits<Scalar>::one(),
125
Scalar beta = Teuchos::ScalarTraits<Scalar>::zero())
const
= 0;
126
133
virtual
bool
hasTransposeApply
()
const
;
134
139
virtual
bool
hasDiagonal
()
const
;
140
145
virtual
void
getLocalDiagCopy
(
Vector<Scalar,LocalOrdinal,GlobalOrdinal,Node>
&diag)
const
;
146
148
};
149
150
template
<
class
Scalar,
class
LocalOrdinal,
class
GlobalOrdinal,
class
Node>
151
bool
Operator<Scalar,LocalOrdinal,GlobalOrdinal,Node>::hasTransposeApply
()
const
{
152
return
false
;
153
}
154
155
template
<
class
Scalar,
class
LocalOrdinal,
class
GlobalOrdinal,
class
Node>
156
bool
Operator<Scalar,LocalOrdinal,GlobalOrdinal,Node>::hasDiagonal
()
const
{
157
return
false
;
158
}
159
160
template
<
class
Scalar,
class
LocalOrdinal,
class
GlobalOrdinal,
class
Node>
161
void
Operator<Scalar,LocalOrdinal,GlobalOrdinal,Node>::getLocalDiagCopy
(
Vector<Scalar,LocalOrdinal,GlobalOrdinal,Node>
&diag)
const
{
162
TEUCHOS_ASSERT(
false
);
163
}
164
165
}
// namespace Tpetra
166
167
#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:387
Tpetra::Operator
Abstract interface for operators (e.g., matrices and preconditioners).
Definition
Tpetra_Operator.hpp:87
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:93
Tpetra::Operator::getLocalDiagCopy
virtual void getLocalDiagCopy(Vector< Scalar, LocalOrdinal, GlobalOrdinal, Node > &diag) const
Get the diagonal of the operator.
Definition
Tpetra_Operator.hpp:161
Tpetra::Operator::hasDiagonal
virtual bool hasDiagonal() const
Whether this operator can return its diagonal.
Definition
Tpetra_Operator.hpp:156
Tpetra::Operator< OpScalar, LocalOrdinal, GlobalOrdinal, Node >::local_ordinal_type
LocalOrdinal local_ordinal_type
Definition
Tpetra_Operator.hpp:96
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:102
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:151
Tpetra::Operator< OpScalar, LocalOrdinal, GlobalOrdinal, Node >::global_ordinal_type
GlobalOrdinal global_ordinal_type
Definition
Tpetra_Operator.hpp:99
Tpetra::Vector
A distributed dense vector.
Definition
Tpetra_Vector_decl.hpp:77
Tpetra
Namespace Tpetra contains the class and methods constituting the Tpetra library.
Generated by
1.17.0