Teko Version of the Day
Loading...
Searching...
No Matches
Teko_ImplicitLinearOp.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_ImplicitLinearOp_hpp__
11#define __Teko_ImplicitLinearOp_hpp__
12
13#include "Teko_Utilities.hpp"
14
15namespace Teko {
16
23class ImplicitLinearOp : public Thyra::LinearOpBase<double> {
24 public:
26 virtual VectorSpace range() const = 0;
27
29 virtual VectorSpace domain() const = 0;
30
44 virtual void implicitApply(const MultiVector& x, MultiVector& y, const double alpha = 1.0,
45 const double beta = 0.0) const = 0;
46
47 protected:
49
50
51 virtual bool opSupportedImpl(const Thyra::EOpTransp M_trans) const;
52
53 virtual void applyImpl(const Thyra::EOpTransp M_trans, const Thyra::MultiVectorBase<double>& x,
54 const Teuchos::Ptr<Thyra::MultiVectorBase<double> >& y, const double alpha,
55 const double beta) const;
56
58};
59
60} // end namespace Teko
61
62#endif
A virtual class that simplifies the construction of custom operators.
virtual VectorSpace range() const =0
Range space of this operator.
virtual VectorSpace domain() const =0
Domain space of this operator.
virtual void implicitApply(const MultiVector &x, MultiVector &y, const double alpha=1.0, const double beta=0.0) const =0
Perform a matrix vector multiply with this implicitly defined blocked operator.
virtual bool opSupportedImpl(const Thyra::EOpTransp M_trans) const
Functions required by Thyra::LinearOpBase.