RVL::LinOpValOp< Scalar > Class Template Reference

Operator with product domain presumed to be linear in last component, from which a linear operator may be conveniently extracted by restriction. More...

#include <op.hh>

Inheritance diagram for RVL::LinOpValOp< Scalar >:

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

Protected Member Functions

virtual void apply0 (const Vector< Scalar > &x0, const Vector< Scalar > &x1, Vector< Scalar > &y) const =0
 $y = F(x_0)x_1$
virtual void applyAdj0 (const Vector< Scalar > &x0, const Vector< Scalar > &y, Vector< Scalar > &x1) const =0
 $x_1 = F^*(x_0)y$ = adjoint of $x_1 \rightarrow F(x_0)x_1$
virtual void applyPartialDeriv0 (const Vector< Scalar > &x0, const Vector< Scalar > &x1, const Vector< Scalar > &dx0, Vector< Scalar > &dy) const =0
 $dx_0 = (DF(x_0)dx_0)x_1$
virtual void applyAdjPartialDeriv0 (const Vector< Scalar > &x0, const Vector< Scalar > &x1, const Vector< Scalar > &dy, Vector< Scalar > &dx0) const =0
 adjoint of $dx_0 \rightarrow (DF(x_0)dx_0)x_1$
virtual void applyAdjPartialDeriv1 (const Vector< Scalar > &x0, const Vector< Scalar > &dx0, const Vector< Scalar > &dy, Vector< Scalar > &x1) const
 adjoint of $x_1 \rightarrow (DF(x_0)dx_0)x_1$ needed in definition of 2nd deriv
virtual void applyPartialDeriv20 (const Vector< Scalar > &x0, const Vector< Scalar > &x1, const Vector< Scalar > &dx00, const Vector< Scalar > &dx01, Vector< Scalar > &dy) const
virtual void applyAdjPartialDeriv20 (const Vector< Scalar > &x0, const Vector< Scalar > &x1, const Vector< Scalar > &dy, const Vector< Scalar > &dx01, Vector< Scalar > &dx00) const
void apply (Vector< Scalar > const &x, Vector< Scalar > &y) const
void applyPartialDeriv (int i, const Vector< Scalar > &x, const Vector< Scalar > &dxi, Vector< Scalar > &dy) const
void applyAdjPartialDeriv (int i, const Vector< Scalar > &x, const Vector< Scalar > &dy, Vector< Scalar > &dxi) const
void applyPartialDeriv2 (int i, int j, const Vector< Scalar > &x, const Vector< Scalar > &dxi, const Vector< Scalar > &dxj, Vector< Scalar > &dy) const
void applyAdjPartialDeriv2 (int i, int j, const Vector< Scalar > &x, const Vector< Scalar > &dy, const Vector< Scalar > &dxj, Vector< Scalar > &dxi) const

Static Protected Member Functions

static void export_apply0 (LinOpValOp< Scalar > const &op, const Vector< Scalar > &x0, const Vector< Scalar > &x1, Vector< Scalar > &y)
static void export_applyAdj0 (LinOpValOp< Scalar > const &op, const Vector< Scalar > &x0, const Vector< Scalar > &y, Vector< Scalar > &x1)
static void export_applyPartialDeriv0 (LinOpValOp< Scalar > const &op, const Vector< Scalar > &x0, const Vector< Scalar > &x1, const Vector< Scalar > &dx0, Vector< Scalar > &dy)
static void export_applyAdjPartialDeriv0 (LinOpValOp< Scalar > const &op, const Vector< Scalar > &x0, const Vector< Scalar > &x1, const Vector< Scalar > &dy, Vector< Scalar > &dx0)
static void export_applyAdjPartialDeriv1 (LinOpValOp< Scalar > const &op, const Vector< Scalar > &x0, const Vector< Scalar > &x1, const Vector< Scalar > &dy, Vector< Scalar > &dx0)
static void export_applyPartialDeriv20 (LinOpValOp< Scalar > const &op, const Vector< Scalar > &x0, const Vector< Scalar > &x1, const Vector< Scalar > &dx00, const Vector< Scalar > &dx01, Vector< Scalar > &dy)
static void export_applyAdjPartialDeriv20 (LinOpValOp< Scalar > const &op, const Vector< Scalar > &x0, const Vector< Scalar > &x1, const Vector< Scalar > &dy, const Vector< Scalar > &dx01, Vector< Scalar > &dx00)

Friends

class LinearRestrictOp< Scalar >

Detailed Description

template<class Scalar>
class RVL::LinOpValOp< Scalar >

Operator with product domain presumed to be linear in last component, from which a linear operator may be conveniently extracted by restriction.

The only essential additional attribute is an adjoint application method for the last component. Currently restricted to two components (either or both of which may themselves be products of course). Concrete implementations of some methods provided.

In comments below will write $ F(x_0)x_1$ rather than $ F(x_0,x_1) $ to emphasize assumed linearity of $F$ in 2nd arg.

Definition at line 694 of file op.hh.


Member Function Documentation

template<class Scalar>
virtual void RVL::LinOpValOp< Scalar >::apply0 ( const Vector< Scalar > &  x0,
const Vector< Scalar > &  x1,
Vector< Scalar > &  y 
) const [protected, pure virtual]

$y = F(x_0)x_1$

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

Referenced by RVL::LinOpValOp< Scalar >::apply(), RVL::LinOpValOp< Scalar >::applyPartialDeriv(), and RVL::LinOpValOp< Scalar >::export_apply0().

template<class Scalar>
virtual void RVL::LinOpValOp< Scalar >::applyAdj0 ( const Vector< Scalar > &  x0,
const Vector< Scalar > &  y,
Vector< Scalar > &  x1 
) const [protected, pure virtual]

$x_1 = F^*(x_0)y$ = adjoint of $x_1 \rightarrow F(x_0)x_1$

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

Referenced by RVL::LinOpValOp< Scalar >::applyAdjPartialDeriv(), and RVL::LinOpValOp< Scalar >::export_applyAdj0().

template<class Scalar>
virtual void RVL::LinOpValOp< Scalar >::applyPartialDeriv0 ( const Vector< Scalar > &  x0,
const Vector< Scalar > &  x1,
const Vector< Scalar > &  dx0,
Vector< Scalar > &  dy 
) const [protected, pure virtual]

$dx_0 = (DF(x_0)dx_0)x_1$

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

Referenced by RVL::LinOpValOp< Scalar >::applyPartialDeriv(), RVL::LinOpValOp< Scalar >::applyPartialDeriv2(), and RVL::LinOpValOp< Scalar >::export_applyPartialDeriv0().

template<class Scalar>
virtual void RVL::LinOpValOp< Scalar >::applyAdjPartialDeriv0 ( const Vector< Scalar > &  x0,
const Vector< Scalar > &  x1,
const Vector< Scalar > &  dy,
Vector< Scalar > &  dx0 
) const [protected, pure virtual]

adjoint of $dx_0 \rightarrow (DF(x_0)dx_0)x_1$

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

Referenced by RVL::LinOpValOp< Scalar >::applyAdjPartialDeriv(), RVL::LinOpValOp< Scalar >::applyAdjPartialDeriv2(), and RVL::LinOpValOp< Scalar >::export_applyAdjPartialDeriv0().

template<class Scalar>
virtual void RVL::LinOpValOp< Scalar >::applyAdjPartialDeriv1 ( const Vector< Scalar > &  x0,
const Vector< Scalar > &  dx0,
const Vector< Scalar > &  dy,
Vector< Scalar > &  x1 
) const [protected, virtual]

adjoint of $x_1 \rightarrow (DF(x_0)dx_0)x_1$ needed in definition of 2nd deriv

Definition at line 724 of file op.hh.

Referenced by RVL::LinOpValOp< Scalar >::applyAdjPartialDeriv2(), and RVL::LinOpValOp< Scalar >::export_applyAdjPartialDeriv1().

template<class Scalar>
virtual void RVL::LinOpValOp< Scalar >::applyPartialDeriv20 ( const Vector< Scalar > &  x0,
const Vector< Scalar > &  x1,
const Vector< Scalar > &  dx00,
const Vector< Scalar > &  dx01,
Vector< Scalar > &  dy 
) const [protected, virtual]

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

Definition at line 735 of file op.hh.

Referenced by RVL::LinOpValOp< Scalar >::applyPartialDeriv2(), and RVL::LinOpValOp< Scalar >::export_applyPartialDeriv20().

template<class Scalar>
virtual void RVL::LinOpValOp< Scalar >::applyAdjPartialDeriv20 ( const Vector< Scalar > &  x0,
const Vector< Scalar > &  x1,
const Vector< Scalar > &  dy,
const Vector< Scalar > &  dx01,
Vector< Scalar > &  dx00 
) const [protected, virtual]

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

Definition at line 747 of file op.hh.

Referenced by RVL::LinOpValOp< Scalar >::applyAdjPartialDeriv2(), and RVL::LinOpValOp< Scalar >::export_applyAdjPartialDeriv20().

template<class Scalar>
static void RVL::LinOpValOp< Scalar >::export_apply0 ( LinOpValOp< Scalar > const &  op,
const Vector< Scalar > &  x0,
const Vector< Scalar > &  x1,
Vector< Scalar > &  y 
) [static, protected]

Definition at line 758 of file op.hh.

References RVL::LinOpValOp< Scalar >::apply0().

Referenced by RVL::LinCompLOVOp< Scalar >::apply0(), and RVL::CompLOVOp< Scalar >::apply0().

template<class Scalar>
static void RVL::LinOpValOp< Scalar >::export_applyAdj0 ( LinOpValOp< Scalar > const &  op,
const Vector< Scalar > &  x0,
const Vector< Scalar > &  y,
Vector< Scalar > &  x1 
) [static, protected]

Definition at line 765 of file op.hh.

References RVL::LinOpValOp< Scalar >::applyAdj0().

Referenced by RVL::LinCompLOVOp< Scalar >::applyAdj0(), and RVL::CompLOVOp< Scalar >::applyAdj0().

template<class Scalar>
static void RVL::LinOpValOp< Scalar >::export_applyPartialDeriv0 ( LinOpValOp< Scalar > const &  op,
const Vector< Scalar > &  x0,
const Vector< Scalar > &  x1,
const Vector< Scalar > &  dx0,
Vector< Scalar > &  dy 
) [static, protected]

Definition at line 772 of file op.hh.

References RVL::LinOpValOp< Scalar >::applyPartialDeriv0().

Referenced by RVL::LinCompLOVOp< Scalar >::applyPartialDeriv0(), and RVL::CompLOVOp< Scalar >::applyPartialDeriv0().

template<class Scalar>
static void RVL::LinOpValOp< Scalar >::export_applyAdjPartialDeriv0 ( LinOpValOp< Scalar > const &  op,
const Vector< Scalar > &  x0,
const Vector< Scalar > &  x1,
const Vector< Scalar > &  dy,
Vector< Scalar > &  dx0 
) [static, protected]

Definition at line 780 of file op.hh.

References RVL::LinOpValOp< Scalar >::applyAdjPartialDeriv0().

Referenced by RVL::LinCompLOVOp< Scalar >::applyAdjPartialDeriv0(), and RVL::CompLOVOp< Scalar >::applyAdjPartialDeriv0().

template<class Scalar>
static void RVL::LinOpValOp< Scalar >::export_applyAdjPartialDeriv1 ( LinOpValOp< Scalar > const &  op,
const Vector< Scalar > &  x0,
const Vector< Scalar > &  x1,
const Vector< Scalar > &  dy,
Vector< Scalar > &  dx0 
) [static, protected]

Definition at line 788 of file op.hh.

References RVL::LinOpValOp< Scalar >::applyAdjPartialDeriv1().

template<class Scalar>
static void RVL::LinOpValOp< Scalar >::export_applyPartialDeriv20 ( LinOpValOp< Scalar > const &  op,
const Vector< Scalar > &  x0,
const Vector< Scalar > &  x1,
const Vector< Scalar > &  dx00,
const Vector< Scalar > &  dx01,
Vector< Scalar > &  dy 
) [static, protected]

Definition at line 796 of file op.hh.

References RVL::LinOpValOp< Scalar >::applyPartialDeriv20().

Referenced by RVL::LinCompLOVOp< Scalar >::applyPartialDeriv20(), and RVL::CompLOVOp< Scalar >::applyPartialDeriv20().

template<class Scalar>
static void RVL::LinOpValOp< Scalar >::export_applyAdjPartialDeriv20 ( LinOpValOp< Scalar > const &  op,
const Vector< Scalar > &  x0,
const Vector< Scalar > &  x1,
const Vector< Scalar > &  dy,
const Vector< Scalar > &  dx01,
Vector< Scalar > &  dx00 
) [static, protected]

Definition at line 805 of file op.hh.

References RVL::LinOpValOp< Scalar >::applyAdjPartialDeriv20().

Referenced by RVL::LinCompLOVOp< Scalar >::applyAdjPartialDeriv20(), and RVL::CompLOVOp< Scalar >::applyAdjPartialDeriv20().

template<class Scalar>
void RVL::LinOpValOp< Scalar >::apply ( Vector< Scalar > const &  x,
Vector< Scalar > &  y 
) const [protected, virtual]

Implements RVL::Operator< Scalar >.

Definition at line 814 of file op.hh.

References RVL::LinOpValOp< Scalar >::apply0().

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

Implements RVL::OperatorProductDomain< Scalar >.

Definition at line 826 of file op.hh.

References RVL::LinOpValOp< Scalar >::apply0(), and RVL::LinOpValOp< Scalar >::applyPartialDeriv0().

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

Implements RVL::OperatorProductDomain< Scalar >.

Definition at line 843 of file op.hh.

References RVL::LinOpValOp< Scalar >::applyAdj0(), and RVL::LinOpValOp< Scalar >::applyAdjPartialDeriv0().

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

Reimplemented from RVL::OperatorProductDomain< Scalar >.

Definition at line 863 of file op.hh.

References RVL::LinOpValOp< Scalar >::applyPartialDeriv0(), RVL::LinOpValOp< Scalar >::applyPartialDeriv20(), and RVL::Vector< Scalar >::zero().

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

Reimplemented from RVL::OperatorProductDomain< Scalar >.

Definition at line 892 of file op.hh.

References RVL::LinOpValOp< Scalar >::applyAdjPartialDeriv0(), RVL::LinOpValOp< Scalar >::applyAdjPartialDeriv1(), RVL::LinOpValOp< Scalar >::applyAdjPartialDeriv20(), and RVL::Vector< Scalar >::zero().


Friends And Related Function Documentation

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

Definition at line 696 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