chrono::ChConstraintTuple_1vars< T > Class Template Reference


template<class T>
class chrono::ChConstraintTuple_1vars< T >

This is a container for 'half' of a constraint, and contains a tuple of 1 or 2 or 3 differently-sized jacobian chunks.

For instance, this might happen because you want a constraint between an edge (i.e. two xyz variables, each per end nodes) and a triangle face (i.e. three xyz variables, each per corner), so the jacobian row matrix is split in 2 + 3 chunks, here as two tuples. The complete constraint, ChConstraintTwoTuples, will use two of these classes. Template T is a class of ChVariableTupleCarrier_Nvars type

#include <ChConstraintTuple.h>

Collaboration diagram for chrono::ChConstraintTuple_1vars< T >:

Public Member Functions

 ChConstraintTuple_1vars ()
 Default constructor.
 ChConstraintTuple_1vars (const ChConstraintTuple_1vars &other)
 Copy constructor.
ChConstraintTuple_1varsoperator= (const ChConstraintTuple_1vars &other)
 Assignment operator: copy from other object.
ChMatrix< double > * Get_Cq ()
ChMatrix< double > * Get_Eq ()
ChVariablesGetVariables ()
void SetVariables (T &m_tuple_carrier)
void Update_auxiliary (double &g_i)
double Compute_Cq_q ()
void Increment_q (const double deltal)
void MultiplyAndAdd (double &result, const ChMatrix< double > &vect) const
void MultiplyTandAdd (ChMatrix< double > &result, double l)
void Build_Cq (ChSparseMatrix &storage, int insrow)
void Build_CqT (ChSparseMatrix &storage, int inscol)

Protected Attributes

 The constrained object.
ChMatrixNM< double, 1, T::nvars1 > Cq
 The [Cq] jacobian of the constraint.
ChMatrixNM< double, T::nvars1, 1 > Eq
 The [Eq] product [Eq]=[invM]*[Cq]'.