RVL::OperatorProductDomain< Scalar > Class Template Reference

Operator defined on product space. More...

#include <op.hh>

Inheritance diagram for RVL::OperatorProductDomain< Scalar >:

RVL::Operator< Scalar > RVL::Writeable RVL::LinOpValOp< Scalar > RVL::CompLOVOp< Scalar > RVL::ConstLinOpValOp< Scalar > RVL::LinCompLOVOp< Scalar > RVL::TangentMap< Scalar > List of all members.

Public Member Functions

 OperatorProductDomain ()
 OperatorProductDomain (const OperatorProductDomain< Scalar > &)
virtual ~OperatorProductDomain ()
virtual const ProductSpace<
Scalar > & 
getProductDomain () const =0
 access to domain as ProductSpace
const Space< Scalar > & getDomain () const
 access to domain as Space - delegates to getProductDomain

Protected Member Functions

virtual void applyPartialDeriv (int i, const Vector< Scalar > &x, const Vector< Scalar > &dxi, Vector< Scalar > &dy) const =0
 $dy = \partial_iF(x)dx_i$, where $dx_i \in X_i$
virtual void applyDeriv (const Vector< Scalar > &x, const Vector< Scalar > &dx, Vector< Scalar > &dy) const
 applyDeriv() is implemented in terms of applyPartialDeriv().
virtual void applyAdjPartialDeriv (int i, const Vector< Scalar > &x, const Vector< Scalar > &dy, Vector< Scalar > &dxi) const =0
 $dx_i = \partial_iF(x)^*dy$, where $dx_i \in X_i$
virtual void applyAdjDeriv (const Vector< Scalar > &x, const Vector< Scalar > &dy, Vector< Scalar > &dx) const
 applyAdjDeriv() is implemented in terms of applyAdjPartialDeriv().
virtual void applyPartialDeriv2 (int i, int j, const Vector< Scalar > &x, const Vector< Scalar > &dxi, const Vector< Scalar > &dxj, Vector< Scalar > &dy) const
 $dy = \partial^2_{i,j}F(x)(dx_i,dx_j)$, where $dx_i \in X_i, dx_j \in X_j$ NOTE: as is the case for applyDeriv2, default implementation is supplied and throws exception.
virtual void applyDeriv2 (const Vector< Scalar > &x, const Vector< Scalar > &dx0, const Vector< Scalar > &dx1, Vector< Scalar > &dy) const
 applyDeriv2() is implemented in terms of applyPartialDeriv2().
virtual void applyAdjPartialDeriv2 (int i, int j, const Vector< Scalar > &x, const Vector< Scalar > &dy, const Vector< Scalar > &dxj, Vector< Scalar > &dxi) const
 $dx_i = \partial^2_{i,j}F(x)^*(dy,dx_j)$, where $dx_i \in X_i, dx_j \in X_j$ NOTES: (1) adjoint of linear map $X_i \rightarrow Y$ defined by $dx_i \mapsto \partial^2_{i,j}F(x)(dx_i,dx_j)$ (2) as is the case for applyDeriv2, default implementation is supplied and throws exception.
virtual void applyAdjDeriv2 (const Vector< Scalar > &x, const Vector< Scalar > &dy, const Vector< Scalar > &dx1, Vector< Scalar > &dx0) const
 applyAdjDeriv2() is implemented in terms of applyAdjPartialDeriv2().
virtual OperatorProductDomain<
Scalar > * 
clonePD () const =0
 Primary clone method returns object of this type; parent clone method delegates.
Operator< Scalar > * clone () const

Static Protected Member Functions

static void export_applyPartialDeriv (OperatorProductDomain< Scalar > const &f, int i, const Vector< Scalar > &x, const Vector< Scalar > &dxi, Vector< Scalar > &dy)
static void export_applyAdjPartialDeriv (OperatorProductDomain< Scalar > const &f, int i, const Vector< Scalar > &x, const Vector< Scalar > &dy, Vector< Scalar > &dxi)
static void export_applyPartialDeriv2 (OperatorProductDomain< Scalar > const &f, int i, int j, const Vector< Scalar > &x, const Vector< Scalar > &dxi, const Vector< Scalar > &dxj, Vector< Scalar > &dy)
static void export_applyAdjPartialDeriv2 (OperatorProductDomain< Scalar > const &f, int i, int j, const Vector< Scalar > &x, const Vector< Scalar > &dy, const Vector< Scalar > &dxj, Vector< Scalar > &dxi)

Friends

class OperatorEvaluation< Scalar >
class RestrictOp< Scalar >

Detailed Description

template<class Scalar>
class RVL::OperatorProductDomain< Scalar >

Operator defined on product space.

Partial derivatives are defined, as is access to the domain as a ProductSpace. As for the parent class, all functions which may change the internal state are protected, accessed only by the corresponding OperatorProductDomainEvaluation objects, which act on independent captive instances.

Definition at line 298 of file op.hh.


Constructor & Destructor Documentation

template<class Scalar>
RVL::OperatorProductDomain< Scalar >::OperatorProductDomain (  ) 

Definition at line 510 of file op.hh.

template<class Scalar>
RVL::OperatorProductDomain< Scalar >::OperatorProductDomain ( const OperatorProductDomain< Scalar > &   ) 

Definition at line 511 of file op.hh.

template<class Scalar>
virtual RVL::OperatorProductDomain< Scalar >::~OperatorProductDomain (  )  [virtual]

Definition at line 512 of file op.hh.


Member Function Documentation

template<class Scalar>
virtual void RVL::OperatorProductDomain< Scalar >::applyPartialDeriv ( int  i,
const Vector< Scalar > &  x,
const Vector< Scalar > &  dxi,
Vector< Scalar > &  dy 
) const [protected, pure virtual]

$dy = \partial_iF(x)dx_i$, where $dx_i \in X_i$

Implemented in RVL::LinOpValOp< Scalar >.

Referenced by RVL::OperatorProductDomain< Scalar >::applyDeriv(), RVL::OperatorEvaluation< Scalar >::applyPartialDeriv(), and RVL::OperatorProductDomain< Scalar >::export_applyPartialDeriv().

template<class Scalar>
virtual void RVL::OperatorProductDomain< Scalar >::applyDeriv ( const Vector< Scalar > &  x,
const Vector< Scalar > &  dx,
Vector< Scalar > &  dy 
) const [protected, virtual]

applyDeriv() is implemented in terms of applyPartialDeriv().

Default implementation supplied, which may be overridden.

Implements RVL::Operator< Scalar >.

Definition at line 315 of file op.hh.

References RVL::OperatorProductDomain< Scalar >::applyPartialDeriv(), and RVL::Vector< Scalar >::linComb().

template<class Scalar>
virtual void RVL::OperatorProductDomain< Scalar >::applyAdjPartialDeriv ( int  i,
const Vector< Scalar > &  x,
const Vector< Scalar > &  dy,
Vector< Scalar > &  dxi 
) const [protected, pure virtual]

$dx_i = \partial_iF(x)^*dy$, where $dx_i \in X_i$

Implemented in RVL::LinOpValOp< Scalar >.

Referenced by RVL::OperatorProductDomain< Scalar >::applyAdjDeriv(), RVL::OperatorEvaluation< Scalar >::applyAdjPartialDeriv(), and RVL::OperatorProductDomain< Scalar >::export_applyAdjPartialDeriv().

template<class Scalar>
virtual void RVL::OperatorProductDomain< Scalar >::applyAdjDeriv ( const Vector< Scalar > &  x,
const Vector< Scalar > &  dy,
Vector< Scalar > &  dx 
) const [protected, virtual]

applyAdjDeriv() is implemented in terms of applyAdjPartialDeriv().

Default implementation supplied, which may be overridden.

Implements RVL::Operator< Scalar >.

Definition at line 342 of file op.hh.

References RVL::OperatorProductDomain< Scalar >::applyAdjPartialDeriv(), and RVL::Components< Scalar >::getSize().

template<class Scalar>
virtual void RVL::OperatorProductDomain< Scalar >::applyPartialDeriv2 ( int  i,
int  j,
const Vector< Scalar > &  x,
const Vector< Scalar > &  dxi,
const Vector< Scalar > &  dxj,
Vector< Scalar > &  dy 
) const [protected, virtual]

$dy = \partial^2_{i,j}F(x)(dx_i,dx_j)$, where $dx_i \in X_i, dx_j \in X_j$ NOTE: as is the case for applyDeriv2, default implementation is supplied and throws exception.

Reimplemented in RVL::LinOpValOp< Scalar >.

Definition at line 360 of file op.hh.

References RVL::Writeable::write().

Referenced by RVL::OperatorProductDomain< Scalar >::export_applyPartialDeriv2().

template<class Scalar>
virtual void RVL::OperatorProductDomain< Scalar >::applyDeriv2 ( const Vector< Scalar > &  x,
const Vector< Scalar > &  dx0,
const Vector< Scalar > &  dx1,
Vector< Scalar > &  dy 
) const [protected, virtual]

applyDeriv2() is implemented in terms of applyPartialDeriv2().

Default implementation supplied, which may be overridden.

Reimplemented from RVL::Operator< Scalar >.

Definition at line 376 of file op.hh.

References RVL::OperatorProductDomain< Scalar >::getProductDomain(), RVL::Vector< Scalar >::linComb(), and RVL::Vector< Scalar >::zero().

template<class Scalar>
virtual void RVL::OperatorProductDomain< Scalar >::applyAdjPartialDeriv2 ( int  i,
int  j,
const Vector< Scalar > &  x,
const Vector< Scalar > &  dy,
const Vector< Scalar > &  dxj,
Vector< Scalar > &  dxi 
) const [protected, virtual]

$dx_i = \partial^2_{i,j}F(x)^*(dy,dx_j)$, where $dx_i \in X_i, dx_j \in X_j$ NOTES: (1) adjoint of linear map $X_i \rightarrow Y$ defined by $dx_i \mapsto \partial^2_{i,j}F(x)(dx_i,dx_j)$ (2) as is the case for applyDeriv2, default implementation is supplied and throws exception.

Reimplemented in RVL::LinOpValOp< Scalar >.

Definition at line 405 of file op.hh.

References RVL::Writeable::write().

Referenced by RVL::OperatorProductDomain< Scalar >::export_applyAdjPartialDeriv2().

template<class Scalar>
virtual void RVL::OperatorProductDomain< Scalar >::applyAdjDeriv2 ( const Vector< Scalar > &  x,
const Vector< Scalar > &  dy,
const Vector< Scalar > &  dx1,
Vector< Scalar > &  dx0 
) const [protected, virtual]

applyAdjDeriv2() is implemented in terms of applyAdjPartialDeriv2().

Default implementation supplied, which may be overridden.

Reimplemented from RVL::Operator< Scalar >.

Definition at line 421 of file op.hh.

References RVL::OperatorProductDomain< Scalar >::getProductDomain(), and RVL::Vector< Scalar >::zero().

template<class Scalar>
static void RVL::OperatorProductDomain< Scalar >::export_applyPartialDeriv ( OperatorProductDomain< Scalar > const &  f,
int  i,
const Vector< Scalar > &  x,
const Vector< Scalar > &  dxi,
Vector< Scalar > &  dy 
) [static, protected]

Definition at line 445 of file op.hh.

References RVL::OperatorProductDomain< Scalar >::applyPartialDeriv().

Referenced by RVL::RestrictOp< Scalar >::applyDeriv().

template<class Scalar>
static void RVL::OperatorProductDomain< Scalar >::export_applyAdjPartialDeriv ( OperatorProductDomain< Scalar > const &  f,
int  i,
const Vector< Scalar > &  x,
const Vector< Scalar > &  dy,
Vector< Scalar > &  dxi 
) [static, protected]

Definition at line 459 of file op.hh.

References RVL::OperatorProductDomain< Scalar >::applyAdjPartialDeriv().

Referenced by RVL::RestrictOp< Scalar >::applyAdjDeriv().

template<class Scalar>
static void RVL::OperatorProductDomain< Scalar >::export_applyPartialDeriv2 ( OperatorProductDomain< Scalar > const &  f,
int  i,
int  j,
const Vector< Scalar > &  x,
const Vector< Scalar > &  dxi,
const Vector< Scalar > &  dxj,
Vector< Scalar > &  dy 
) [static, protected]

Definition at line 473 of file op.hh.

References RVL::OperatorProductDomain< Scalar >::applyPartialDeriv2().

Referenced by RVL::RestrictOp< Scalar >::applyDeriv2().

template<class Scalar>
static void RVL::OperatorProductDomain< Scalar >::export_applyAdjPartialDeriv2 ( OperatorProductDomain< Scalar > const &  f,
int  i,
int  j,
const Vector< Scalar > &  x,
const Vector< Scalar > &  dy,
const Vector< Scalar > &  dxj,
Vector< Scalar > &  dxi 
) [static, protected]

Definition at line 488 of file op.hh.

References RVL::OperatorProductDomain< Scalar >::applyAdjPartialDeriv2().

Referenced by RVL::RestrictOp< Scalar >::applyAdjDeriv2().

template<class Scalar>
virtual OperatorProductDomain<Scalar>* RVL::OperatorProductDomain< Scalar >::clonePD (  )  const [protected, pure virtual]

Primary clone method returns object of this type; parent clone method delegates.

Implemented in RVL::ConstLinOpValOp< Scalar >, RVL::TangentMap< Scalar >, RVL::CompLOVOp< Scalar >, and RVL::LinCompLOVOp< Scalar >.

Referenced by RVL::OperatorProductDomain< Scalar >::clone().

template<class Scalar>
Operator<Scalar>* RVL::OperatorProductDomain< Scalar >::clone (  )  const [protected, virtual]

Implements RVL::Operator< Scalar >.

Definition at line 506 of file op.hh.

References RVL::OperatorProductDomain< Scalar >::clonePD().

template<class Scalar>
virtual const ProductSpace<Scalar>& RVL::OperatorProductDomain< Scalar >::getProductDomain (  )  const [pure virtual]

access to domain as ProductSpace

Implemented in RVL::ConstLinOpValOp< Scalar >, RVL::TangentMap< Scalar >, RVL::CompLOVOp< Scalar >, and RVL::LinCompLOVOp< Scalar >.

Referenced by RVL::OperatorProductDomain< Scalar >::applyAdjDeriv2(), RVL::OperatorProductDomain< Scalar >::applyDeriv2(), RVL::OperatorProductDomain< Scalar >::getDomain(), and RVL::OperatorEvaluation< Scalar >::getProductDomain().

template<class Scalar>
const Space<Scalar>& RVL::OperatorProductDomain< Scalar >::getDomain (  )  const [virtual]

access to domain as Space - delegates to getProductDomain

Implements RVL::Operator< Scalar >.

Definition at line 517 of file op.hh.

References RVL::OperatorProductDomain< Scalar >::getProductDomain().


Friends And Related Function Documentation

template<class Scalar>
friend class OperatorEvaluation< Scalar > [friend]

Reimplemented from RVL::Operator< Scalar >.

Definition at line 300 of file op.hh.

template<class Scalar>
friend class RestrictOp< Scalar > [friend]

Definition at line 301 of file op.hh.


The documentation for this class was generated from the following file:
Generated on 5 Jan 2017 for RVL by  doxygen 1.4.7