Teko  Version of the Day
 All Classes Files Functions Variables Pages
Teko_TpetraInverseOpWrapper.hpp
1 // @HEADER
2 // *****************************************************************************
3 // Teko: A package for block and physics based preconditioning
4 //
5 // Copyright 2010 NTESS and the Teko contributors.
6 // SPDX-License-Identifier: BSD-3-Clause
7 // *****************************************************************************
8 // @HEADER
9 
10 #ifndef __Teko_TpetraInverseOpWrapper_hpp__
11 #define __Teko_TpetraInverseOpWrapper_hpp__
12 
13 #include "Teko_TpetraOperatorWrapper.hpp"
14 #include "Teko_ConfigDefs.hpp"
15 #include "Tpetra_MultiVector.hpp"
16 
17 namespace Teko {
18 namespace TpetraHelpers {
19 
20 class TpetraInverseOpWrapper : public TpetraOperatorWrapper {
21  public:
22  TpetraInverseOpWrapper(const RCP<const MappingStrategy>& forwardMaps)
23  : TpetraOperatorWrapper(forwardMaps) {}
24 
25  TpetraInverseOpWrapper(const RCP<const Thyra::LinearOpBase<ST> >& thyraOp)
26  : TpetraOperatorWrapper(thyraOp) {}
27 
29  virtual void apply(const Tpetra::MultiVector<ST, LO, GO, NT>& X,
30  Tpetra::MultiVector<ST, LO, GO, NT>& Y,
31  Teuchos::ETransp mode = Teuchos::NO_TRANS,
32  ST alpha = Teuchos::ScalarTraits<ST>::one(),
33  ST beta = Teuchos::ScalarTraits<ST>::zero()) const;
34 
36  virtual void applyInverse(const Tpetra::MultiVector<ST, LO, GO, NT>& X,
37  Tpetra::MultiVector<ST, LO, GO, NT>& Y,
38  Teuchos::ETransp mode = Teuchos::NO_TRANS,
39  ST alpha = Teuchos::ScalarTraits<ST>::one(),
40  ST beta = Teuchos::ScalarTraits<ST>::zero()) const;
41 
42  // /** */
43  // virtual const Epetra_Map& OperatorDomainMap() const;
44  //
45  // /** */
46  // virtual const Epetra_Map& OperatorRangeMap() const;
47  protected:
48  TpetraInverseOpWrapper() {}
49 };
50 
51 } // namespace TpetraHelpers
52 } // namespace Teko
53 
54 #endif