#include <MultiVec.h>
Helper class providing a high-level view of underlying state vectors.
It is used to convert math-like operations to call to computation methods.
Protected Attributes | |
BaseVectorOperations * | vop |
Solver who is using this vector. More... | |
MyMultiVecId | v |
Identifier of this vector. More... | |
bool | dynamic |
Flag indicating if this vector was dynamically allocated. More... | |
Public Member Functions | |
TMultiVec (BaseVectorOperations *vop, MyMultiVecId v) | |
Refers to a state vector with the given ID (VecId::position(), VecId::velocity(), etc). More... | |
TMultiVec () | |
Refers to a not yet allocated state vector. More... | |
TMultiVec (BaseVectorOperations *vop, bool dynamic=true, const VecIdProperties &properties={}) | |
Allocate a new temporary vector with the given type (sofa::core::V_COORD or sofa::core::V_DERIV). More... | |
~TMultiVec () | |
operator MyMultiVecId () | |
Automatic conversion to the underlying VecId. More... | |
operator ConstMyMultiVecId () | |
operator AllMultiVecId () | |
operator ConstAllMultiVecId () | |
const MyMultiVecId & | id () const |
MyMultiVecId & | id () |
BaseVectorOperations * | ops () |
void | setOps (BaseVectorOperations *op) |
void | realloc (BaseVectorOperations *_vop, bool interactionForceField=false, bool propagate=false, const VecIdProperties &properties={}) |
void | clear () |
v = 0 More... | |
void | eq (MyMultiVecId a) |
v = a More... | |
void | eq (MyMultiVecId a, SReal f) |
v = a*f More... | |
void | peq (AllMultiVecId a, SReal f=1.0) |
v += a*f More... | |
void | teq (SReal f) |
v *= f More... | |
void | eq (AllMultiVecId a, AllMultiVecId b, SReal f=1.0) |
v = a+b*f More... | |
SReal | dot (MyMultiVecId a) |
void | threshold (SReal threshold) |
nullify values below given threshold More... | |
SReal | norm () |
SReal | norm (unsigned l) |
void | operator= (MyMultiVecId a) |
v = a More... | |
void | operator= (const TMultiVec< vtype > &a) |
v = a More... | |
void | operator+= (MyMultiVecId a) |
v += a More... | |
void | operator-= (MyMultiVecId a) |
v -= a More... | |
void | operator*= (SReal f) |
v *= f More... | |
void | operator/= (SReal f) |
v /= f More... | |
SReal | operator* (MyMultiVecId a) |
return the scalar product dot(v,a) More... | |
size_t | size () const |
Friends | |
std::ostream & | operator<< (std::ostream &out, const TMultiVec< vtype > &mv) |
|
protected |
Flag indicating if this vector was dynamically allocated.
|
protected |
Identifier of this vector.
|
protected |
Solver who is using this vector.
|
inline |
Refers to a state vector with the given ID (VecId::position(), VecId::velocity(), etc).
|
inline |
Refers to a not yet allocated state vector.
|
inline |
Allocate a new temporary vector with the given type (sofa::core::V_COORD or sofa::core::V_DERIV).
|
inline |
|
inline |
v = 0
|
inline |
|
inline |
v = a+b*f
|
inline |
v = a
|
inline |
v = a*f
|
inline |
|
inline |
|
inline |
|
inline |
Compute the norm of a vector. The type of norm is set by parameter l. Use 0 for the infinite norm. Note that the 2-norm is more efficiently computed using the square root of the dot product.
|
inline |
|
inline |
|
inline |
|
inline |
Automatic conversion to the underlying VecId.
|
inline |
return the scalar product dot(v,a)
|
inline |
v *= f
|
inline |
v += a
|
inline |
v -= a
|
inline |
v /= f
|
inline |
v = a
|
inline |
v = a
|
inline |
|
inline |
v += a*f
|
inline |
allocates vector for every newly appeared mechanical states (initializing them to 0 and does not modify already allocated mechanical states)
interactionForceField | set to true, also allocate external mechanical states linked by an InteractionForceField (TODO remove this option by seeing external mmstates as abstract null vectors) |
|
inline |
|
inline |
|
inline |
v *= f
|
inline |
nullify values below given threshold
|
friend |