Belos Package Browser (Single Doxygen Collection)
Development
Toggle main menu visibility
Loading...
Searching...
No Matches
src
BelosOperatorTraits.hpp
Go to the documentation of this file.
1
//@HEADER
2
// ************************************************************************
3
//
4
// Belos: Block Linear Solvers Package
5
// Copyright 2004 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 BELOS_OPERATOR_TRAITS_HPP
43
#define BELOS_OPERATOR_TRAITS_HPP
44
48
#include "
BelosConfigDefs.hpp
"
49
#include "
BelosTypes.hpp
"
50
51
namespace
Belos
{
52
60
template
<
class
ScalarType,
class
MV,
class
OP>
61
class
UndefinedOperatorTraits
62
{
63
public
:
70
static
inline
void
notDefined
() {
71
OP::this_type_is_missing_a_specialization();
72
};
73
};
74
108
template
<
class
ScalarType,
class
MV,
class
OP>
109
class
OperatorTraits
110
{
111
public
:
112
122
static
void
123
Apply
(
const
OP& Op,
124
const
MV& x,
125
MV& y,
126
ETrans
trans =
NOTRANS
)
127
{
128
// This will result in a deliberate compile-time error, if a
129
// specialization of OperatorTraits has not been defined for the
130
// MV and OP types.
131
UndefinedOperatorTraits<ScalarType, MV, OP>::notDefined
();
132
};
133
151
static
bool
HasApplyTranspose
(
const
OP& Op) {
152
return
false
;
153
}
154
};
155
156
}
// end Belos namespace
157
158
#endif
// BELOS_OPERATOR_TRAITS_HPP
159
160
// end of file BelosOperatorTraits.hpp
BelosConfigDefs.hpp
Belos header file which uses auto-configuration information to include necessary C++ headers.
BelosTypes.hpp
Collection of types and exceptions used within the Belos solvers.
Belos::OperatorTraits
Class which defines basic traits for the operator type.
Definition
BelosOperatorTraits.hpp:110
Belos::OperatorTraits::HasApplyTranspose
static bool HasApplyTranspose(const OP &Op)
Whether this operator implements applying the transpose.
Definition
BelosOperatorTraits.hpp:151
Belos::OperatorTraits::Apply
static void Apply(const OP &Op, const MV &x, MV &y, ETrans trans=NOTRANS)
Apply Op to x, putting the result into y.
Definition
BelosOperatorTraits.hpp:123
Belos::UndefinedOperatorTraits
Class used to require specialization of OperatorTraits.
Definition
BelosOperatorTraits.hpp:62
Belos::UndefinedOperatorTraits::notDefined
static void notDefined()
Function that will not compile if instantiation is attempted.
Definition
BelosOperatorTraits.hpp:70
Belos
Definition
Belos_Details_EBelosSolverType.cpp:45
Belos::ETrans
ETrans
Whether to apply the (conjugate) transpose of an operator.
Definition
BelosTypes.hpp:81
Belos::NOTRANS
@ NOTRANS
Definition
BelosTypes.hpp:81
Generated by
1.17.0