class HCL_OpDefaultEval_d : public HCL_EvaluateOp_d

HCL_OpDefaultEval_d is the default "evaluation" class for nonlinear operators

Inheritance:


Public Methods

HCL_OpDefaultEval_d ( const HCL_Op_d * op, const HCL_Vector_d & in )
Usual constructor; requires a pointer to an operator and a reference to the input vector
virtual HCL_VectorSpace_d& Domain () const
Domain returns a reference to the domain of the underlying operator
virtual HCL_VectorSpace_d& Range () const
Range returns a reference to the range of the underlying operator.
virtual void Image ( HCL_Vector_d & y ) const
Image computes the image of the operator.
virtual HCL_LinearOp_d* Deriv () const
Deriv computes the derivative of the operator
virtual HCL_BiLinearOp_d* SecondDeriv () const
SecondDeriv computes the second derivative of the operator
virtual ostream& Write ( ostream & str ) const
Write prints a description of the object

Protected Methods

virtual void DerivImage ( const HCL_Vector_d & dx, HCL_Vector_d & dy ) const
DerivImage computes the image of the derivative on dx, yielding dy
virtual void DerivAdjImage ( const HCL_Vector_d & dy, HCL_Vector_d & dx ) const
DerivAdjImage computes the image of the adjoint of the derivative on dy, yielding dx
virtual void DerivInvImage ( const HCL_Vector_d & dy, HCL_Vector_d & dx ) const
DerivInvImage computes the image of the inverse of the derivative on dy, yielding dx
virtual void DerivInvAdjImage ( const HCL_Vector_d & dx, HCL_Vector_d & dy ) const
DerivInvAdjImage computes the image of the inverse of the adjoint of the derivative on dx, yielding dy
virtual void SecondDerivImage ( const HCL_Vector_d & dx1, const HCL_Vector_d & dx2, HCL_Vector_d & dy ) const
SecondDerivImage computes the image of the second derivative on (dx1,dx2), yielding dy
virtual void SecondDerivPartialAdjImage (const HCL_Vector_d & dx1, const HCL_Vector_d & dy, HCL_Vector_d & dx2 ) const
SecondDerivPartialAdjImage computes the image of the so-called "partial adjoint" of the second derivative on (dx1,dy), yielding dx1

Inherited from HCL_EvaluateOp_d:

Public Methods

virtual void ImageAdd( HCL_Vector_d & y, double a=1.0, double b=1.0 ) const
virtual void ImageAdd( const HCL_Vector_d & z, HCL_Vector_d & y, double a=1.0, double b=1.0 ) const
virtual const HCL_Vector_d& ImageRef() const
virtual const HCL_LinearOp_d& DerivRef() const
virtual const HCL_BiLinearOp_d& SecondDerivRef() const

Inherited from HCL_Base:

Public Methods

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

Documentation

HCL_OpDefaultEval_d is the default "evaluation" class for nonlinear operators. If is a nonlinear operator represented by an instance of HCL_Op_d, then the corresponding evaluation class represents the triple In many cases, there is a significant efficiency advantage to creating a specific evaluation class for a given operator, since then intermediate calculations that are common to the image, derivative, and second derivative can be re-used. However, if there is no such efficiency advantage to be gained, then the default evaluation class HCL_OpDefaultEval_d can be used.

The various mechanisms for implementing evaluation classes, including the use of this default class, are explained in detail, with concrete examples, in the report

"Implementing operators in HCL", Technical Report 99-22, Department of Computational and Applied Mathematics, Rice University, Houston, TX 77251-1892.

available on the HCL home page.

This class is concrete: all of its methods are implemented, and are not intended to be overridden.

virtual void DerivImage( const HCL_Vector_d & dx, HCL_Vector_d & dy ) const
DerivImage computes the image of the derivative on dx, yielding dy. This method calls the corresponding method from the underlying operator class.

virtual void DerivAdjImage( const HCL_Vector_d & dy, HCL_Vector_d & dx ) const
DerivAdjImage computes the image of the adjoint of the derivative on dy, yielding dx. This method calls the corresponding method from the underlying operator class.

virtual void DerivInvImage( const HCL_Vector_d & dy, HCL_Vector_d & dx ) const
DerivInvImage computes the image of the inverse of the derivative on dy, yielding dx. This method calls the corresponding method from the underlying operator class.

virtual void DerivInvAdjImage( const HCL_Vector_d & dx, HCL_Vector_d & dy ) const
DerivInvAdjImage computes the image of the inverse of the adjoint of the derivative on dx, yielding dy. This method calls the corresponding method from the underlying operator class.

virtual void SecondDerivImage( const HCL_Vector_d & dx1, const HCL_Vector_d & dx2, HCL_Vector_d & dy ) const
SecondDerivImage computes the image of the second derivative on (dx1,dx2), yielding dy. This method calls the corresponding method from the underlying operator class.

virtual void SecondDerivPartialAdjImage(const HCL_Vector_d & dx1, const HCL_Vector_d & dy, HCL_Vector_d & dx2 ) const
SecondDerivPartialAdjImage computes the image of the so-called "partial adjoint" of the second derivative on (dx1,dy), yielding dx1. This method calls the corresponding method from the underlying operator class.

HCL_OpDefaultEval_d( const HCL_Op_d * op, const HCL_Vector_d & in )
Usual constructor; requires a pointer to an operator and a reference to the input vector. Note that an independent copy of the input vector is made.

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

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

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

virtual HCL_LinearOp_d* Deriv() const
Deriv computes the derivative of the operator. Note that this method constructs an HCL_LinearOp_d, which the calling program is responsible for deleting with HCL_delete.

virtual HCL_BiLinearOp_d* SecondDeriv() const
SecondDeriv 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 ) const
Write prints a description of the object


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