42 #ifndef THYRA_DEFAULT_BLOCKED_TRIANGULAR_LINEAR_OP_WITH_SOLVE_DECL_HPP
43 #define THYRA_DEFAULT_BLOCKED_TRIANGULAR_LINEAR_OP_WITH_SOLVE_DECL_HPP
46 #include "Thyra_PhysicallyBlockedLinearOpWithSolveBase.hpp"
47 #include "Thyra_PhysicallyBlockedLinearOpBase.hpp"
48 #include "Thyra_ProductVectorSpaceBase.hpp"
49 #include "Teuchos_ConstNonconstObjectContainer.hpp"
50 #include "Teuchos_Array.hpp"
111 template<
class Scalar>
144 const int i,
const int j,
149 const int i,
const int j,
162 const int numRowBlocks,
const int numColBlocks
175 const int i,
const int j,
180 const int i,
const int j,
220 getBlock(
const int i,
const int j)
const;
305 bool blockFillIsActive_;
319 void assertBlockFillIsActive(
bool)
const;
321 void assertBlockRowCol(
const int i,
const int j)
const;
323 template<
class LinearOpWithSolveType>
324 void setLOWSBlockImpl(
const int i,
const int j,
344 template<
class Scalar>
355 #endif // THYRA_DEFAULT_BLOCKED_TRIANGULAR_LINEAR_OP_WITH_SOLVE_DECL_HPP
bool acceptsBlock(const int i, const int j) const
RCP< LinearOpBase< Scalar > > getNonconstBlock(const int i, const int j)
bool acceptsLOWSBlock(const int i, const int j) const
void setNonconstBlock(const int i, const int j, const RCP< LinearOpBase< Scalar > > &block)
RCP< PhysicallyBlockedLinearOpBase< Scalar > > getNonconstBlocks()
RCP< const ProductVectorSpaceBase< Scalar > > productRange() const
EOpTransp
Enumeration for determining how a linear operator is applied. `*.
void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const
Prints the details about the constituent linear operators.
void setBlock(const int i, const int j, const RCP< const LinearOpBase< Scalar > > &block)
bool solveSupportsSolveMeasureTypeImpl(EOpTransp M_trans, const SolveMeasureType &solveMeasureType) const
std::string description() const
Prints just the name DefaultBlockedTriangularLinearOpWithSolve along with the overall dimensions and ...
RCP< const ProductVectorSpaceBase< Scalar > > productDomain() const
Base class for all linear operators that can support a high-level solve operation.
bool blockFillIsActive() const
bool opSupportedImpl(EOpTransp M_trans) const
RCP< const LinearOpBase< Scalar > > clone() const
RCP< const VectorSpaceBase< Scalar > > range() const
RCP< LinearOpWithSolveBase< Scalar > > getNonconstLOWSBlock(const int i, const int j)
Interface for a collection of column vectors called a multi-vector.
void setBlocks(const RCP< const PhysicallyBlockedLinearOpBase< Scalar > > &blocks)
Base class for all linear operators.
bool blockExists(const int i, const int j) const
bool blockIsConst(const int i, const int j) const
RCP< const PhysicallyBlockedLinearOpBase< Scalar > > getBlocks()
Concrete composite LinearOpWithSolveBase subclass that creates single upper or lower block triangular...
Simple struct for the return status from a solve.
SolveStatus< Scalar > solveImpl(const EOpTransp transp, const MultiVectorBase< Scalar > &B, const Ptr< MultiVectorBase< Scalar > > &X, const Ptr< const SolveCriteria< Scalar > > solveCriteria) const
DefaultBlockedTriangularLinearOpWithSolve()
RCP< const LinearOpBase< Scalar > > getBlock(const int i, const int j) const
void setNonconstLOWSBlock(const int i, const int j, const RCP< LinearOpWithSolveBase< Scalar > > &block)
Simple struct that defines the requested solution criteria for a solve.
void setNonconstBlocks(const RCP< PhysicallyBlockedLinearOpBase< Scalar > > &blocks)
void applyImpl(const EOpTransp M_trans, const MultiVectorBase< Scalar > &X, const Ptr< MultiVectorBase< Scalar > > &Y, const Scalar alpha, const Scalar beta) const
Base interface for linear operators with a solve that are composed out of individual LOB and LOWSB ob...
RCP< const VectorSpaceBase< Scalar > > domain() const
RCP< DefaultBlockedTriangularLinearOpWithSolve< Scalar > > defaultBlockedTriangularLinearOpWithSolve()
Nonmember constructor.
Base interface for physically blocked linear operators.
RCP< const LinearOpWithSolveBase< Scalar > > getLOWSBlock(const int i, const int j) const
bool solveSupportsImpl(EOpTransp M_trans) const
void setLOWSBlock(const int i, const int j, const RCP< const LinearOpWithSolveBase< Scalar > > &block)