Thyra Version of the Day
Loading...
Searching...
No Matches
Thyra_EpetraOperatorWrapper.hpp
1// @HEADER
2// *****************************************************************************
3// Thyra: Interfaces and Support for Abstract Numerical Algorithms
4//
5// Copyright 2004 NTESS and the Thyra contributors.
6// SPDX-License-Identifier: BSD-3-Clause
7// *****************************************************************************
8// @HEADER
9
10#ifndef THYRA_EPETRA_OPERATOR_WRAPPER_HPP
11#define THYRA_EPETRA_OPERATOR_WRAPPER_HPP
12
13#include "Thyra_LinearOpBase.hpp"
14#include "Epetra_Map.h"
15#include "Epetra_Comm.h"
16#include "Epetra_MultiVector.h"
17#include "Epetra_Operator.h"
18
19
20namespace Thyra {
21
22
32{
33public:
34
37
39 EpetraOperatorWrapper(const RCP<const LinearOpBase<double> > &thyraOp);
40
43 {
44 return thyraOp_;
45 }
46
49 const Ptr<VectorBase<double> > &thyraVec) const;
50
52 void copyThyraIntoEpetra(const VectorBase<double> &thyraVec,
53 Epetra_MultiVector &x) const;
54
56
59
61 int SetUseTranspose(bool UseTranspose_in)
62 {
63 useTranspose_ = UseTranspose_in;
64 return 0;
65 }
66
68 int Apply(const Epetra_MultiVector& X, Epetra_MultiVector& Y) const ;
69
71 int ApplyInverse(const Epetra_MultiVector& X, Epetra_MultiVector& Y) const ;
72
74 double NormInf() const ;
75
77 const char* Label() const {return label_.c_str();}
78
80 bool UseTranspose() const {return useTranspose_;}
81
83 bool HasNormInf() const {return false;}
84
86 const Epetra_Comm& Comm() const {return *comm_;}
87
89 const Epetra_Map& OperatorDomainMap() const {return *domainMap_;}
90
92 const Epetra_Map& OperatorRangeMap() const {return *rangeMap_;}
93
95
96private:
97
98 bool useTranspose_;
103 RCP<const Epetra_Map> rangeMap_;
104 RCP<const Epetra_Map> domainMap_;
105
106 std::string label_;
107
108 static RCP<const Epetra_Comm> getEpetraComm(const LinearOpBase<double>& thyraOp);
109
110};
111
112
121RCP<const LinearOpBase<double> >
123
124
125} // namespace Thyra
126
127
128#endif // THYRA_EPETRA_OPERATOR_WRAPPER_HPP
129
130#if defined(Thyra_SHOW_DEPRECATED_WARNINGS)
131#ifdef __GNUC__
132#warning "The ThyraEpetraAdapters package is deprecated"
133#endif
134#endif
135
Implements the Epetra_Operator interface with a Thyra LinearOperator.
void copyEpetraIntoThyra(const Epetra_MultiVector &x, const Ptr< VectorBase< double > > &thyraVec) const
const Epetra_Map & OperatorRangeMap() const
int ApplyInverse(const Epetra_MultiVector &X, Epetra_MultiVector &Y) const
const Epetra_Map & OperatorDomainMap() const
RCP< const LinearOpBase< double > > makeEpetraWrapper(const RCP< const LinearOpBase< double > > &thyraOp)
Wrap a Thyra operator in the Epetra_Operator interface, and then wrap it again in a Thyra operator in...
RCP< const LinearOpBase< double > > getThyraOp() const
void copyThyraIntoEpetra(const VectorBase< double > &thyraVec, Epetra_MultiVector &x) const
int Apply(const Epetra_MultiVector &X, Epetra_MultiVector &Y) const
Base class for all linear operators.
Abstract interface for finite-dimensional dense vectors.