class HCL_LinearOpAdj_d : public HCL_LinearOp_d

HCL_LinearOpAdj_d is the base class for all linear operators with adjoints

Inheritance:


Public Methods

virtual void AdjImage ( const HCL_Vector_d & y, HCL_Vector_d & x )
AdjImage computes the action of the adjoint on y, giving x.
virtual HCL_VectorSpace_d& Domain ()
Domain space access
virtual void Image ( const HCL_Vector_d & x, HCL_Vector_d & y )
Image computes the action of the operator on x, giving y.
virtual HCL_VectorSpace_d& Range ()
Range space access
int TestAdj (int Display = 1, double tol = 1000 )
TestAdj tests that the operator and its adjoint satisfy the "adjointness" relationship
virtual ostream& Write ( ostream & str )
Debugging information

Inherited from HCL_LinearOp_d:


Inherited from HCL_Base:

Public Methods

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

Private Fields

int ReferenceCount

Documentation

HCL_LinearOpAdj_d is the base class for all linear operators with adjoints. This class represents a linear operator mapping one vector space to another; code must be provided to implement the action of the Hilbert space adjoint. If L is a linear operator with domain X and range Y, then the adjoint L' is the linear operator with domain Y and range X defined by
   <Lx,y> = <x,L'y> for all x in X and y in Y.
In this equation, the first inner product is the one defined on the range space Y, and the second inner product is the one defined on the domain space X.

The primary class 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.

Occasionally one wishes to convert a linear operator with adjoint into the adjoint operator. There is a tool class, HCL_Adjoint_d, which accomplishes this.

virtual HCL_VectorSpace_d& Domain()
Domain space access. Returns a reference to the domain of the operator, which is a HCL_VectorSpace_d.

virtual HCL_VectorSpace_d& Range()
Range space access. Returns a reference to the range of the operator, which is a HCL_VectorSpace_d.

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

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

int TestAdj(int Display = 1, double tol = 1000 )
TestAdj tests that the operator and its adjoint satisfy the "adjointness" relationship. The return value is 1 if an error is detected, zero otherwise. The first input is a display flag; zero means no display, 1 means display a message only if there is an error, and 2 means displays the results of the test, whether there is an error or not. The second input sets the tolerance for the floating-point tests; an error is reported if two results which ought to be equal differ by a relative amount greater than tol times machine epsilon.

virtual ostream& Write( ostream & str )
Debugging information. Write should be implemented to print a description of the object that will be useful for debugging. If a complete description is lengthy, an implementor should consider just printing out a useful subset. This method will likely be used to send information to the screen when a error condition is encountered.


Direct child classes:
HCL_LinCombLinearOpAdj_d
HCL_DiagBlockLinearOpAdj_d
HCL_BlockLinearOpAdj_d
HCL_Normal_d
HCL_Adjoint_d
HCL_ColOperator_d
HCL_LinearOpAdjInv_d
HCL_LinearOpNormal_d
HCL_LinearOpAdjEucRange_d
HCL_lmbfgsOp_d

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