EpetraExt Package Browser (Single Doxygen Collection)
Development
Toggle main menu visibility
Loading...
Searching...
No Matches
src
EpetraExt_TimedEpetraOperator.cpp
Go to the documentation of this file.
1
//@HEADER
2
// ***********************************************************************
3
//
4
// EpetraExt: Epetra Extended - Linear Algebra Services Package
5
// Copyright (2011) 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
#include "Epetra_config.h"
43
#include "
EpetraExt_TimedEpetraOperator.hpp
"
44
45
EpetraExt::Epetra_Timed_Operator::Epetra_Timed_Operator
(
const
Teuchos::RCP<Epetra_Operator>& A_)
46
:
A
(A_)
47
{
48
ApplyTimer
= Teuchos::rcp(
new
Teuchos::Time(
"apply timer"
,
false
));
49
ApplyInverseTimer
= Teuchos::rcp(
new
Teuchos::Time(
"apply inverse timer"
,
false
));
50
}
51
52
EpetraExt::Epetra_Timed_Operator::~Epetra_Timed_Operator
()
53
{
54
}
55
56
int
57
EpetraExt::Epetra_Timed_Operator::SetUseTranspose
(
bool
useTranspose)
58
{
59
int
success;
60
success =
A
->SetUseTranspose(useTranspose);
61
return
success;
62
}
63
64
int
65
EpetraExt::Epetra_Timed_Operator::Apply
(
const
Epetra_MultiVector
& Input,
66
Epetra_MultiVector
& Result)
const
67
{
68
int
success;
69
ApplyTimer
->start();
70
success =
A
->Apply(Input,Result);
71
ApplyTimer
->stop();
72
return
success;
73
}
74
75
int
76
EpetraExt::Epetra_Timed_Operator::ApplyInverse
(
const
Epetra_MultiVector
& Input,
77
Epetra_MultiVector
& Result)
const
78
{
79
int
success;
80
ApplyInverseTimer
->start();
81
success =
A
->ApplyInverse(Input,Result);
82
ApplyInverseTimer
->stop();
83
return
success;
84
}
85
86
double
87
EpetraExt::Epetra_Timed_Operator::NormInf
()
const
88
{
89
return
A
->NormInf();
90
}
91
92
93
const
char
*
94
EpetraExt::Epetra_Timed_Operator::Label
()
const
95
{
96
return
A
->Label();
97
}
98
99
bool
100
EpetraExt::Epetra_Timed_Operator::UseTranspose
()
const
101
{
102
return
A
->UseTranspose();
103
}
104
105
bool
106
EpetraExt::Epetra_Timed_Operator::HasNormInf
()
const
107
{
108
return
A
->HasNormInf();
109
}
110
111
const
Epetra_Comm
&
112
EpetraExt::Epetra_Timed_Operator::Comm
()
const
113
{
114
return
A
->Comm();
115
}
116
const
Epetra_Map
&
117
EpetraExt::Epetra_Timed_Operator::OperatorDomainMap
()
const
118
{
119
return
A
->OperatorDomainMap();
120
}
121
122
const
Epetra_Map
&
123
EpetraExt::Epetra_Timed_Operator::OperatorRangeMap
()
const
124
{
125
return
A
->OperatorRangeMap();
126
}
EpetraExt_TimedEpetraOperator.hpp
EpetraExt::Epetra_Timed_Operator::Comm
virtual const Epetra_Comm & Comm() const
Returns a reference to the Epetra_Comm communicator associated with this operator.
Definition
EpetraExt_TimedEpetraOperator.cpp:112
EpetraExt::Epetra_Timed_Operator::~Epetra_Timed_Operator
virtual ~Epetra_Timed_Operator()
Destructor.
Definition
EpetraExt_TimedEpetraOperator.cpp:52
EpetraExt::Epetra_Timed_Operator::ApplyInverseTimer
Teuchos::RCP< Teuchos::Time > ApplyInverseTimer
Keeps track of the apply inverse time.
Definition
EpetraExt_TimedEpetraOperator.hpp:149
EpetraExt::Epetra_Timed_Operator::SetUseTranspose
int SetUseTranspose(bool useTranspose)
Set to true if the transpose of the operator is requested.
Definition
EpetraExt_TimedEpetraOperator.cpp:57
EpetraExt::Epetra_Timed_Operator::OperatorDomainMap
virtual const Epetra_Map & OperatorDomainMap() const
Returns the Epetra_Map object associated with the domain of this matrix operator.
Definition
EpetraExt_TimedEpetraOperator.cpp:117
EpetraExt::Epetra_Timed_Operator::ApplyInverse
virtual int ApplyInverse(const Epetra_MultiVector &X, Epetra_MultiVector &Y) const
Returns the result of the inverse of the operator applied to a Epetra_MultiVector Input in Result as ...
Definition
EpetraExt_TimedEpetraOperator.cpp:76
EpetraExt::Epetra_Timed_Operator::HasNormInf
virtual bool HasNormInf() const
Returns true if the this object can provide an approximate Inf-norm, false otherwise.
Definition
EpetraExt_TimedEpetraOperator.cpp:106
EpetraExt::Epetra_Timed_Operator::ApplyTimer
Teuchos::RCP< Teuchos::Time > ApplyTimer
Keeps track of the apply time.
Definition
EpetraExt_TimedEpetraOperator.hpp:146
EpetraExt::Epetra_Timed_Operator::Apply
virtual int Apply(const Epetra_MultiVector &Input, Epetra_MultiVector &Result) const
Returns the result of a Epetra_Operator applied to a Epetra_MultiVector Input in Result as described ...
Definition
EpetraExt_TimedEpetraOperator.cpp:65
EpetraExt::Epetra_Timed_Operator::NormInf
virtual double NormInf() const
Returns an approximate infinity norm of the operator matrix.
Definition
EpetraExt_TimedEpetraOperator.cpp:87
EpetraExt::Epetra_Timed_Operator::A
Teuchos::RCP< Epetra_Operator > A
Stores the base operator.
Definition
EpetraExt_TimedEpetraOperator.hpp:143
EpetraExt::Epetra_Timed_Operator::OperatorRangeMap
virtual const Epetra_Map & OperatorRangeMap() const
Returns the Epetra_Map object associated with the range of this matrix operator.
Definition
EpetraExt_TimedEpetraOperator.cpp:123
EpetraExt::Epetra_Timed_Operator::Label
virtual const char * Label() const
Returns a character string describing the operator.
Definition
EpetraExt_TimedEpetraOperator.cpp:94
EpetraExt::Epetra_Timed_Operator::Epetra_Timed_Operator
Epetra_Timed_Operator(const Teuchos::RCP< Epetra_Operator > &A_)
Constructor.
Definition
EpetraExt_TimedEpetraOperator.cpp:45
EpetraExt::Epetra_Timed_Operator::UseTranspose
virtual bool UseTranspose() const
Returns the current UseTranspose setting.
Definition
EpetraExt_TimedEpetraOperator.cpp:100
Epetra_Comm
Epetra_Map
Epetra_MultiVector
Generated by
1.17.0