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