EpetraExt
Development
Toggle main menu visibility
Loading...
Searching...
No Matches
src
EpetraExt_TimedEpetraOperator.hpp
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
#ifndef EPETRAEXT_TIMED_EPETRA_OP_HPP
43
#define EPETRAEXT_TIMED_EPETRA_OP_HPP
44
45
#include "Teuchos_RCP.hpp"
46
#include "Epetra_Operator.h"
47
#include "Epetra_MultiVector.h"
48
#include <Teuchos_Time.hpp>
49
#include <
EpetraExt_ConfigDefs.h
>
50
51
namespace
EpetraExt
{
52
57
class
Epetra_Timed_Operator
:
public
Epetra_Operator
{
58
59
public
:
60
62
Epetra_Timed_Operator
(
const
Teuchos::RCP<Epetra_Operator>& A_);
63
65
virtual
~Epetra_Timed_Operator
();
66
68
int
SetUseTranspose
(
bool
useTranspose);
69
74
virtual
int
Apply
(
const
Epetra_MultiVector
& Input,
75
Epetra_MultiVector
& Result)
const
;
76
81
virtual
int
ApplyInverse
(
const
Epetra_MultiVector
& X,
82
Epetra_MultiVector
& Y)
const
;
83
85
virtual
double
NormInf
()
const
;
86
88
virtual
const
char
*
Label
()
const
;
89
91
virtual
bool
UseTranspose
()
const
;
92
97
virtual
bool
HasNormInf
()
const
;
98
103
virtual
const
Epetra_Comm
&
Comm
()
const
;
104
109
virtual
const
Epetra_Map
&
OperatorDomainMap
()
const
;
110
115
virtual
const
Epetra_Map
&
OperatorRangeMap
()
const
;
116
120
virtual
double
ApplyTime
()
const
{
return
this->
ApplyTimer
->totalElapsedTime(
false
);};
121
125
virtual
double
ApplyInverseTime
()
const
{
return
this->
ApplyInverseTimer
->totalElapsedTime(
false
);};
126
130
virtual
Teuchos::RCP<const Epetra_Operator>
ReturnOperator
()
const
{
return
this->
A
;};
131
132
private
:
133
135
Epetra_Timed_Operator
(
const
Epetra_Timed_Operator
&);
136
138
Epetra_Timed_Operator
& operator=(
const
Epetra_Timed_Operator
&);
139
140
protected
:
141
143
Teuchos::RCP<Epetra_Operator>
A
;
144
146
Teuchos::RCP<Teuchos::Time>
ApplyTimer
;
147
149
Teuchos::RCP<Teuchos::Time>
ApplyInverseTimer
;
150
151
};
// class Epetra_Timed_Operator
152
153
}
// namespace EpetraExt
154
155
#endif
// EPETRAEXT_TIMED_EPETRA_OP_HPP
EpetraExt_ConfigDefs.h
EpetraExt::Epetra_Timed_Operator
Class allows for timing the action and inverse action of an Epetra_Opetator.
Definition
EpetraExt_TimedEpetraOperator.hpp:57
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::ReturnOperator
virtual Teuchos::RCP< const Epetra_Operator > ReturnOperator() const
Returns a pointer to the underlying Epetra_Operator.
Definition
EpetraExt_TimedEpetraOperator.hpp:130
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::ApplyInverseTime
virtual double ApplyInverseTime() const
Returns the total time applying the inverse of this operator.
Definition
EpetraExt_TimedEpetraOperator.hpp:125
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::ApplyTime
virtual double ApplyTime() const
Returns the total time applying this operator.
Definition
EpetraExt_TimedEpetraOperator.hpp:120
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
Epetra_Operator
EpetraExt
EpetraExt::BlockCrsMatrix: A class for constructing a distributed block matrix.
Definition
EpetraExt_BlockCrsMatrix.cpp:46
Generated by
1.18.0