MULTIBODY SIMULATION SOFTWARE - API documentation

chrono::ChLcpConstraintTwoBodies Class Reference

#include <CHlcpConstraintTwoBodies.h>

Inheritance diagram for chrono::ChLcpConstraintTwoBodies:

Inheritance graph
[legend]
Collaboration diagram for chrono::ChLcpConstraintTwoBodies:

Collaboration graph
[legend]

List of all members.

Public Member Functions

 ChLcpConstraintTwoBodies ()
 ChLcpConstraintTwoBodies (ChLcpVariablesBody *mvariables_a, ChLcpVariablesBody *mvariables_b)
 ChLcpConstraintTwoBodies (const ChLcpConstraintTwoBodies &other)
virtual ChLcpConstraintnew_Duplicate ()
ChLcpConstraintTwoBodiesoperator= (const ChLcpConstraintTwoBodies &other)
virtual bool IsGPUcompatible ()
virtual ChMatrix
< float > * 
Get_Cq_a ()
virtual ChMatrix
< float > * 
Get_Cq_b ()
virtual ChMatrix
< float > * 
Get_Eq_a ()
virtual ChMatrix
< float > * 
Get_Eq_b ()
void SetVariables (ChLcpVariables *mvariables_a, ChLcpVariables *mvariables_b)
virtual void Update_auxiliary ()
virtual double Compute_Cq_q ()
virtual void Increment_q (const double deltal)
virtual void Build_Cq (ChSparseMatrix &storage, int insrow)
virtual void StreamIN (ChStreamInBinary &mstream)
virtual void StreamOUT (ChStreamOutBinary &mstream)

Protected Attributes

ChMatrixNM< float, 1, 6 > Cq_a
ChMatrixNM< float, 1, 6 > Cq_b
ChMatrixNM< float, 6, 1 > Eq_a
ChMatrixNM< float, 6, 1 > Eq_b


Detailed Description

This class is inherited by the base ChLcpConstraintTwo(), that is implements the functionality for a constraint between a couple of two objects of type ChLcpVariablesBody(). Important note, it reports IsGPUcompatible() as 'true' because here we're sure that jacobians are 1x6 and 1x6, as required by the GPU solver.

Constructor & Destructor Documentation

chrono::ChLcpConstraintTwoBodies::ChLcpConstraintTwoBodies (  ) 

Default constructor.

chrono::ChLcpConstraintTwoBodies::ChLcpConstraintTwoBodies ( ChLcpVariablesBody mvariables_a,
ChLcpVariablesBody mvariables_b 
)

Construct and immediately set references to variables.

chrono::ChLcpConstraintTwoBodies::ChLcpConstraintTwoBodies ( const ChLcpConstraintTwoBodies other  ) 

Copy constructor.


Member Function Documentation

ChLcpConstraintTwoBodies & chrono::ChLcpConstraintTwoBodies::operator= ( const ChLcpConstraintTwoBodies other  ) 

Assignment operator: copy from other object.

virtual bool chrono::ChLcpConstraintTwoBodies::IsGPUcompatible (  )  [virtual]

Return true because this is the constraint type supported by GPU solver.

Reimplemented from chrono::ChLcpConstraint.

virtual ChMatrix<float>* chrono::ChLcpConstraintTwoBodies::Get_Cq_a (  )  [virtual]

Access jacobian matrix.

Implements chrono::ChLcpConstraintTwo.

virtual ChMatrix<float>* chrono::ChLcpConstraintTwoBodies::Get_Cq_b (  )  [virtual]

Access jacobian matrix.

Implements chrono::ChLcpConstraintTwo.

virtual ChMatrix<float>* chrono::ChLcpConstraintTwoBodies::Get_Eq_a (  )  [virtual]

Access auxiliary matrix (ex: used by iterative solvers).

Implements chrono::ChLcpConstraintTwo.

virtual ChMatrix<float>* chrono::ChLcpConstraintTwoBodies::Get_Eq_b (  )  [virtual]

Access auxiliary matrix (ex: used by iterative solvers).

Implements chrono::ChLcpConstraintTwo.

void chrono::ChLcpConstraintTwoBodies::SetVariables ( ChLcpVariables mvariables_a,
ChLcpVariables mvariables_b 
) [virtual]

Set references to the constrained objects, each of ChLcpVariablesBody type, automatically creating/resizing jacobians if needed. If variables aren't from ChLcpVariablesBody class, an assert failure happens.

Implements chrono::ChLcpConstraintTwo.

void chrono::ChLcpConstraintTwoBodies::Update_auxiliary (  )  [virtual]

This function updates the following auxiliary data:

Reimplemented from chrono::ChLcpConstraint.

virtual double chrono::ChLcpConstraintTwoBodies::Compute_Cq_q (  )  [virtual]

This function must computes the product between the row-jacobian of this constraint '[Cq_i]' and the vector of variables, 'v'. that is CV=[Cq_i]*v This is used for some iterative LCP solvers.

Implements chrono::ChLcpConstraint.

virtual void chrono::ChLcpConstraintTwoBodies::Increment_q ( const double  deltal  )  [virtual]

This function must increment the vector of variables 'v' with the quantity [invM]*[Cq_i]'*deltal,that is v+=[invM]*[Cq_i]'*deltal or better: v+=[Eq_i]*deltal This is used for some iterative LCP solvers.

Implements chrono::ChLcpConstraint.

virtual void chrono::ChLcpConstraintTwoBodies::Build_Cq ( ChSparseMatrix storage,
int  insrow 
) [virtual]

Puts the two jacobian parts into the 'insrow' row of a sparse matrix, where both portions of the jacobian are shifted in order to match the offset of the corresponding ChLcpVariable.The same is done on the 'insrow' column, so that the sparse matrix is kept symmetric. This is used only by the ChLcpSimplex solver (iterative solvers don't need to know jacobians explicitly)

Implements chrono::ChLcpConstraint.

void chrono::ChLcpConstraintTwoBodies::StreamIN ( ChStreamInBinary mstream  )  [virtual]

Method to allow deserializing a persistent binary archive (ex: a file) into transient data.

Reimplemented from chrono::ChLcpConstraintTwo.

Reimplemented in chrono::ChLcpConstraintTwoContact, chrono::ChLcpConstraintTwoContactN, chrono::ChLcpConstraintTwoFriction, chrono::ChLcpConstraintTwoFrictionApprox, chrono::ChLcpConstraintTwoFrictionT, chrono::ChLcpConstraintTwoRollingN, and chrono::ChLcpConstraintTwoRollingT.

void chrono::ChLcpConstraintTwoBodies::StreamOUT ( ChStreamOutBinary mstream  )  [virtual]

Method to allow serializing transient data into a persistent binary archive (ex: a file).

Reimplemented from chrono::ChLcpConstraintTwo.

Reimplemented in chrono::ChLcpConstraintTwoContact, chrono::ChLcpConstraintTwoContactN, chrono::ChLcpConstraintTwoFriction, chrono::ChLcpConstraintTwoFrictionApprox, chrono::ChLcpConstraintTwoFrictionT, chrono::ChLcpConstraintTwoRollingN, and chrono::ChLcpConstraintTwoRollingT.


Member Data Documentation

ChMatrixNM<float,1,6> chrono::ChLcpConstraintTwoBodies::Cq_a [protected]

The [Cq_a] jacobian of the constraint.

ChMatrixNM<float,1,6> chrono::ChLcpConstraintTwoBodies::Cq_b [protected]

The [Cq_b] jacobian of the constraint.

ChMatrixNM<float,6,1> chrono::ChLcpConstraintTwoBodies::Eq_a [protected]

The [Eq_a] product [Eq_a]=[invM_a]*[Cq_a]'.

ChMatrixNM<float,6,1> chrono::ChLcpConstraintTwoBodies::Eq_b [protected]

The [Eq_a] product [Eq_b]=[invM_b]*[Cq_b]'.


CHRONO::ENGINE
C++ library for multibody simulation, (C) Alessandro Tasora
This API documentation has been generated on 17 Jul 2009 by Doxygen