HCL_LinearOp_d is the base class for all linear operators
virtual HCL_VectorSpace_d& | Domain () const Domain space access |
virtual HCL_VectorSpace_d& | Range () const Range space access |
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 |
int | CheckAdj (int Display = 1, double tol = 1000 ) CheckAdj tests that the operator and its adjoint satisfy the "adjointness" relationship |
virtual void | NormalImage ( const HCL_Vector_d & x, HCL_Vector_d & z ) const NormalImage computes the action of the normal on x, giving z |
int | CheckNormal ( int display = 1, double tol = 100 ) CheckNormal tests that the normal operator N is really defined by N = A'A |
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 | InvAdjImage (const HCL_Vector_d & x, HCL_Vector_d & y) const InvAdjImage computes the action of the inverse adjoint on x, giving y |
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 |
HCL_LinearOp_d is the base class for all linear operators. This class represents a linear operator mapping one vector space to another. The primary methods are:Note that this class makes no assumption about the representation of the operator. Examples include operators defined by dense or sparse matrices and solution operators of (linear) PDEs defined by simulations.
- Domain Returns a reference to the domain of the operator. This is used primarily for error-checking.
- Range Returns a reference to the range of the operator. This is used primarily for error-checking.
- Image Computes the action of the operator on a vector. Here is an example illustrating the use of Domain, Range, and Image:
void fcn( HCL_LinearOp_d & L,HCL_Vector_d & x,HCL_Vector_d & y ) { if( x.Space() != L.Domain() || y.Space() != L.Range() ) // Error condition . . . L.Image( x,y ); // y <-- Lx . . . }- ImageAdd Computes or , where a and b are scalars.
- AdjImage Computes the action of the adjoint of the operator on a vector. This method is used as follows:
L.AdjImage( y,x ); // x <-- L'yThe method is implemented as an error in this base class. In a derived class, this method must be implemented to behave as advertised if the operator will be used by algorithms which require the adjoint. If the operator is not intended to be used by such algorithms, then this method need not be over-ridden.- AdjImageAdd Analogous to ImageAdd, but for the adjoint.
- InvImage Computes the action of the inverse of the operator on a vector. This method is used as follows:
L.InvImage( y,x ); // x <-- L^{-1}yThe method is implemented as an error in this base class. In a derived class, this method must be implemented to behave as advertised if the operator will be used by algorithms which require the inverse. If the operator is not intended to be used by such algorithms, then this method need not be over-ridden.- InvImageAdd Analogous to ImageAdd, but for the inverse.
- InvAdjImage Computes the action of the inverse of the adjoint on a vector. The method is implemented as an error in this base class. In a derived class, this method must be implemented to behave as advertised if the operator will be used by algorithms which require the inverse of the adjoint. If the operator is not intended to be used by such algorithms, then this method need not be over-ridden.
- InvAdjImageAdd Analogous to ImageAdd, but for the inverse of the adjoint.
- CheckAdj tests that the operator and its adjoint satisfy the "adjointness" relationship.
- NormalImage Computes the action of the normal operator on a vector. This method is used as follows:
L.NormalImage( x,z ); // z <-- L'LyThe method is implemented in this base class to call the Image method followed by the AdjImage method. In a derived class, this method can be reimplemented if there is a more efficient way to compute the normal operator.- NormalImageAdd Analogous to ImageAdd, but for the normal operator.
- CheckNormal tests that the Image, AdjImage, and NormalImage methods are consistent.
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