Project Chrono: chrono::ChContactNSC< Ta, Tb > Class Template Reference

Public Types | Public Member Functions | Protected Attributes | List of all members
chrono::ChContactNSC< Ta, Tb > Class Template Reference

## Description

template<class Ta, class Tb>
class chrono::ChContactNSC< Ta, Tb >

Class for non-smooth contact between two generic ChContactable objects.

Ta and Tb are of ChContactable sub classes.

`#include <ChContactNSC.h>`

Inheritance diagram for chrono::ChContactNSC< Ta, Tb >:
[legend]
Collaboration diagram for chrono::ChContactNSC< Ta, Tb >:
[legend]

## Public Types
typedef ChContactTuple< Ta, Tb >::typecarr_a | typecarr_a
typedef ChContactTuple< Ta, Tb >::typecarr_b | typecarr_b
Public Types inherited from chrono::ChContactTuple< Ta, Tb >
typedef Ta::type_variable_tuple_carrier | typecarr_a
typedef Tb::type_variable_tuple_carrier | typecarr_b

## Public Member Functions
| ChContactNSC (ChContactContainer *contact_container, Ta *obj_A, Tb *obj_B, const ChCollisionInfo &cinfo, const ChContactMaterialCompositeNSC &mat, double min_speed)
virtual void | Reset (Ta *obj_A, Tb *obj_B, const ChCollisionInfo &cinfo, const ChContactMaterialCompositeNSC &mat, double min_speed)
| Reinitialize this contact for reuse.
virtual ChVector3d | GetContactForce () const override
| Get the contact force, if computed, in contact coordinate system.
virtual double | GetFriction ()
| Get the contact friction coefficient.
virtual void | SetFriction (double mf)
| Set the contact friction coefficient.
ChConstraint * | GetConstraintNx ()
| Access the constraints.
ChConstraint * | GetConstraintTu ()
ChConstraint * | GetConstraintTv ()
virtual void | ContIntStateGatherReactions (const unsigned int off_L, ChVectorDynamic<> &L) override
virtual void | ContIntStateScatterReactions (const unsigned int off_L, const ChVectorDynamic<> &L) override
virtual void | ContIntLoadResidual_CqL (const unsigned int off_L, ChVectorDynamic<> &R, const ChVectorDynamic<> &L, const double c) override
virtual void | ContIntLoadConstraint_C (const unsigned int off_L, ChVectorDynamic<> &Qc, const double c, bool do_clamp, double recovery_clamp) override
virtual void | ContIntToDescriptor (const unsigned int off_L, const ChVectorDynamic<> &L, const ChVectorDynamic<> &Qc) override
virtual void | ContIntFromDescriptor (const unsigned int off_L, ChVectorDynamic<> &L) override
virtual void | InjectConstraints (ChSystemDescriptor &descriptor) override
virtual void | ConstraintsBiReset () override
virtual void | ConstraintsBiLoad_C (double factor=1., double recovery_clamp=0.1, bool do_clamp=false) override
virtual void | ConstraintsFetch_react (double factor) override
Public Member Functions inherited from chrono::ChContactTuple< Ta, Tb >
| ChContactTuple (ChContactContainer *contact_container, Ta *obj_A, Tb *obj_B)
void | Reset_cinfo (Ta *obj_A, Tb *obj_B, const ChCollisionInfo &cinfo)
| Reinitialize geometric information for this contact for reuse.
Ta * | GetObjA ()
| Get the colliding object A, with point P1.
Tb * | GetObjB ()
| Get the colliding object B, with point P2.
ChCoordsys | GetContactCoords () const
| Get the contact coordinate system, expressed in absolute frame.
const ChMatrix33 & | GetContactPlane () const
| Returns the pointer to a contained 3x3 matrix representing the UV and normal directions of the contact.
const ChVector3d & | GetContactP1 () const
| Get the contact point 1, in absolute coordinates.
const ChVector3d & | GetContactP2 () const
| Get the contact point 2, in absolute coordinates.
const ChVector3d & | GetContactNormal () const
| Get the contact normal, in absolute coordinates.
double | GetContactDistance () const
| Get the contact distance.
double | GetEffectiveCurvatureRadius () const
| Get the effective radius of curvature.
virtual ChVector3d | GetContactTorque () const
| Get the contact torque, if computed, in contact coordinate system.
virtual void | ContIntLoadResidual_F (ChVectorDynamic<> &R, const double c)
virtual void | ContInjectKRMmatrices (ChSystemDescriptor &mdescriptor)
virtual void | ContKRMmatricesLoad (double Kfactor, double Rfactor)

## Protected Attributes
float * | reactions_cache
| N,U,V reactions which might be stored in a persistent contact manifold.
ChConstraintTwoTuplesContactN< typecarr_a, typecarr_b > | Nx
| The three scalar constraints, to be fed into the system solver.
ChConstraintTwoTuplesFrictionT< typecarr_a, typecarr_b > | Tu
ChConstraintTwoTuplesFrictionT< typecarr_a, typecarr_b > | Tv
ChVector3d | react_force
double | compliance
double | complianceT
double | restitution
double | dampingf
double | min_rebounce_speed
Protected Attributes inherited from chrono::ChContactTuple< Ta, Tb >
ChContactContainer * | container
| associated contact container
Ta * | objA
| first ChContactable object in the pair
Tb * | objB
| second ChContactable object in the pair
ChVector3d | p1
| max penetration point on geo1, after refining, in abs space
ChVector3d | p2
| max penetration point on geo2, after refining, in abs space
ChVector3d | normal
| normal, on surface of master reference (geo1)
ChMatrix33 | contact_plane
| the plane of contact (X is normal direction)
double | norm_dist
| penetration distance (negative if going inside) after refining
double | eff_radius
| effective radius of curvature at contact

## Constructor & Destructor Documentation

## ◆ ChContactNSC()

template<class Ta, class Tb>

chrono::ChContactNSC< Ta, Tb >::ChContactNSC | ( | ChContactContainer * | contact_container,
|  | Ta * | obj_A,
|  | Tb * | obj_B,
|  | const ChCollisionInfo & | cinfo,
|  | const ChContactMaterialCompositeNSC & | mat,
|  | double | min_speed )
| inline

Parameters

  contact_container | contact container
  obj_A | contactable object A
  obj_B | contactable object B
  cinfo | data for the collision pair
  mat | composite material
  min_speed | minimum speed for rebounce

## Member Function Documentation

## ◆ ConstraintsBiLoad_C()

template<class Ta, class Tb>

virtual void chrono::ChContactNSC< Ta, Tb >::ConstraintsBiLoad_C | ( | double | factor = 1.,
|  | double | recovery_clamp = 0.1,
|  | bool | do_clamp = false )
| inlineoverridevirtual

Reimplemented from chrono::ChContactTuple< Ta, Tb >.

## ◆ ConstraintsBiReset()

template<class Ta, class Tb>

virtual void chrono::ChContactNSC< Ta, Tb >::ConstraintsBiReset | ( |  | ) |
| inlineoverridevirtual

Reimplemented from chrono::ChContactTuple< Ta, Tb >.

## ◆ ConstraintsFetch_react()

template<class Ta, class Tb>

virtual void chrono::ChContactNSC< Ta, Tb >::ConstraintsFetch_react | ( | double | factor | ) |
| inlineoverridevirtual

Reimplemented from chrono::ChContactTuple< Ta, Tb >.

## ◆ ContIntFromDescriptor()

template<class Ta, class Tb>

virtual void chrono::ChContactNSC< Ta, Tb >::ContIntFromDescriptor | ( | const unsigned int | off_L,
|  | ChVectorDynamic<> & | L )
| inlineoverridevirtual

Reimplemented from chrono::ChContactTuple< Ta, Tb >.

## ◆ ContIntLoadConstraint_C()

template<class Ta, class Tb>

virtual void chrono::ChContactNSC< Ta, Tb >::ContIntLoadConstraint_C | ( | const unsigned int | off_L,
|  | ChVectorDynamic<> & | Qc,
|  | const double | c,
|  | bool | do_clamp,
|  | double | recovery_clamp )
| inlineoverridevirtual

Reimplemented from chrono::ChContactTuple< Ta, Tb >.

## ◆ ContIntLoadResidual_CqL()

template<class Ta, class Tb>

virtual void chrono::ChContactNSC< Ta, Tb >::ContIntLoadResidual_CqL | ( | const unsigned int | off_L,
|  | ChVectorDynamic<> & | R,
|  | const ChVectorDynamic<> & | L,
|  | const double | c )
| inlineoverridevirtual

Reimplemented from chrono::ChContactTuple< Ta, Tb >.

## ◆ ContIntStateGatherReactions()

template<class Ta, class Tb>

virtual void chrono::ChContactNSC< Ta, Tb >::ContIntStateGatherReactions | ( | const unsigned int | off_L,
|  | ChVectorDynamic<> & | L )
| inlineoverridevirtual

Reimplemented from chrono::ChContactTuple< Ta, Tb >.

## ◆ ContIntStateScatterReactions()

template<class Ta, class Tb>

virtual void chrono::ChContactNSC< Ta, Tb >::ContIntStateScatterReactions | ( | const unsigned int | off_L,
|  | const ChVectorDynamic<> & | L )
| inlineoverridevirtual

Reimplemented from chrono::ChContactTuple< Ta, Tb >.

## ◆ ContIntToDescriptor()

template<class Ta, class Tb>

virtual void chrono::ChContactNSC< Ta, Tb >::ContIntToDescriptor | ( | const unsigned int | off_L,
|  | const ChVectorDynamic<> & | L,
|  | const ChVectorDynamic<> & | Qc )
| inlineoverridevirtual

Reimplemented from chrono::ChContactTuple< Ta, Tb >.

## ◆ GetContactForce()

template<class Ta, class Tb>

virtual ChVector3d chrono::ChContactNSC< Ta, Tb >::GetContactForce | ( |  | ) | const
| inlineoverridevirtual

Get the contact force, if computed, in contact coordinate system.

Reimplemented from chrono::ChContactTuple< Ta, Tb >.

## ◆ InjectConstraints()

template<class Ta, class Tb>

virtual void chrono::ChContactNSC< Ta, Tb >::InjectConstraints | ( | ChSystemDescriptor & | descriptor | ) |
| inlineoverridevirtual

Reimplemented from chrono::ChContactTuple< Ta, Tb >.

## ◆ Reset()

template<class Ta, class Tb>

virtual void chrono::ChContactNSC< Ta, Tb >::Reset | ( | Ta * | obj_A,
|  | Tb * | obj_B,
|  | const ChCollisionInfo & | cinfo,
|  | const ChContactMaterialCompositeNSC & | mat,
|  | double | min_speed )
| inlinevirtual

Reinitialize this contact for reuse.

Parameters

  obj_A | contactable object A
  obj_B | contactable object B
  cinfo | data for the collision pair
  mat | composite material
  min_speed | minimum speed for rebounce

Reimplemented in chrono::ChContactNSCrolling< Ta, Tb >, and chrono::ChContactNSCrolling< ChContactable_1vars< 6 >, ChContactable_1vars< 6 > >.

## Member Data Documentation

## ◆ Nx

template<class Ta, class Tb>

ChConstraintTwoTuplesContactN<typecarr_a, typecarr_b> chrono::ChContactNSC< Ta, Tb >::Nx
| protected

The three scalar constraints, to be fed into the system solver.

They contain jacobians data and special functions.

The documentation for this class was generated from the following file:

- D:/W/B/src/chrono-9.0.1/src/chrono/physics/ChContactNSC.h