Teko  Version of the Day
 All Classes Files Functions Variables Pages
Teko_ReorderedLinearOp.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_ReorderedLinearOp_hpp__
11 #define __Teko_ReorderedLinearOp_hpp__
12 
13 #include "Teko_Utilities.hpp"
14 #include "Teko_ImplicitLinearOp.hpp"
15 #include "Teko_BlockedReordering.hpp"
16 
17 namespace Teko {
18 
23  public:
24  ReorderedLinearOp(const Teuchos::RCP<const BlockReorderManager> &mgr,
25  const Teuchos::RCP<Thyra::LinearOpBase<double> > &blockedOp);
26 
28  Teuchos::RCP<const BlockReorderManager> getReorderManager() const { return mgr_; }
29 
31  Teko::ModifiableLinearOp getBlockedOp() const { return blockedOp_; }
32 
34  virtual VectorSpace range() const;
35 
37  virtual VectorSpace domain() const;
38 
52  virtual void implicitApply(const MultiVector &x, MultiVector &y, const double alpha = 1.0,
53  const double beta = 0.0) const;
54 
55  virtual void describe(Teuchos::FancyOStream &out_arg,
56  const Teuchos::EVerbosityLevel verbLevel) const;
57 
58  private:
59  VectorSpace range_;
60  VectorSpace domain_;
61  Teuchos::RCP<const BlockReorderManager> mgr_;
62  Teuchos::RCP<Thyra::LinearOpBase<double> > blockedOp_;
63 };
64 
65 } // end namespace Teko
66 
67 #endif
virtual VectorSpace range() const
Range space of this operator.
Teuchos::RCP< const BlockReorderManager > getReorderManager() const
Get accessor to make reuse easier.
virtual VectorSpace domain() const
Domain space of this operator.
A virtual class that simplifies the construction of custom operators.
virtual void implicitApply(const MultiVector &x, MultiVector &y, const double alpha=1.0, const double beta=0.0) const
Perform a matrix vector multiply with this implicitly defined blocked operator.
Teko::ModifiableLinearOp getBlockedOp() const
Get accessor to make reuse easier.
This class takes a blocked linear op and represents it in a flattened form.