#include <space.hh>
Inheritance diagram for RVL::Vector< Scalar >:
Public Types | |
typedef ScalarFieldTraits< Scalar >::AbsType | NormRetType |
convenient typedef for positive real type | |
Public Member Functions | |
Vector (const Vector< Scalar > &x) | |
Copy constructor. | |
Vector (const Space< Scalar > &_sp, bool _initZero=false) | |
Standard constructor. | |
~Vector () | |
Destructor. | |
const Space< Scalar > & | getSpace () const |
access to Space | |
bool | inSpace (const Space< Scalar > &sp1) const |
returns nonzero if this vector is a member of this space. | |
bool | inSameSpace (const Vector< Scalar > &x) const |
returns nonzero if this vector is member of same space as argument vector. | |
unsigned int | getVersion () const |
Version numbers are automatically incremented in the eval methods for which this is target. | |
void | incrementVersion () |
void | eval (FunctionObject &f, vector< Vector< Scalar > const * > &x) |
generic evaluation of a FunctionObject | |
void | eval (FunctionObject &f) |
eval convenience interface: no additional vector args | |
void | eval (FunctionObject &f, const Vector< Scalar > &x) |
eval convenience interface: one additional vector arg | |
void | eval (FunctionObject &f, const Vector< Scalar > &x, const Vector< Scalar > &y) |
eval convenience interface: two additional vector args | |
void | eval (FunctionObject &f, const Vector< Scalar > &x, const Vector< Scalar > &y, const Vector< Scalar > &z) |
eval convenience interface: three additional vector args | |
void | eval (FunctionObjectConstEval &f, vector< Vector< Scalar > const * > &x) const |
generic evaluation of a FunctionObjectConstEval | |
void | eval (FunctionObjectConstEval &f) const |
eval convenience interface: no additional vector args | |
void | eval (FunctionObjectConstEval &f, const Vector< Scalar > &x) const |
eval convenience interface: one additional vector arg | |
void | eval (FunctionObjectConstEval &f, const Vector< Scalar > &x, const Vector< Scalar > &y) const |
eval convenience interface: two additional vector args | |
void | eval (FunctionObjectConstEval &f, const Vector< Scalar > &x, const Vector< Scalar > &y, const Vector< Scalar > &z) const |
eval convenience interface: three additional vector args | |
Scalar | inner (const Vector< Scalar > &y) const |
Inner product. | |
void | linComb (Scalar a, const Vector< Scalar > &x, Scalar b=ScalarFieldTraits< Scalar >::One()) |
Linear Combination. | |
void | zero () |
Assignment to zero vector. | |
void | copy (const Vector< Scalar > &x) |
Copy. | |
void | scale (Scalar c) |
Scale, unary version. | |
void | scale (Scalar c, const Vector< Scalar > &x) |
Scale, binary version. | |
void | negate () |
Negation, unary version. | |
void | negate (const Vector< Scalar > &x) |
Negation, binary version. | |
NormRetType | normsq () const |
return Norm Squared. | |
NormRetType | norm () const |
return Norm. | |
ostream & | write (ostream &str) const |
Static Public Member Functions | |
static std::shared_ptr< Vector< Scalar > > | newPtr (Space< Scalar > const &sp) |
class method for safe dynamic allocation | |
Protected Member Functions | |
DataContainer * | getDataContainer () const |
access to DataContainer | |
Vector (const Space< Scalar > &_sp, DataContainer *_d, unsigned int &_verref, bool _own=false) | |
Protected vector copy constructor, shallow copy semantics. | |
Vector< Scalar > * | build_from_kit (const Space< Scalar > &_sp, DataContainer *_d, unsigned int &_verref, bool _own=false) |
by hiding the constructor, makes it available to child classes | |
Vector (const Vector< Scalar > *v) | |
Protected constructor which lets child classes wrap either space or datacontainer data members in other interfaces. | |
void * | operator new (size_t size) |
The Evaluation classes have Vectors as data members. | |
unsigned int & | getVersionRef () const |
Friends | |
class | Components< Scalar > |
Concrete class with all aspects of a natural vector interface implemented through delegation to Space and DataContainer data members. Provision for evaluation of arbitrary FunctionObject and FunctionObjectConstEval instances implemented through delegation to DataContainer::eval.
Definition at line 422 of file space.hh.
typedef ScalarFieldTraits<Scalar>::AbsType RVL::Vector< Scalar >::NormRetType |
RVL::Vector< Scalar >::Vector | ( | const Space< Scalar > & | _sp, | |
DataContainer * | _d, | |||
unsigned int & | _verref, | |||
bool | _own = false | |||
) | [protected] |
Protected vector copy constructor, shallow copy semantics.
In default case, this object owns only references to external data.
Definition at line 479 of file space.hh.
References RVL::Vector< Scalar >::getDataContainer(), and RVL::Writeable::write().
RVL::Vector< Scalar >::Vector | ( | const Vector< Scalar > * | v | ) | [protected] |
RVL::Vector< Scalar >::Vector | ( | const Vector< Scalar > & | x | ) |
Copy constructor.
Implements deep copy, as data is actually owned by this object.
Definition at line 542 of file space.hh.
References RVL::Vector< Scalar >::getDataContainer().
RVL::Vector< Scalar >::Vector | ( | const Space< Scalar > & | _sp, | |
bool | _initZero = false | |||
) |
Standard constructor.
Constructs a member of a given vector space. Note that data is not initialized. For large vector sizes, this constructor is therefore to be preferred to the copy constructor when a choice exists and data copying is not needed.
The data container can be initialized to zero by setting the optional second parameter to true.
RVL::Vector< Scalar >::~Vector | ( | ) |
Destructor.
Deallocates dynamically allocated DataContainer.
DataContainer* RVL::Vector< Scalar >::getDataContainer | ( | ) | const [protected] |
access to DataContainer
Definition at line 467 of file space.hh.
Referenced by RVL::Components< Scalar >::Components(), RVL::Vector< Scalar >::copy(), RVL::Vector< Scalar >::eval(), RVL::Vector< Scalar >::inner(), RVL::Vector< Scalar >::linComb(), RVL::Vector< Scalar >::negate(), RVL::Vector< Scalar >::scale(), RVL::Vector< Scalar >::Vector(), and RVL::Vector< Scalar >::write().
Vector<Scalar>* RVL::Vector< Scalar >::build_from_kit | ( | const Space< Scalar > & | _sp, | |
DataContainer * | _d, | |||
unsigned int & | _verref, | |||
bool | _own = false | |||
) | [protected] |
void* RVL::Vector< Scalar >::operator new | ( | size_t | size | ) | [protected] |
The Evaluation classes have Vectors as data members.
Accordingly, general RVL apps should avoid dynamic allocation of Vectors, just as they should avoid dynamic allocation of Spaces - to eliminate the risk of dangling references, and because it is unnecessary. However the Components and LocalVector classes do need to construct vectors dynamically, using the protected constructors described above. Therefore we make operator new protected.
Version 1.0: user control, for the bold. "There are old sailors, and there are bold sailors, but there are no old, bold sailors".
unsigned int& RVL::Vector< Scalar >::getVersionRef | ( | ) | const [protected] |
static std::shared_ptr< Vector<Scalar> > RVL::Vector< Scalar >::newPtr | ( | Space< Scalar > const & | sp | ) | [static] |
class method for safe dynamic allocation
Definition at line 575 of file space.hh.
Referenced by RVL::CompLinearOp< Scalar >::apply(), and RVL::CompLinearOp< Scalar >::applyAdj().
const Space<Scalar>& RVL::Vector< Scalar >::getSpace | ( | ) | const |
access to Space
Definition at line 581 of file space.hh.
Referenced by RVL::EuclideanForm< Scalar >::apply(), RVL::SymmetricBilinearOp< Scalar >::applyAdjOp(), RVL::LinearOp< Scalar >::applyAdjOp(), RVL::EuclideanForm< Scalar >::applyGradient(), RVL::EuclideanForm< Scalar >::applyHessian(), RVL::LinearOpWithInverse< Scalar >::applyInvAdjOp(), RVL::LinearOpWithInverse< Scalar >::applyInvOp(), RVL::SymmetricBilinearOp< Scalar >::applyOp(), RVL::LinearOp< Scalar >::applyOp(), RVL::Components< Scalar >::Components(), RVL::FunctionalEvaluation< Scalar >::FunctionalEvaluation(), RVL::OperatorEvaluation< Scalar >::OperatorEvaluation(), and RVL::RestrictOp< Scalar >::RestrictOp().
bool RVL::Vector< Scalar >::inSpace | ( | const Space< Scalar > & | sp1 | ) | const |
returns nonzero if this vector is a member of this space.
Definition at line 584 of file space.hh.
Referenced by RVL::DerivTest(), RVL::GradientTest(), RVL::Vector< Scalar >::inSameSpace(), RVL::Scan(), and RVL::SpaceTest().
bool RVL::Vector< Scalar >::inSameSpace | ( | const Vector< Scalar > & | x | ) | const |
returns nonzero if this vector is member of same space as argument vector.
Definition at line 587 of file space.hh.
References RVL::Vector< Scalar >::inSpace(), and RVL::Vector< Scalar >::sp.
unsigned int RVL::Vector< Scalar >::getVersion | ( | ) | const |
Version numbers are automatically incremented in the eval methods for which this is target.
Else they are left the same. If a version number seems to be getting to high, make sure that the writesData() method of all FunctionObjects are returning correct information.
void RVL::Vector< Scalar >::incrementVersion | ( | ) |
Definition at line 596 of file space.hh.
Referenced by RVL::Vector< Scalar >::copy(), RVL::Vector< Scalar >::eval(), RVL::Vector< Scalar >::linComb(), RVL::Vector< Scalar >::negate(), RVL::Vector< Scalar >::scale(), and RVL::Vector< Scalar >::zero().
void RVL::Vector< Scalar >::eval | ( | FunctionObject & | f, | |
vector< Vector< Scalar > const * > & | x | |||
) |
generic evaluation of a FunctionObject
Definition at line 607 of file space.hh.
References RVL::Vector< Scalar >::getDataContainer(), and RVL::Vector< Scalar >::incrementVersion().
Referenced by RVL::OpFO< Scalar >::apply(), RVL::LinearOpFO< Scalar >::apply(), RVL::StdFOFunctional< Scalar, DataType >::apply(), RVL::LinearOpFO< Scalar >::applyAdj(), RVL::OpFO< Scalar >::applyAdjDeriv(), RVL::OpFO< Scalar >::applyDeriv(), RVL::StdFOFunctional< Scalar, DataType >::applyGradient(), RVL::StdFOFunctional< Scalar, DataType >::applyHessian(), and RVL::Vector< Scalar >::eval().
void RVL::Vector< Scalar >::eval | ( | FunctionObject & | f | ) |
eval convenience interface: no additional vector args
Definition at line 630 of file space.hh.
References RVL::Vector< Scalar >::eval().
void RVL::Vector< Scalar >::eval | ( | FunctionObject & | f, | |
const Vector< Scalar > & | x | |||
) |
eval convenience interface: one additional vector arg
Definition at line 642 of file space.hh.
References RVL::Vector< Scalar >::eval().
void RVL::Vector< Scalar >::eval | ( | FunctionObject & | f, | |
const Vector< Scalar > & | x, | |||
const Vector< Scalar > & | y | |||
) |
eval convenience interface: two additional vector args
Definition at line 656 of file space.hh.
References RVL::Vector< Scalar >::eval().
void RVL::Vector< Scalar >::eval | ( | FunctionObject & | f, | |
const Vector< Scalar > & | x, | |||
const Vector< Scalar > & | y, | |||
const Vector< Scalar > & | z | |||
) |
eval convenience interface: three additional vector args
Definition at line 672 of file space.hh.
References RVL::Vector< Scalar >::eval().
void RVL::Vector< Scalar >::eval | ( | FunctionObjectConstEval & | f, | |
vector< Vector< Scalar > const * > & | x | |||
) | const |
generic evaluation of a FunctionObjectConstEval
Definition at line 690 of file space.hh.
References RVL::Vector< Scalar >::eval(), and RVL::Vector< Scalar >::getDataContainer().
void RVL::Vector< Scalar >::eval | ( | FunctionObjectConstEval & | f | ) | const |
eval convenience interface: no additional vector args
Definition at line 706 of file space.hh.
References RVL::Vector< Scalar >::eval().
void RVL::Vector< Scalar >::eval | ( | FunctionObjectConstEval & | f, | |
const Vector< Scalar > & | x | |||
) | const |
eval convenience interface: one additional vector arg
Definition at line 718 of file space.hh.
References RVL::Vector< Scalar >::eval().
void RVL::Vector< Scalar >::eval | ( | FunctionObjectConstEval & | f, | |
const Vector< Scalar > & | x, | |||
const Vector< Scalar > & | y | |||
) | const |
eval convenience interface: two additional vector args
Definition at line 732 of file space.hh.
References RVL::Vector< Scalar >::eval().
void RVL::Vector< Scalar >::eval | ( | FunctionObjectConstEval & | f, | |
const Vector< Scalar > & | x, | |||
const Vector< Scalar > & | y, | |||
const Vector< Scalar > & | z | |||
) | const |
eval convenience interface: three additional vector args
Definition at line 748 of file space.hh.
References RVL::Vector< Scalar >::eval().
Scalar RVL::Vector< Scalar >::inner | ( | const Vector< Scalar > & | y | ) | const |
Inner product.
Definition at line 766 of file space.hh.
References RVL::Vector< Scalar >::getDataContainer().
Referenced by RVL::EuclideanForm< Scalar >::apply().
void RVL::Vector< Scalar >::linComb | ( | Scalar | a, | |
const Vector< Scalar > & | x, | |||
Scalar | b = ScalarFieldTraits<Scalar>::One() | |||
) |
Linear Combination.
Default: this = a*x + this (i.e. axpy).
Definition at line 777 of file space.hh.
References RVL::Vector< Scalar >::getDataContainer(), and RVL::Vector< Scalar >::incrementVersion().
Referenced by RVL::LinCombOperator< Scalar >::apply(), RVL::ANLOperator< Scalar >::apply(), RVL::ResidualOperator< Scalar >::apply(), RVL::ShiftOperator< Scalar >::apply(), RVL::LinCombLinearOp< Scalar >::apply(), RVL::LinCombLinearOp< Scalar >::applyAdj(), RVL::ColumnLinearOp< Scalar >::applyAdj(), RVL::LinCombOperator< Scalar >::applyAdjDeriv(), RVL::BlockOperator< Scalar >::applyAdjDeriv(), RVL::OpComp< Scalar >::applyAdjDeriv2(), RVL::BlockOperator< Scalar >::applyAdjDeriv2(), RVL::LinearOp< Scalar >::applyAdjOp(), RVL::LinCombOperator< Scalar >::applyDeriv(), RVL::OperatorProductDomain< Scalar >::applyDeriv(), RVL::OpComp< Scalar >::applyDeriv2(), RVL::OperatorProductDomain< Scalar >::applyDeriv2(), RVL::LinCombFunctional< Scalar >::applyGradient(), RVL::FunctionalProductDomain< Scalar >::applyGradient(), RVL::LinCombFunctional< Scalar >::applyHessian(), RVL::LinearOp< Scalar >::applyOp(), RVL::LinearOp< Scalar >::applyPlusAdjOp(), and RVL::LinearOp< Scalar >::applyPlusOp().
void RVL::Vector< Scalar >::zero | ( | ) |
Assignment to zero vector.
Definition at line 791 of file space.hh.
References RVL::Vector< Scalar >::incrementVersion().
Referenced by RVL::ScaleOpInv< Scalar >::apply(), RVL::ScaleOpFwd< Scalar >::apply(), RVL::OperatorProductDomain< Scalar >::applyAdjDeriv2(), RVL::LinearOp< Scalar >::applyAdjDeriv2(), RVL::ConstLinOpValOp< Scalar >::applyAdjPartialDeriv0(), RVL::LinOpValOp< Scalar >::applyAdjPartialDeriv2(), RVL::ConstLinOpValOp< Scalar >::applyAdjPartialDeriv20(), RVL::InjectOp< Scalar >::applyDeriv(), RVL::OperatorProductDomain< Scalar >::applyDeriv2(), RVL::LinearOp< Scalar >::applyDeriv2(), RVL::NullFunctional< Scalar >::applyGradient(), RVL::NullFunctional< Scalar >::applyHessian(), RVL::ConstLinOpValOp< Scalar >::applyPartialDeriv0(), RVL::LinOpValOp< Scalar >::applyPartialDeriv2(), and RVL::ConstLinOpValOp< Scalar >::applyPartialDeriv20().
void RVL::Vector< Scalar >::copy | ( | const Vector< Scalar > & | x | ) |
Copy.
Definition at line 805 of file space.hh.
References RVL::Vector< Scalar >::getDataContainer(), and RVL::Vector< Scalar >::incrementVersion().
Referenced by RVL::IdentityOp< Scalar >::apply(), RVL::ShiftOperator< Scalar >::apply(), RVL::ScaleOpInv< Scalar >::apply(), RVL::ScaleOpFwd< Scalar >::apply(), RVL::InjectOp< Scalar >::apply(), RVL::IdentityOp< Scalar >::applyAdjDeriv(), RVL::ShiftOperator< Scalar >::applyAdjDeriv(), RVL::IdentityOp< Scalar >::applyDeriv(), RVL::ShiftOperator< Scalar >::applyDeriv(), RVL::EuclideanForm< Scalar >::applyGradient(), RVL::EuclideanForm< Scalar >::applyHessian(), and RVL::RestrictOp< Scalar >::getMaxStep().
void RVL::Vector< Scalar >::scale | ( | Scalar | c | ) |
Scale, unary version.
If low-level DCs defer allocation and linComb is properly implemented, no actual data beyond a few pointers will be allocated or accessed for the workspace vector z.
Definition at line 821 of file space.hh.
References RVL::Vector< Scalar >::incrementVersion().
Referenced by RVL::LinCombOperator< Scalar >::apply(), RVL::ScaleOpInv< Scalar >::apply(), RVL::ScaleOpFwd< Scalar >::apply(), RVL::LinCombOperator< Scalar >::applyAdjDeriv(), RVL::LinCombOperator< Scalar >::applyDeriv(), RVL::LinCombFunctional< Scalar >::applyGradient(), and RVL::LinCombFunctional< Scalar >::applyHessian().
void RVL::Vector< Scalar >::scale | ( | Scalar | c, | |
const Vector< Scalar > & | x | |||
) |
Scale, binary version.
Definition at line 833 of file space.hh.
References RVL::Vector< Scalar >::getDataContainer(), and RVL::Vector< Scalar >::incrementVersion().
void RVL::Vector< Scalar >::negate | ( | ) |
Negation, unary version.
Definition at line 845 of file space.hh.
References RVL::Vector< Scalar >::incrementVersion().
void RVL::Vector< Scalar >::negate | ( | const Vector< Scalar > & | x | ) |
Negation, binary version.
Definition at line 857 of file space.hh.
References RVL::Vector< Scalar >::getDataContainer(), and RVL::Vector< Scalar >::incrementVersion().
NormRetType RVL::Vector< Scalar >::normsq | ( | ) | const |
NormRetType RVL::Vector< Scalar >::norm | ( | ) | const |
return Norm.
The norm always returns a non-negative real number
Definition at line 881 of file space.hh.
Referenced by RVL::DerivTest().
ostream& RVL::Vector< Scalar >::write | ( | ostream & | str | ) | const [virtual] |
Implements RVL::Writeable.
Definition at line 891 of file space.hh.
References RVL::Vector< Scalar >::getDataContainer().
Referenced by RVL::SpaceTest().
friend class Components< Scalar > [friend] |