#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 |