Operator defined on product space. More...
#include <op.hh>
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 |
![]() ![]() | |
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 |
![]() ![]() | |
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 |
![]() ![]() | |
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 |
![]() ![]() ![]() | |
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 > |
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.
RVL::OperatorProductDomain< Scalar >::OperatorProductDomain | ( | ) |
RVL::OperatorProductDomain< Scalar >::OperatorProductDomain | ( | const OperatorProductDomain< Scalar > & | ) |
virtual RVL::OperatorProductDomain< Scalar >::~OperatorProductDomain | ( | ) | [virtual] |
virtual void RVL::OperatorProductDomain< Scalar >::applyPartialDeriv | ( | int | i, | |
const Vector< Scalar > & | x, | |||
const Vector< Scalar > & | dxi, | |||
Vector< Scalar > & | dy | |||
) | const [protected, pure virtual] |
, where
Implemented in RVL::LinOpValOp< 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 >.
virtual void RVL::OperatorProductDomain< Scalar >::applyAdjPartialDeriv | ( | int | i, | |
const Vector< Scalar > & | x, | |||
const Vector< Scalar > & | dy, | |||
Vector< Scalar > & | dxi | |||
) | const [protected, pure virtual] |
, where
Implemented in RVL::LinOpValOp< 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 >.
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] |
, where
NOTE: as is the case for applyDeriv2, default implementation is supplied and throws exception.
Reimplemented in RVL::LinOpValOp< 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 >.
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] |
, where
NOTES: (1) adjoint of linear map
(2) as is the case for applyDeriv2, default implementation is supplied and throws exception.
Reimplemented in RVL::LinOpValOp< 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 >.
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] |
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] |
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] |
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] |
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 >.
Operator<Scalar>* RVL::OperatorProductDomain< Scalar >::clone | ( | ) | const [protected, virtual] |
Implements RVL::Operator< 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 >.
const Space<Scalar>& RVL::OperatorProductDomain< Scalar >::getDomain | ( | ) | const [virtual] |
access to domain as Space - delegates to getProductDomain
Implements RVL::Operator< Scalar >.
friend class OperatorEvaluation< Scalar > [friend] |
Reimplemented from RVL::Operator< Scalar >.
friend class RestrictOp< Scalar > [friend] |