class HCL_EvaluateOpDeriv2Adj_d : public HCL_EvaluateOpDerivAdj_d

This class represents an "evaluation" object that will be created by a HCL_OpDeriv2Adj_d object to implement the image and derivative of the operator at a point

Inheritance:


Public Methods

virtual HCL_LinearOpAdj_d* DerivAdj ()
DerivAdj computes the derivative of the operator
virtual HCL_VectorSpace_d& Domain ()
Domain returns a reference to the domain of the underlying operator
virtual void Image ( HCL_Vector_d & y )
Image computes the image of the operator.
virtual HCL_VectorSpace_d& Range ()
Range returns a reference to the range of the underlying operator.
virtual HCL_BiLinearOpAdj_d* SecondDerivAdj ()
SecondDerivAdj computes the second derivative of the operator
virtual const HCL_BiLinearOpAdj_d& SecondDerivAdjRef ()
SecondDerivAdjRef returns a reference to the second derivative at this point
virtual ostream& Write ( ostream & str )
Debugging information

Inherited from HCL_EvaluateOpDerivAdj_d:

Public Methods

virtual HCL_LinearOp_d* Deriv()
virtual const HCL_LinearOpAdj_d& DerivAdjRef()
virtual const HCL_Vector_d& ImageRef()

Inherited from HCL_Base:

Public Methods

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

Private Fields

int ReferenceCount

Documentation

This class represents an "evaluation" object that will be created by a HCL_OpDeriv2Adj_d object to implement the image and derivative of the operator at a point. The purpose of having an evaluation object is to deal with the common situation in which the operator image and derivatives share some intermediate calculations. A typical implementation of such an operator involves defining an evaluation object whose constructor performs these intermediate calculations. The Image method then completes the computation of the functional value, while the DerivAdj and SecondDerivAdj methods complete the calculation of the derivatives.

The operator image and derivatives should then be accessed through the ImageRef, DerivAdjRef, and SecondDerivAdjRef methods. These are methods implemented in the base class (i.e. they do not need to be redefined in a derived class). The ImageRef method invokes Image to get the image and returns a reference to it. On subsequent calls, ImageRef merely references the stored value. DerivAdjRef and SecondDerivAdjRef work in a similar fashion; note that these method manage the storage; the calling program does not need to allocate storage.

Here is a summary of the primary methods of this class:

virtual HCL_VectorSpace_d& Domain()
Domain returns a reference to the domain of the underlying operator

virtual HCL_VectorSpace_d& Range()
Range returns a reference to the range of the underlying operator.

virtual void Image( HCL_Vector_d & y )
Image computes the image of the operator.

virtual HCL_LinearOpAdj_d* DerivAdj()
DerivAdj computes the derivative of the operator. Note that this method constructs a HCL_LinearOpAdj_d, which the calling program is responsible for deleting with HCL_delete.

virtual const HCL_BiLinearOpAdj_d& SecondDerivAdjRef()
SecondDerivAdjRef returns a reference to the second derivative at this point. The programmer has a choice of calling SecondDerivAdj, in which case the calling routine is responsible for managing the storage, or calling SecondDerivAdjRef, in which case the Evaluation object does.

virtual HCL_BiLinearOpAdj_d* SecondDerivAdj()
SecondDerivAdj computes the second derivative of the operator. The second derivative is a bilinear operator which knows how to compute all relevant adjoints.

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.


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