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 | |
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. |
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).
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