Teko Version of the Day
Loading...
Searching...
No Matches
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
17namespace Teko {
18
22class ReorderedLinearOp : public ImplicitLinearOp {
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
A virtual class that simplifies the construction of custom operators.
virtual VectorSpace domain() const
Domain space of this operator.
Teuchos::RCP< const BlockReorderManager > getReorderManager() const
Get accessor to make reuse easier.
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.
virtual VectorSpace range() const
Range space of this operator.