MULTIBODY SIMULATION SOFTWARE - API documentation

chrono::ChLcpConstraintTwoGPUcontN Class Reference

#include <CHlcpConstraintTwoGPUcontN.h>

Inheritance diagram for chrono::ChLcpConstraintTwoGPUcontN:

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

Collaboration graph
[legend]

List of all members.

Public Member Functions

 ChLcpConstraintTwoGPUcontN ()
 ChLcpConstraintTwoGPUcontN (ChLcpVariables *mvariables_a, ChLcpVariables *mvariables_b, ChLcpConstraintTwoGPUcontT *aU=0, ChLcpConstraintTwoGPUcontT *aV=0)
 ChLcpConstraintTwoGPUcontN (const ChLcpConstraintTwoGPUcontN &other)
virtual
ChLcpConstraintTwoGPUcontN
new_Duplicate ()
ChLcpConstraintTwoGPUcontNoperator= (const ChLcpConstraintTwoGPUcontN &other)
virtual void SetVariables (ChLcpVariables *mvariables_a, ChLcpVariables *mvariables_b)
ChVector GetP1 ()
void SetP1 (ChVector<> &mp)
ChVector GetP2 ()
void SetP2 (ChVector<> &mp)
ChVector< float > GetNormal ()
void SetNormal (ChVector< float > &mn)
float * GetContactCache ()
void SetContactCache (float *mcache)
double GetFrictionCoefficient ()
void SetFrictionCoefficient (double mcoeff)
ChLcpConstraintTwoGPUcontTGetTangentialConstraintU ()
ChLcpConstraintTwoGPUcontTGetTangentialConstraintV ()
void SetTangentialConstraintU (ChLcpConstraintTwoGPUcontT *mconstr)
void SetTangentialConstraintV (ChLcpConstraintTwoGPUcontT *mconstr)
virtual void Project ()
virtual ChMatrix
< float > * 
Get_Cq_a ()
virtual ChMatrix
< float > * 
Get_Cq_b ()
virtual ChMatrix
< float > * 
Get_Eq_a ()
virtual ChMatrix
< float > * 
Get_Eq_b ()
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

double friction
ChVector p1
ChVector p2
ChVector< float > normal
float * contact_cache
ChLcpConstraintTwoGPUcontTconstraint_U
ChLcpConstraintTwoGPUcontTconstraint_V


Detailed Description

This class is inherited by the ChLcpConstraintTwo(), It is used to represent the normal reaction between two objects ONLY when also two ChLcpConstraintTwoGPUcontT objects are used to represent friction. It can be used only with the ChLcpIterativeCudaSolver or similar, which use the GPU hardware.

Constructor & Destructor Documentation

chrono::ChLcpConstraintTwoGPUcontN::ChLcpConstraintTwoGPUcontN (  ) 

Default constructor.

chrono::ChLcpConstraintTwoGPUcontN::ChLcpConstraintTwoGPUcontN ( ChLcpVariables mvariables_a,
ChLcpVariables mvariables_b,
ChLcpConstraintTwoGPUcontT aU = 0,
ChLcpConstraintTwoGPUcontT aV = 0 
)

Construct and immediately set references to variables, also setting the U and V tangential friction constraints

chrono::ChLcpConstraintTwoGPUcontN::ChLcpConstraintTwoGPUcontN ( const ChLcpConstraintTwoGPUcontN other  ) 

Copy constructor.


Member Function Documentation

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

Assignment operator: copy from other object.

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

Set references to the constrained objects.

Implements chrono::ChLcpConstraintTwo.

double chrono::ChLcpConstraintTwoGPUcontN::GetFrictionCoefficient (  ) 

Get the friction coefficient.

void chrono::ChLcpConstraintTwoGPUcontN::SetFrictionCoefficient ( double  mcoeff  ) 

Set the friction coefficient.

ChLcpConstraintTwoGPUcontT* chrono::ChLcpConstraintTwoGPUcontN::GetTangentialConstraintU (  ) 

Get pointer to U tangential component.

ChLcpConstraintTwoGPUcontT* chrono::ChLcpConstraintTwoGPUcontN::GetTangentialConstraintV (  ) 

Get pointer to V tangential component.

void chrono::ChLcpConstraintTwoGPUcontN::SetTangentialConstraintU ( ChLcpConstraintTwoGPUcontT mconstr  ) 

Set pointer to U tangential component.

void chrono::ChLcpConstraintTwoGPUcontN::SetTangentialConstraintV ( ChLcpConstraintTwoGPUcontT mconstr  ) 

Set pointer to V tangential component.

virtual void chrono::ChLcpConstraintTwoGPUcontN::Project (  )  [virtual]

The projection should be done directly on the GPU custom kernel code, so this won't be ever called.

Reimplemented from chrono::ChLcpConstraint.

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

Computations with the following data are done directly on the GPU custom kernel code, so this won't be ever called.

Implements chrono::ChLcpConstraintTwo.

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

Access jacobian matrix.

Implements chrono::ChLcpConstraintTwo.

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

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

Implements chrono::ChLcpConstraintTwo.

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

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

Implements chrono::ChLcpConstraintTwo.

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

This function must computes the product between the row-jacobian of this constraint '[Cq_i]' and the vector of variables, 'q'. that is Cq_q=[Cq_i]*q This is used for some iterative LCP solvers. This function MUST BE OVERRIDDEN by specialized inherited classes! (since it will be called frequently, when iterative solvers are used, the implementation of the [Cq_i]*q product must be AS FAST AS POSSIBLE!). It returns the result of the computation.

Implements chrono::ChLcpConstraint.

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

This function must increment the vector of variables 'q' with the quantity [invM]*[Cq_i]'*deltal,that is q+=[invM]*[Cq_i]'*deltal This is used for some iterative LCP solvers. This function MUST BE OVERRIDDEN by specialized inherited classes!

Implements chrono::ChLcpConstraint.

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

Puts the jacobian portions into the 'insrow' row of a sparse matrix, where each portion of jacobian is 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) This function MUST BE OVERRIDDEN by specialized inherited classes!

Implements chrono::ChLcpConstraint.

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

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

Reimplemented from chrono::ChLcpConstraintTwo.

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

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

Reimplemented from chrono::ChLcpConstraintTwo.


Member Data Documentation

double chrono::ChLcpConstraintTwoGPUcontN::friction [protected]

the friction coefficient 'f', for sqrt(Tx^2+Ty^2)<f*Nz

ChVector chrono::ChLcpConstraintTwoGPUcontN::p2 [protected]

Contact point on 1st surface, in world reference.

ChVector<float> chrono::ChLcpConstraintTwoGPUcontN::normal [protected]

Contact point on 2nd surface, in world reference.

float* chrono::ChLcpConstraintTwoGPUcontN::contact_cache [protected]

Normal on 1st surface, in world reference.

ChLcpConstraintTwoGPUcontT* chrono::ChLcpConstraintTwoGPUcontN::constraint_U [protected]

cache of multipliers for warm starting (persistent manifold is handled by coll.engine)

the pointer to U tangential component

ChLcpConstraintTwoGPUcontT* chrono::ChLcpConstraintTwoGPUcontN::constraint_V [protected]

the pointer to V tangential component


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