Thyra Version of the Day
Loading...
Searching...
No Matches
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
16namespace Thyra {
17
18
30template<class Scalar>
32 : virtual public BlockedLinearOpBase<Scalar>
33{
34public:
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
165private:
166
167 // Not defined and not to be called
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 Teuchos::RCP< const ProductVectorSpaceBase< Scalar > > productDomain() const =0
Return the product space for the domain.
virtual Teuchos::RCP< const ProductVectorSpaceBase< Scalar > > productRange() const =0
Return the product space for the range.
Base class for all linear operators.
Base interface for physically blocked linear operators.
virtual void uninitialize()=0
Set to uninitlaized.
virtual void beginBlockFill(const int numRowBlocks, const int numColBlocks)=0
Begin a block fill where the product range and domain spaces will be created on the fly but the total...
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 void setNonconstBlock(const int i, const int j, const Teuchos::RCP< LinearOpBase< Scalar > > &block)=0
Set a non-const block linear operator.
virtual void setBlock(const int i, const int j, const Teuchos::RCP< const LinearOpBase< Scalar > > &block)=0
Set a const block linear operator.
virtual void endBlockFill()=0
End a block fill after which *this object can be used.
virtual void beginBlockFill(const Teuchos::RCP< const ProductVectorSpaceBase< Scalar > > &productRange, const Teuchos::RCP< const ProductVectorSpaceBase< Scalar > > &productDomain)=0
Begin a block fill where the product range and domain spaces are set a priori.
virtual bool acceptsBlock(const int i, const int j) const =0
Determines if the block (i,j) can be filled or not.
virtual bool blockFillIsActive() const =0
Determines if a block fill is active or not .