43 #ifndef THYRA_DEFAULT_BLOCKED_LINEAR_OP_DECL_HPP
44 #define THYRA_DEFAULT_BLOCKED_LINEAR_OP_DECL_HPP
47 #include "Thyra_PhysicallyBlockedLinearOpBase.hpp"
48 #include "Thyra_ProductVectorSpaceBase.hpp"
49 #include "Thyra_RowStatLinearOpBase.hpp"
50 #include "Thyra_ScaledLinearOpBase.hpp"
51 #include "Teuchos_ConstNonconstObjectContainer.hpp"
86 template<
class Scalar>
109 const int numRowBlocks,
const int numColBlocks
122 const int i,
const int j,
127 const int i,
const int j
155 getBlock(
const int i,
const int j)
const;
219 const RowStatLinearOpBaseUtils::ERowStat rowStat)
const;
223 const RowStatLinearOpBaseUtils::ERowStat rowStat,
258 template<
class Scalar2>
260 BlockEntry() : i(-1), j(-1) {}
261 BlockEntry(
const int i_in,
const int j_in,
const CNCLO &block_in )
262 :i(i_in),j(j_in),block(block_in)
279 std::vector<CNCLO> Ops_;
283 std::vector<BlockEntry<Scalar> > Ops_stack_;
284 bool blockFillIsActive_;
289 void resetStorage(
const int numRowBlocks,
const int numColBlocks );
290 void assertBlockFillIsActive(
bool)
const;
291 void assertBlockRowCol(
const int i,
const int j)
const;
295 template<
class LinearOpType>
297 const int i,
const int j,
300 void adjustBlockSpaces();
313 template<
class Scalar>
321 template<
class Scalar>
325 const std::string &label =
""
333 template<
class Scalar>
338 const std::string &label =
""
346 template<
class Scalar>
351 const std::string &label =
""
359 template<
class Scalar>
366 const std::string &label =
""
374 template<
class Scalar>
378 const std::string &label =
""
386 template<
class Scalar>
391 const std::string &label =
""
399 template<
class Scalar>
404 const std::string &label =
""
412 template<
class Scalar>
419 const std::string &label =
""
426 #endif // THYRA_DEFAULT_BLOCKED_LINEAR_OP_DECL_HPP
virtual bool supportsScaleLeftImpl() const
EOpTransp
Enumeration for determining how a linear operator is applied. `*.
Interface for exxtracting row statistics as a VectorBase from a supporting LinearOpBase object.
Teuchos::RCP< const ProductVectorSpaceBase< Scalar > > productDomain() const
bool opSupportedImpl(EOpTransp M_trans) const
Returns true only if all constituent operators support M_trans.
bool acceptsBlock(const int i, const int j) const
virtual bool rowStatIsSupportedImpl(const RowStatLinearOpBaseUtils::ERowStat rowStat) const
void setNonconstBlock(const int i, const int j, const Teuchos::RCP< LinearOpBase< Scalar > > &block)
Teuchos::RCP< LinearOpBase< Scalar > > getNonconstBlock(const int i, const int j)
Teuchos::RCP< const LinearOpBase< Scalar > > getBlock(const int i, const int j) const
void setBlock(const int i, const int j, const Teuchos::RCP< const LinearOpBase< Scalar > > &block)
bool blockExists(const int i, const int j) const
virtual bool supportsScaleRightImpl() const
Teuchos::RCP< const LinearOpBase< Scalar > > clone() const
Interface for a collection of column vectors called a multi-vector.
Teuchos::RCP< const VectorSpaceBase< Scalar > > range() const
Base class for all linear operators.
virtual void getRowStatImpl(const RowStatLinearOpBaseUtils::ERowStat rowStat, const Teuchos::Ptr< VectorBase< Scalar > > &rowStatVec) const
Concrete composite LinearOpBase subclass that creates single linear operator object out of a set of c...
void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const
Prints the details about the constituent linear operators.
Applies left or right sclaing to the linear operator.
Teuchos::RCP< const ProductVectorSpaceBase< Scalar > > productRange() const
virtual void scaleLeftImpl(const VectorBase< Scalar > &row_scaling)
Abstract interface for finite-dimensional dense vectors.
bool blockFillIsActive() const
virtual void scaleRightImpl(const VectorBase< Scalar > &col_scaling)
Teuchos::RCP< const VectorSpaceBase< Scalar > > domain() const
std::string description() const
Prints just the name DefaultBlockedLinearOp along with the overall dimensions and the number of const...
Base interface for physically blocked linear operators.
bool blockIsConst(const int i, const int j) const
void applyImpl(const EOpTransp M_trans, const MultiVectorBase< Scalar > &X, const Ptr< MultiVectorBase< Scalar > > &Y, const Scalar alpha, const Scalar beta) const