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>
133 RCP<const PhysicallyBlockedLinearOpBase<Scalar> >
getBlocks();
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,
194 RCP<LinearOpWithSolveBase<Scalar> >
197 RCP<const LinearOpWithSolveBase<Scalar> >
206 RCP<const ProductVectorSpaceBase<Scalar> >
209 RCP<const ProductVectorSpaceBase<Scalar> >
216 RCP<LinearOpBase<Scalar> >
219 RCP<const LinearOpBase<Scalar> >
220 getBlock(
const int i,
const int j)
const;
228 RCP<const VectorSpaceBase<Scalar> >
range()
const;
230 RCP<const VectorSpaceBase<Scalar> >
domain()
const;
232 RCP<const LinearOpBase<Scalar> >
clone()
const;
253 Teuchos::FancyOStream &out,
254 const Teuchos::EVerbosityLevel verbLevel
296 typedef Teuchos::ConstNonconstObjectContainer<LinearOpWithSolveBase<Scalar> >
299 typedef Teuchos::ConstNonconstObjectContainer<PhysicallyBlockedLinearOpBase<Scalar> >
305 bool blockFillIsActive_;
307 RCP<const ProductVectorSpaceBase<Scalar> > productRange_;
308 RCP<const ProductVectorSpaceBase<Scalar> > productDomain_;
311 Array<CNCLOWS> diagonalBlocks_;
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,
325 const RCP<LinearOpWithSolveType> &block );
344 template<
class Scalar>
345 RCP<DefaultBlockedTriangularLinearOpWithSolve<Scalar> >
355 #endif // THYRA_DEFAULT_BLOCKED_TRIANGULAR_LINEAR_OP_WITH_SOLVE_DECL_HPP RCP< LinearOpWithSolveBase< Scalar > > getNonconstLOWSBlock(const int i, const int j)
void setBlocks(const RCP< const PhysicallyBlockedLinearOpBase< Scalar > > &blocks)
Base class for all linear operators that can support a high-level solve operation.
EOpTransp
Enumeration for determining how a linear operator is applied. `*.
void setNonconstBlock(const int i, const int j, const RCP< LinearOpBase< Scalar > > &block)
Concrete composite LinearOpWithSolveBase subclass that creates single upper or lower block triangular...
RCP< const LinearOpBase< Scalar > > clone() const
bool solveSupportsSolveMeasureTypeImpl(EOpTransp M_trans, const SolveMeasureType &solveMeasureType) const
void setBlock(const int i, const int j, const RCP< const LinearOpBase< Scalar > > &block)
RCP< const PhysicallyBlockedLinearOpBase< Scalar > > getBlocks()
RCP< const VectorSpaceBase< Scalar > > domain() const
SolveStatus< Scalar > solveImpl(const EOpTransp transp, const MultiVectorBase< Scalar > &B, const Ptr< MultiVectorBase< Scalar > > &X, const Ptr< const SolveCriteria< Scalar > > solveCriteria) const
void applyImpl(const EOpTransp M_trans, const MultiVectorBase< Scalar > &X, const Ptr< MultiVectorBase< Scalar > > &Y, const Scalar alpha, const Scalar beta) const
bool blockFillIsActive() const
RCP< const LinearOpWithSolveBase< Scalar > > getLOWSBlock(const int i, const int j) const
bool blockExists(const int i, const int j) const
RCP< const LinearOpBase< Scalar > > getBlock(const int i, const int j) const
RCP< LinearOpBase< Scalar > > getNonconstBlock(const int i, const int j)
RCP< const ProductVectorSpaceBase< Scalar > > productRange() const
bool opSupportedImpl(EOpTransp M_trans) const
Interface for a collection of column vectors called a multi-vector.
RCP< const VectorSpaceBase< Scalar > > range() const
void setLOWSBlock(const int i, const int j, const RCP< const LinearOpWithSolveBase< Scalar > > &block)
RCP< PhysicallyBlockedLinearOpBase< Scalar > > getNonconstBlocks()
Base interface for physically blocked linear operators.
RCP< const ProductVectorSpaceBase< Scalar > > productDomain() const
Simple struct for the return status from a solve.
RCP< DefaultBlockedTriangularLinearOpWithSolve< Scalar > > defaultBlockedTriangularLinearOpWithSolve()
Nonmember constructor.
Base class for all linear operators.
std::string description() const
Prints just the name DefaultBlockedTriangularLinearOpWithSolve along with the overall dimensions and ...
void setNonconstLOWSBlock(const int i, const int j, const RCP< LinearOpWithSolveBase< Scalar > > &block)
bool blockIsConst(const int i, const int j) const
bool solveSupportsImpl(EOpTransp M_trans) const
bool acceptsBlock(const int i, const int j) const
void describe(Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const
Prints the details about the constituent linear operators.
Base interface for linear operators with a solve that are composed out of individual LOB and LOWSB ob...
Simple struct that defines the requested solution criteria for a solve.
bool acceptsLOWSBlock(const int i, const int j) const
DefaultBlockedTriangularLinearOpWithSolve()
void setNonconstBlocks(const RCP< PhysicallyBlockedLinearOpBase< Scalar > > &blocks)