class HCL_OpPDDefaultEval_d : public HCL_EvalOpProductDomain_d

HCL_OpPDDefaultEval_d is the default "evaluation" class for nonlinear operators defined on product spaces

Inheritance:


Public Methods

HCL_OpPDDefaultEval_d ( const HCL_OpProductDomain_d * op, const HCL_ProductVector_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 and assigns it to y.
virtual HCL_LinearOp_d* PartialDeriv ( int i ) const
PartialDeriv computes a partial derivative of the operator
virtual HCL_BiLinearOp_d* SecondPartialDeriv ( int i, int j ) const
SecondPartialDeriv computes a second partial derivative of the operator
virtual ostream& Write ( ostream & str ) const
Debugging information

Protected Methods

virtual void PartialDerivImage ( int i, const HCL_Vector_d & dx, HCL_Vector_d & dy ) const
DerivImage computes the image of the derivative on dx, yielding dy
virtual void PartialDerivAdjImage ( int i, const HCL_Vector_d & dy, HCL_Vector_d & dx ) const
DerivAdjImage computes the image of the adjoint on dy, yielding dx
virtual void PartialDerivInvImage ( int i, const HCL_Vector_d & dy, HCL_Vector_d & dx ) const
DerivInvImage computes the image of the inverse on dy, yielding dx
virtual void PartialDerivInvAdjImage ( int i, const HCL_Vector_d & dx, HCL_Vector_d & dy ) const
DerivInvAdjImage computes the image of the inverse of the adjoint on dx, yielding dy
virtual void SecondPartialDerivImage ( int i, int j, const HCL_Vector_d & dxj, const HCL_Vector_d & dxi, HCL_Vector_d & dy ) const
SecondPartialDerivImage computes the image of the second partial derivative on (dxi,dxj), yielding dy
virtual void SecondPartialDerivPartialAdjImage ( int i, int j, int flag, const HCL_Vector_d & dxij, const HCL_Vector_d & dy, HCL_Vector_d & dxji ) const
SecondPartialDerivPartialAdjImage computes the action of the so-called "partial adjoint" of the second partial derivative acting This and the other protected methods call the corresponding methods from the underlying operator

Inherited from HCL_EvalOpProductDomain_d:

Public Methods

HCL_ProductSpace_d& ProductDomain() const
virtual HCL_LinearOp_d* Deriv() const
virtual const HCL_LinearOp_d& DerivRef() const
virtual const HCL_LinearOp_d& PartialDerivRef( int i ) const
virtual HCL_BiLinearOp_d* SecondDeriv() const
virtual const HCL_BiLinearOp_d& SecondDerivRef() const
virtual const HCL_BiLinearOp_d& SecondPartialDerivRef( int i, int j ) const

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

Protected Methods

virtual void DerivImage( const HCL_Vector_d & dx, HCL_Vector_d & dy ) const
virtual void DerivAdjImage( const HCL_Vector_d & dy, HCL_Vector_d & dx ) const
virtual void DerivInvImage( const HCL_Vector_d & dy, HCL_Vector_d & dx ) const
virtual void DerivInvAdjImage( const HCL_Vector_d & dx, HCL_Vector_d & dy ) const
virtual void SecondDerivImage( const HCL_Vector_d & dx1, const HCL_Vector_d & dx2, HCL_Vector_d & dy ) const
virtual void SecondDerivPartialAdjImage(const HCL_Vector_d & dx1, const HCL_Vector_d & dy, HCL_Vector_d & dx2 ) const

Inherited from HCL_Base:

Public Methods

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

Documentation

HCL_OpPDDefaultEval_d is the default "evaluation" class for nonlinear operators defined on product spaces. If is a nonlinear operator represented by an instance of HCL_OpProductDomain_d (and X is a product space), 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_OpPDDefaultEval_d can be used. This requires that certain protected virtual functions from HCL_OpProductDomain_d be implemented in the derived operator class.

The various mechanisms for implementing evaluation classes 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.

A forthcoming report, "Implementing HCL functionals and operators on product spaces", will provide similar details about implementing operators on product spaces. This report should be available from the same source in early 2000.

virtual void PartialDerivImage( int i, const HCL_Vector_d & dx, HCL_Vector_d & dy ) const
DerivImage computes the image of the derivative on dx, yielding dy. This and the other protected methods call the corresponding methods from the underlying operator.

virtual void PartialDerivAdjImage( int i, const HCL_Vector_d & dy, HCL_Vector_d & dx ) const
DerivAdjImage computes the image of the adjoint on dy, yielding dx. This and the other protected methods call the corresponding methods from the underlying operator.

virtual void PartialDerivInvImage( int i, const HCL_Vector_d & dy, HCL_Vector_d & dx ) const
DerivInvImage computes the image of the inverse on dy, yielding dx. This and the other protected methods call the corresponding methods from the underlying operator.

virtual void PartialDerivInvAdjImage( int i, const HCL_Vector_d & dx, HCL_Vector_d & dy ) const
DerivInvAdjImage computes the image of the inverse of the adjoint on dx, yielding dy. This and the other protected methods call the corresponding methods from the underlying operator.

virtual void SecondPartialDerivImage( int i, int j, const HCL_Vector_d & dxj, const HCL_Vector_d & dxi, HCL_Vector_d & dy ) const
SecondPartialDerivImage computes the image of the second partial derivative on (dxi,dxj), yielding dy. This and the other protected methods call the corresponding methods from the underlying operator.

virtual void SecondPartialDerivPartialAdjImage( int i, int j, int flag, const HCL_Vector_d & dxij, const HCL_Vector_d & dy, HCL_Vector_d & dxji ) const
SecondPartialDerivPartialAdjImage computes the action of the so-called "partial adjoint" of the second partial derivative acting This and the other protected methods call the corresponding methods from the underlying operator

HCL_OpPDDefaultEval_d( const HCL_OpProductDomain_d * op, const HCL_ProductVector_d & in )
Usual constructor; requires a pointer to an operator and a reference to the input vector. 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 and assigns it to y.

virtual HCL_LinearOp_d* PartialDeriv( int i ) const
PartialDeriv computes a partial 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* SecondPartialDeriv( int i, int j ) const
SecondPartialDeriv computes a second partial 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 ostream& Write( ostream & str ) const
Debugging information. 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