Thyra::DefaultBlockedTriangularLinearOpWithSolve< Scalar > Class Template Reference
[Development of linear Abstract Numerical Algorithms (ANAs) (Client Support)]

Concrete composite LinearOpWithSolveBase subclass that creates single upper or lower block triangular LOWSB object out of a set of LOWSB objects along the diagonal with LOB objects off diagonal. More...

#include <Thyra_DefaultBlockedTriangularLinearOpWithSolve_decl.hpp>

Inheritance diagram for Thyra::DefaultBlockedTriangularLinearOpWithSolve< Scalar >:

Inheritance graph
[legend]
List of all members.

Constructors/Initializers/Accessors

 DefaultBlockedTriangularLinearOpWithSolve ()
 
void setNonconstBlocks (const RCP< PhysicallyBlockedLinearOpBase< Scalar > > &blocks)
 
void setBlocks (const RCP< const PhysicallyBlockedLinearOpBase< Scalar > > &blocks)
 
RCP< PhysicallyBlockedLinearOpBase<
Scalar > > 
getNonconstBlocks ()
 
RCP< const PhysicallyBlockedLinearOpBase<
Scalar > > 
getBlocks ()
 

Overridden from PhysicallyBlockedLinearOpWithSolveBase

bool acceptsLOWSBlock (const int i, const int j) const
 
void setNonconstLOWSBlock (const int i, const int j, const RCP< LinearOpWithSolveBase< Scalar > > &block)
 
void setLOWSBlock (const int i, const int j, const RCP< const LinearOpWithSolveBase< Scalar > > &block)
 

Overridden from PhysicallyBlockedLinearOpBase

void beginBlockFill ()
 
void beginBlockFill (const int numRowBlocks, const int numColBlocks)
 
void beginBlockFill (const RCP< const ProductVectorSpaceBase< Scalar > > &productRange, const RCP< const ProductVectorSpaceBase< Scalar > > &productDomain)
 
bool blockFillIsActive () const
 
bool acceptsBlock (const int i, const int j) const
 
void setNonconstBlock (const int i, const int j, const RCP< LinearOpBase< Scalar > > &block)
 
void setBlock (const int i, const int j, const RCP< const LinearOpBase< Scalar > > &block)
 
void endBlockFill ()
 
void uninitialize ()
 

Overridden from BlockedLinearOpWithSolveBase

RCP< LinearOpWithSolveBase<
Scalar > > 
getNonconstLOWSBlock (const int i, const int j)
 
RCP< const LinearOpWithSolveBase<
Scalar > > 
getLOWSBlock (const int i, const int j) const
 

Overridden from BlockedLinearOpBase

RCP< const ProductVectorSpaceBase<
Scalar > > 
productRange () const
 
RCP< const ProductVectorSpaceBase<
Scalar > > 
productDomain () const
 
bool blockExists (const int i, const int j) const
 
bool blockIsConst (const int i, const int j) const
 
RCP< LinearOpBase< Scalar > > getNonconstBlock (const int i, const int j)
 
RCP< const LinearOpBase< Scalar > > getBlock (const int i, const int j) const
 

Overridden from LinearOpBase

RCP< const VectorSpaceBase<
Scalar > > 
range () const
 
RCP< const VectorSpaceBase<
Scalar > > 
domain () const
 
RCP< const LinearOpBase< Scalar > > clone () const
 

Overridden from Teuchos::Describable

std::string description () const
 Prints just the name DefaultBlockedTriangularLinearOpWithSolve along with the overall dimensions and the number of constituent operators.
void describe (Teuchos::FancyOStream &out, const Teuchos::EVerbosityLevel verbLevel) const
 Prints the details about the constituent linear operators.

Overridden from LinearOpBase

bool opSupportedImpl (EOpTransp M_trans) const
 
void applyImpl (const EOpTransp M_trans, const MultiVectorBase< Scalar > &X, const Ptr< MultiVectorBase< Scalar > > &Y, const Scalar alpha, const Scalar beta) const
 

Overridden from LinearOpWithSolveBase

bool solveSupportsImpl (EOpTransp M_trans) const
 
bool solveSupportsSolveMeasureTypeImpl (EOpTransp M_trans, const SolveMeasureType &solveMeasureType) const
 
SolveStatus< Scalar > solveImpl (const EOpTransp transp, const MultiVectorBase< Scalar > &B, const Ptr< MultiVectorBase< Scalar > > &X, const Ptr< const SolveCriteria< Scalar > > solveCriteria) const
 

Related Functions

(Note that these are not member functions.)

RCP< DefaultBlockedTriangularLinearOpWithSolve<
Scalar > > 
defaultBlockedTriangularLinearOpWithSolve ()
 Nonmember constructor.

Detailed Description

template<class Scalar>
class Thyra::DefaultBlockedTriangularLinearOpWithSolve< Scalar >

Concrete composite LinearOpWithSolveBase subclass that creates single upper or lower block triangular LOWSB object out of a set of LOWSB objects along the diagonal with LOB objects off diagonal.

This subclass implements a strictly block upper or lower triangular LOWSB object. With LOWSB objects on the diagonal, the block system can be solved by solving for each of the diagonal blocks and moving lower (or upper) blocks to the RHS on each successive solve.

For example, consider the lower block triangular linear operator:

       [ M(0,0)                   ]
   M = [ M(1,0)   M(1,1)          ]
       [ M(2,0)   M(2,1)   M(2,2) ]  

 

A linear system of the form:

   M * x = b

   =>

   [ M(0,0)                   ]   [ x(0) ]   [ b(0) ]
   [ M(1,0)   M(1,1)          ] * [ x(1) ] = [ b(1) ]
   [ M(2,0)   M(2,1)   M(2,2) ]   [ x(2) ]   [ b(2) ]

 

is solved as:

  x(0) = inv(M(0,0)) * b(0)
  x(1) = inv(M(1,1)) * ( b(1) - M(1,0)*x(0) )
  x(2) = inv(M(2,2)) * ( b(2) - M(2,0)*x(0) - M(2,1)*x(1) )

 

The same approach can be used for block upper triangular linear operators as well of course.

See the class DefaultBlockedTriangularLinearOpWithSolveFactory for an example of how one of these objects can be created from any PhysicallyBlockedLinearOpBase object and compatible LinearWithSolveBase objects.

ToDo: Finish Documentation!

Definition at line 99 of file Thyra_DefaultBlockedTriangularLinearOpWithSolve_decl.hpp.


Constructor & Destructor Documentation

template<class Scalar>
Thyra::DefaultBlockedTriangularLinearOpWithSolve< Scalar >::DefaultBlockedTriangularLinearOpWithSolve (  ) 

Definition at line 49 of file Thyra_DefaultBlockedTriangularLinearOpWithSolve_def.hpp.


Member Function Documentation

template<class Scalar>
void Thyra::DefaultBlockedTriangularLinearOpWithSolve< Scalar >::setNonconstBlocks ( const RCP< PhysicallyBlockedLinearOpBase< Scalar > > &  blocks  ) 

Definition at line 55 of file Thyra_DefaultBlockedTriangularLinearOpWithSolve_def.hpp.

template<class Scalar>
void Thyra::DefaultBlockedTriangularLinearOpWithSolve< Scalar >::setBlocks ( const RCP< const PhysicallyBlockedLinearOpBase< Scalar > > &  blocks  ) 

Definition at line 65 of file Thyra_DefaultBlockedTriangularLinearOpWithSolve_def.hpp.

template<class Scalar>
RCP< PhysicallyBlockedLinearOpBase< Scalar > > Thyra::DefaultBlockedTriangularLinearOpWithSolve< Scalar >::getNonconstBlocks (  ) 

Definition at line 76 of file Thyra_DefaultBlockedTriangularLinearOpWithSolve_def.hpp.

template<class Scalar>
RCP< const PhysicallyBlockedLinearOpBase< Scalar > > Thyra::DefaultBlockedTriangularLinearOpWithSolve< Scalar >::getBlocks (  ) 

Definition at line 84 of file Thyra_DefaultBlockedTriangularLinearOpWithSolve_def.hpp.

template<class Scalar>
bool Thyra::DefaultBlockedTriangularLinearOpWithSolve< Scalar >::acceptsLOWSBlock ( const int  i,
const int  j 
) const [virtual]

Implements Thyra::PhysicallyBlockedLinearOpWithSolveBase< Scalar >.

Definition at line 94 of file Thyra_DefaultBlockedTriangularLinearOpWithSolve_def.hpp.

template<class Scalar>
void Thyra::DefaultBlockedTriangularLinearOpWithSolve< Scalar >::setNonconstLOWSBlock ( const int  i,
const int  j,
const RCP< LinearOpWithSolveBase< Scalar > > &  block 
) [virtual]

Implements Thyra::PhysicallyBlockedLinearOpWithSolveBase< Scalar >.

Definition at line 104 of file Thyra_DefaultBlockedTriangularLinearOpWithSolve_def.hpp.

template<class Scalar>
void Thyra::DefaultBlockedTriangularLinearOpWithSolve< Scalar >::setLOWSBlock ( const int  i,
const int  j,
const RCP< const LinearOpWithSolveBase< Scalar > > &  block 
) [virtual]

Implements Thyra::PhysicallyBlockedLinearOpWithSolveBase< Scalar >.

Definition at line 114 of file Thyra_DefaultBlockedTriangularLinearOpWithSolve_def.hpp.

template<class Scalar>
void Thyra::DefaultBlockedTriangularLinearOpWithSolve< Scalar >::beginBlockFill (  )  [virtual]

Implements Thyra::PhysicallyBlockedLinearOpBase< Scalar >.

Definition at line 127 of file Thyra_DefaultBlockedTriangularLinearOpWithSolve_def.hpp.

template<class Scalar>
void Thyra::DefaultBlockedTriangularLinearOpWithSolve< Scalar >::beginBlockFill ( const int  numRowBlocks,
const int  numColBlocks 
) [virtual]

Implements Thyra::PhysicallyBlockedLinearOpBase< Scalar >.

Definition at line 135 of file Thyra_DefaultBlockedTriangularLinearOpWithSolve_def.hpp.

template<class Scalar>
void Thyra::DefaultBlockedTriangularLinearOpWithSolve< Scalar >::beginBlockFill ( const RCP< const ProductVectorSpaceBase< Scalar > > &  productRange,
const RCP< const ProductVectorSpaceBase< Scalar > > &  productDomain 
) [virtual]

Implements Thyra::PhysicallyBlockedLinearOpBase< Scalar >.

Definition at line 153 of file Thyra_DefaultBlockedTriangularLinearOpWithSolve_def.hpp.

template<class Scalar>
bool Thyra::DefaultBlockedTriangularLinearOpWithSolve< Scalar >::blockFillIsActive (  )  const [virtual]

Implements Thyra::PhysicallyBlockedLinearOpBase< Scalar >.

Definition at line 173 of file Thyra_DefaultBlockedTriangularLinearOpWithSolve_def.hpp.

template<class Scalar>
bool Thyra::DefaultBlockedTriangularLinearOpWithSolve< Scalar >::acceptsBlock ( const int  i,
const int  j 
) const [virtual]

Implements Thyra::PhysicallyBlockedLinearOpBase< Scalar >.

Definition at line 180 of file Thyra_DefaultBlockedTriangularLinearOpWithSolve_def.hpp.

template<class Scalar>
void Thyra::DefaultBlockedTriangularLinearOpWithSolve< Scalar >::setNonconstBlock ( const int  i,
const int  j,
const RCP< LinearOpBase< Scalar > > &  block 
) [virtual]

Implements Thyra::PhysicallyBlockedLinearOpBase< Scalar >.

Definition at line 191 of file Thyra_DefaultBlockedTriangularLinearOpWithSolve_def.hpp.

template<class Scalar>
void Thyra::DefaultBlockedTriangularLinearOpWithSolve< Scalar >::setBlock ( const int  i,
const int  j,
const RCP< const LinearOpBase< Scalar > > &  block 
) [virtual]

Implements Thyra::PhysicallyBlockedLinearOpBase< Scalar >.

Definition at line 202 of file Thyra_DefaultBlockedTriangularLinearOpWithSolve_def.hpp.

template<class Scalar>
void Thyra::DefaultBlockedTriangularLinearOpWithSolve< Scalar >::endBlockFill (  )  [virtual]

Implements Thyra::PhysicallyBlockedLinearOpBase< Scalar >.

Definition at line 213 of file Thyra_DefaultBlockedTriangularLinearOpWithSolve_def.hpp.

template<class Scalar>
void Thyra::DefaultBlockedTriangularLinearOpWithSolve< Scalar >::uninitialize (  )  [virtual]

Implements Thyra::PhysicallyBlockedLinearOpBase< Scalar >.

Definition at line 238 of file Thyra_DefaultBlockedTriangularLinearOpWithSolve_def.hpp.

template<class Scalar>
Teuchos::RCP< LinearOpWithSolveBase< Scalar > > Thyra::DefaultBlockedTriangularLinearOpWithSolve< Scalar >::getNonconstLOWSBlock ( const int  i,
const int  j 
) [virtual]

Implements Thyra::BlockedLinearOpWithSolveBase< Scalar >.

Definition at line 253 of file Thyra_DefaultBlockedTriangularLinearOpWithSolve_def.hpp.

template<class Scalar>
Teuchos::RCP< const LinearOpWithSolveBase< Scalar > > Thyra::DefaultBlockedTriangularLinearOpWithSolve< Scalar >::getLOWSBlock ( const int  i,
const int  j 
) const [virtual]

Implements Thyra::BlockedLinearOpWithSolveBase< Scalar >.

Definition at line 267 of file Thyra_DefaultBlockedTriangularLinearOpWithSolve_def.hpp.

template<class Scalar>
Teuchos::RCP< const ProductVectorSpaceBase< Scalar > > Thyra::DefaultBlockedTriangularLinearOpWithSolve< Scalar >::productRange (  )  const [virtual]

Implements Thyra::BlockedLinearOpBase< Scalar >.

Definition at line 284 of file Thyra_DefaultBlockedTriangularLinearOpWithSolve_def.hpp.

template<class Scalar>
Teuchos::RCP< const ProductVectorSpaceBase< Scalar > > Thyra::DefaultBlockedTriangularLinearOpWithSolve< Scalar >::productDomain (  )  const [virtual]

Implements Thyra::BlockedLinearOpBase< Scalar >.

Definition at line 292 of file Thyra_DefaultBlockedTriangularLinearOpWithSolve_def.hpp.

template<class Scalar>
bool Thyra::DefaultBlockedTriangularLinearOpWithSolve< Scalar >::blockExists ( const int  i,
const int  j 
) const [virtual]

Implements Thyra::BlockedLinearOpBase< Scalar >.

Definition at line 299 of file Thyra_DefaultBlockedTriangularLinearOpWithSolve_def.hpp.

template<class Scalar>
bool Thyra::DefaultBlockedTriangularLinearOpWithSolve< Scalar >::blockIsConst ( const int  i,
const int  j 
) const [virtual]

Implements Thyra::BlockedLinearOpBase< Scalar >.

Definition at line 312 of file Thyra_DefaultBlockedTriangularLinearOpWithSolve_def.hpp.

template<class Scalar>
Teuchos::RCP< LinearOpBase< Scalar > > Thyra::DefaultBlockedTriangularLinearOpWithSolve< Scalar >::getNonconstBlock ( const int  i,
const int  j 
) [virtual]

Implements Thyra::BlockedLinearOpBase< Scalar >.

Definition at line 324 of file Thyra_DefaultBlockedTriangularLinearOpWithSolve_def.hpp.

template<class Scalar>
Teuchos::RCP< const LinearOpBase< Scalar > > Thyra::DefaultBlockedTriangularLinearOpWithSolve< Scalar >::getBlock ( const int  i,
const int  j 
) const [virtual]

Implements Thyra::BlockedLinearOpBase< Scalar >.

Definition at line 338 of file Thyra_DefaultBlockedTriangularLinearOpWithSolve_def.hpp.

template<class Scalar>
Teuchos::RCP< const VectorSpaceBase< Scalar > > Thyra::DefaultBlockedTriangularLinearOpWithSolve< Scalar >::range (  )  const [virtual]

Implements Thyra::LinearOpBase< Scalar >.

Definition at line 355 of file Thyra_DefaultBlockedTriangularLinearOpWithSolve_def.hpp.

template<class Scalar>
Teuchos::RCP< const VectorSpaceBase< Scalar > > Thyra::DefaultBlockedTriangularLinearOpWithSolve< Scalar >::domain (  )  const [virtual]

Implements Thyra::LinearOpBase< Scalar >.

Definition at line 363 of file Thyra_DefaultBlockedTriangularLinearOpWithSolve_def.hpp.

template<class Scalar>
Teuchos::RCP< const LinearOpBase< Scalar > > Thyra::DefaultBlockedTriangularLinearOpWithSolve< Scalar >::clone (  )  const [virtual]

Reimplemented from Thyra::LinearOpBase< Scalar >.

Definition at line 371 of file Thyra_DefaultBlockedTriangularLinearOpWithSolve_def.hpp.

template<class Scalar>
std::string Thyra::DefaultBlockedTriangularLinearOpWithSolve< Scalar >::description (  )  const [virtual]

Prints just the name DefaultBlockedTriangularLinearOpWithSolve along with the overall dimensions and the number of constituent operators.

Reimplemented from Teuchos::Describable.

Definition at line 382 of file Thyra_DefaultBlockedTriangularLinearOpWithSolve_def.hpp.

template<class Scalar>
void Thyra::DefaultBlockedTriangularLinearOpWithSolve< Scalar >::describe ( Teuchos::FancyOStream out,
const Teuchos::EVerbosityLevel  verbLevel 
) const [virtual]

Prints the details about the constituent linear operators.

This function outputs different levels of detail based on the value passed in for verbLevel:

ToDo: Finish documentation!

Reimplemented from Teuchos::Describable.

Definition at line 396 of file Thyra_DefaultBlockedTriangularLinearOpWithSolve_def.hpp.

template<class Scalar>
bool Thyra::DefaultBlockedTriangularLinearOpWithSolve< Scalar >::opSupportedImpl ( EOpTransp  M_trans  )  const [protected, virtual]

Implements Thyra::LinearOpBase< Scalar >.

Definition at line 414 of file Thyra_DefaultBlockedTriangularLinearOpWithSolve_def.hpp.

template<class Scalar>
void Thyra::DefaultBlockedTriangularLinearOpWithSolve< Scalar >::applyImpl ( const EOpTransp  M_trans,
const MultiVectorBase< Scalar > &  X,
const Ptr< MultiVectorBase< Scalar > > &  Y,
const Scalar  alpha,
const Scalar  beta 
) const [protected, virtual]

Implements Thyra::LinearOpBase< Scalar >.

Definition at line 432 of file Thyra_DefaultBlockedTriangularLinearOpWithSolve_def.hpp.

template<class Scalar>
bool Thyra::DefaultBlockedTriangularLinearOpWithSolve< Scalar >::solveSupportsImpl ( EOpTransp  M_trans  )  const [protected, virtual]

Reimplemented from Thyra::LinearOpWithSolveBase< Scalar >.

Definition at line 483 of file Thyra_DefaultBlockedTriangularLinearOpWithSolve_def.hpp.

template<class Scalar>
bool Thyra::DefaultBlockedTriangularLinearOpWithSolve< Scalar >::solveSupportsSolveMeasureTypeImpl ( EOpTransp  M_trans,
const SolveMeasureType solveMeasureType 
) const [protected, virtual]

Reimplemented from Thyra::LinearOpWithSolveBase< Scalar >.

Definition at line 501 of file Thyra_DefaultBlockedTriangularLinearOpWithSolve_def.hpp.

template<class Scalar>
SolveStatus< Scalar > Thyra::DefaultBlockedTriangularLinearOpWithSolve< Scalar >::solveImpl ( const EOpTransp  transp,
const MultiVectorBase< Scalar > &  B,
const Ptr< MultiVectorBase< Scalar > > &  X,
const Ptr< const SolveCriteria< Scalar > >  solveCriteria 
) const [protected, virtual]

Implements Thyra::LinearOpWithSolveBase< Scalar >.

Definition at line 524 of file Thyra_DefaultBlockedTriangularLinearOpWithSolve_def.hpp.


Friends And Related Function Documentation

template<class Scalar>
RCP< DefaultBlockedTriangularLinearOpWithSolve< Scalar > > defaultBlockedTriangularLinearOpWithSolve (  )  [related]

Nonmember constructor.

Definition at line 333 of file Thyra_DefaultBlockedTriangularLinearOpWithSolve_decl.hpp.


The documentation for this class was generated from the following files:
Generated on Tue Jul 13 09:26:39 2010 for Thyra by  doxygen 1.4.7