Thyra  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Thyra_PhysicallyBlockedLinearOpBase.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_PHYSICALLY_BLOCKED_LINEAR_OP_BASE_HPP
11 #define THYRA_PHYSICALLY_BLOCKED_LINEAR_OP_BASE_HPP
12 
13 #include "Thyra_BlockedLinearOpBase.hpp"
14 
15 
16 namespace Thyra {
17 
18 
30 template<class Scalar>
32  : virtual public BlockedLinearOpBase<Scalar>
33 {
34 public:
35 
46  virtual void beginBlockFill() = 0;
47 
63  virtual void beginBlockFill(
64  const int numRowBlocks, const int numColBlocks
65  ) = 0;
66 
86  virtual void beginBlockFill(
89  ) = 0;
90 
92  virtual bool blockFillIsActive() const = 0;
93 
108  virtual bool acceptsBlock(const int i, const int j) const = 0;
109 
121  virtual void setNonconstBlock(
122  const int i, const int j
123  ,const Teuchos::RCP<LinearOpBase<Scalar> > &block
124  ) = 0;
125 
137  virtual void setBlock(
138  const int i, const int j
139  ,const Teuchos::RCP<const LinearOpBase<Scalar> > &block
140  ) = 0;
141 
153  virtual void endBlockFill() = 0;
154 
163  virtual void uninitialize() = 0;
164 
165 private:
166 
167  // Not defined and not to be called
169  operator=(const PhysicallyBlockedLinearOpBase<Scalar>&);
170 
171 };
172 
173 
174 } // namespace Thyra
175 
176 
177 #endif // THYRA_PHYSICALLY_BLOCKED_LINEAR_OP_BASE_HPP
Base interface for linear operators that can be accessed as sub-blocks.
virtual bool blockFillIsActive() const =0
Determines if a block fill is active or not .
virtual void uninitialize()=0
Set to uninitlaized.
virtual void setNonconstBlock(const int i, const int j, const Teuchos::RCP< LinearOpBase< Scalar > > &block)=0
Set a non-const block linear operator.
Base interface for physically blocked linear operators.
virtual void endBlockFill()=0
End a block fill after which *this object can be used.
Base class for all linear operators.
virtual void beginBlockFill()=0
Begin a block fill where the product range and domain spaces will be created on the fly and the numbe...
virtual bool acceptsBlock(const int i, const int j) const =0
Determines if the block (i,j) can be filled or not.
virtual Teuchos::RCP< const ProductVectorSpaceBase< Scalar > > productDomain() const =0
Return the product space for the domain.
virtual void setBlock(const int i, const int j, const Teuchos::RCP< const LinearOpBase< Scalar > > &block)=0
Set a const block linear operator.
virtual Teuchos::RCP< const ProductVectorSpaceBase< Scalar > > productRange() const =0
Return the product space for the range.