class HCL_DiagBlockLinearOp_d : public HCL_LinearOp_d

HCL_DiagBlockLinearOp_d implements a diagonal array of linear operators (with adjoints and inverses) acting on a product vector space

Inheritance:


Public Methods

HCL_DiagBlockLinearOp_d ( HCL_ProductSpace_d * d, HCL_ProductSpace_d * r )
Usual constructor; needs the domain and range spaces
virtual HCL_VectorSpace_d& Domain () const
Domain space access.
virtual HCL_VectorSpace_d& Range () const
Domain space access.
int Initialized () const
Initialized is a boolean method indicating whether the blocks have all been set
int IsSet ( int i ) const
IsSet is a boolean indicated whether the ith block has been initialized
HCL_LinearOp_d& operator) ( int i ) const
The () operator provides access to the operators on the diagonal.
int Number () const
Number returns the number of factors in the domain (and range).
virtual void Image ( const HCL_Vector_d & x, HCL_Vector_d & y ) const
Image computes the action of the operator on x, giving y.
virtual void AdjImage ( const HCL_Vector_d & y, HCL_Vector_d & x ) const
AdjImage computes the action of the adjoint on y, giving x.
virtual void NormalImage ( const HCL_Vector_d & x, HCL_Vector_d & z ) const
NormalImage computes the action of the normal on x, giving z.
virtual void InvAdjImage ( const HCL_Vector_d & x, HCL_Vector_d & y ) const
InvAdjImage computes the action of the inverse of the adjoint.
virtual void InvImage ( const HCL_Vector_d & y, HCL_Vector_d & x ) const
InvImage computes the action of the inverse on y, giving x.
virtual void ImageAdd (const HCL_Vector_d & x, const HCL_Vector_d & z, HCL_Vector_d & y, double a=1.0, double b=1.0) const
ImageAdd implements
virtual void AdjImageAdd (const HCL_Vector_d & x, const HCL_Vector_d & z, HCL_Vector_d & y, double a=1.0, double b=1.0) const
AdjImageAdd implements
virtual void NormalImageAdd (const HCL_Vector_d & x, const HCL_Vector_d & z, HCL_Vector_d & y, double a=1.0, double b=1.0) const
NormalImageAdd implements
virtual void InvImageAdd (const HCL_Vector_d & x, const HCL_Vector_d & z, HCL_Vector_d & y, double a=1.0, double b=1.0) const
InvImageAdd implements
virtual void InvAdjImageAdd (const HCL_Vector_d & x, const HCL_Vector_d & z, HCL_Vector_d & y, double a=1.0, double b=1.0) const
InvAdjImageAdd implements
virtual void ImageAdd (const HCL_Vector_d & x, HCL_Vector_d & y, double a=1.0, double b=1.0) const
ImageAdd implements
virtual void AdjImageAdd (const HCL_Vector_d & x, HCL_Vector_d & y, double a=1.0, double b=1.0) const
AdjImageAdd implements
virtual void NormalImageAdd (const HCL_Vector_d & x, HCL_Vector_d & y, double a=1.0, double b=1.0) const
NormalImageAdd implements
virtual void InvImageAdd (const HCL_Vector_d & x, HCL_Vector_d & y, double a=1.0, double b=1.0) const
InvImageAdd implements
virtual void InvAdjImageAdd (const HCL_Vector_d & x, HCL_Vector_d & y, double a=1.0, double b=1.0) const
InvAdjImageAdd implements
void SetNext ( HCL_LinearOp_d * L )
SetNext sets the next operator on the diagonal to L
void Set ( int i, HCL_LinearOp_d * L )
Set sets the (i,i) block to L
virtual ostream& Write ( ostream & str ) const
Write prints out the operators on the diagonal.

Inherited from HCL_LinearOp_d:

Public Methods

int CheckAdj(int Display = 1, double tol = 1000 )
int CheckNormal( int display = 1, double tol = 100 )

Inherited from HCL_Base:

Public Methods

void IncCount() const
void DecCount() const
int Count() const

Documentation

HCL_DiagBlockLinearOp_d implements a diagonal array of linear operators (with adjoints and inverses) acting on a product vector space. For example, if the array is 2x2, the operator is of the form .

In order to construct a diagonal block operator, one must specify the domain and range, which are product spaces represented by instances of HCL_ProductSpace_d; these product spaces must have the same number of factors. The diagonal blocks are then specified (in order) using the SetNext method, or in any order using the Set method. Here is an example of creating a diagonal block operator using the SetNext method. In this example, the operator is , that is, the domain space has three factors, as does the range.

// X and Y are instances of HCL_ProductSpace_d, each with 3 factors.
// The operator L will map X into Y.

   HCL_DiagBlockLinearOp_d L( &X,&Y );

// L11, L22, L33 are instances of HCL_LinearOp_d with the
// appropriate domains and ranges.  For example, L22 must map X(2) into Y(2).
// Note that, when using the SetNext method, the blocks are specified in
// order.

   L.SetNext( &L11 );
   L.SetNext( &L22 );
   L.SetNext( &L33 );

// L is now ready to use.
The same thing can be accomplished using the Set method:
// X and Y are instances of HCL_ProductSpace_d, each with 3 factors.
// The operator L will map X into Y.

   HCL_BlockLinearOp_d L( &X,&Y );

// L11, L22, L33 are instances of HCL_LinearOp_d with the
// appropriate domains and ranges.  For example, L21 must map X(2) into Y(2).
// Note that, when using the Set method, the blocks can be specified in
// any order.

   L.Set( 3,&L33 );
   L.Set( 1,&L11 );
   L.Set( 2,&L22 );

// L is now ready to use.
It is not intended that SetNext and Set both be used in initializing a single operator (although they should work---SetNext sets the first unitialized block).
HCL_DiagBlockLinearOp_d( HCL_ProductSpace_d * d, HCL_ProductSpace_d * r )
Usual constructor; needs the domain and range spaces. The operators are defined with the SetNext method or the Set method.

virtual HCL_VectorSpace_d& Domain() const
Domain space access.

virtual HCL_VectorSpace_d& Range() const
Domain space access.

int Initialized() const
Initialized is a boolean method indicating whether the blocks have all been set

int IsSet( int i ) const
IsSet is a boolean indicated whether the ith block has been initialized

HCL_LinearOp_d& operator)( int i ) const
The () operator provides access to the operators on the diagonal.

int Number() const
Number returns the number of factors in the domain (and range).

virtual void Image( const HCL_Vector_d & x, HCL_Vector_d & y ) const
Image computes the action of the operator on x, giving y.

virtual void AdjImage( const HCL_Vector_d & y, HCL_Vector_d & x ) const
AdjImage computes the action of the adjoint on y, giving x.

virtual void NormalImage( const HCL_Vector_d & x, HCL_Vector_d & z ) const
NormalImage computes the action of the normal on x, giving z.

virtual void InvAdjImage( const HCL_Vector_d & x, HCL_Vector_d & y ) const
InvAdjImage computes the action of the inverse of the adjoint.

virtual void InvImage( const HCL_Vector_d & y, HCL_Vector_d & x ) const
InvImage computes the action of the inverse on y, giving x.

virtual void ImageAdd(const HCL_Vector_d & x, const HCL_Vector_d & z, HCL_Vector_d & y, double a=1.0, double b=1.0) const
ImageAdd implements

virtual void AdjImageAdd(const HCL_Vector_d & x, const HCL_Vector_d & z, HCL_Vector_d & y, double a=1.0, double b=1.0) const
AdjImageAdd implements

virtual void NormalImageAdd(const HCL_Vector_d & x, const HCL_Vector_d & z, HCL_Vector_d & y, double a=1.0, double b=1.0) const
NormalImageAdd implements .

virtual void InvImageAdd(const HCL_Vector_d & x, const HCL_Vector_d & z, HCL_Vector_d & y, double a=1.0, double b=1.0) const
InvImageAdd implements

virtual void InvAdjImageAdd(const HCL_Vector_d & x, const HCL_Vector_d & z, HCL_Vector_d & y, double a=1.0, double b=1.0) const
InvAdjImageAdd implements .

virtual void ImageAdd(const HCL_Vector_d & x, HCL_Vector_d & y, double a=1.0, double b=1.0) const
ImageAdd implements

virtual void AdjImageAdd(const HCL_Vector_d & x, HCL_Vector_d & y, double a=1.0, double b=1.0) const
AdjImageAdd implements

virtual void NormalImageAdd(const HCL_Vector_d & x, HCL_Vector_d & y, double a=1.0, double b=1.0) const
NormalImageAdd implements

virtual void InvImageAdd(const HCL_Vector_d & x, HCL_Vector_d & y, double a=1.0, double b=1.0) const
InvImageAdd implements

virtual void InvAdjImageAdd(const HCL_Vector_d & x, HCL_Vector_d & y, double a=1.0, double b=1.0) const
InvAdjImageAdd implements

void SetNext( HCL_LinearOp_d * L )
SetNext sets the next operator on the diagonal to L

void Set( int i, HCL_LinearOp_d * L )
Set sets the (i,i) block to L

virtual ostream& Write( ostream & str ) const
Write prints out the operators on the diagonal.


This class has no child classes.

alphabetic index hierarchy of classes


this page has been generated automatically by doc++

(c)opyright by Malte Zöckler, Roland Wunderling
contact: doc++@zib.de