Project Chrono: chrono::ChLoadBodyBodyBushingGeneric Class Reference

Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
chrono::ChLoadBodyBodyBushingGeneric Class Reference

## Description

Load for a visco-elastic translational/rotational bushing acting between two bodies.

It uses a full user-defined 6x6 matrix [K] to express the local stiffness of the bushing, assumed expressed in the bushing coordinate system attached to the second body. A user-defined 6x6 matrix [D] can be defined for damping, as well. Note that this assumes small rotations. Differently from the simpler ChLoadBodyBodyBushingMate and ChLoadBodyBodyBushingSpherical this can represent coupled effects, by using extra-diagonal terms in [K] and/or [D].

`#include <ChLoadsBody.h>`

Inheritance diagram for chrono::ChLoadBodyBodyBushingGeneric:
[legend]
Collaboration diagram for chrono::ChLoadBodyBodyBushingGeneric:
[legend]

## Public Member Functions
| ChLoadBodyBodyBushingGeneric (std::shared_ptr< ChBody > bodyA, std::shared_ptr< ChBody > bodyB, const ChFrame<> &abs_application, const ChMatrix66d &stiffness66, const ChMatrix66d &damping66)
virtual ChLoadBodyBodyBushingGeneric * | Clone () const override
| "Virtual" copy constructor (covariant return type).
void | SetStiffnessMatrix (const ChMatrix66d &mstiffness)
| Set a generic 6x6 stiffness matrix, expressed in local coordinate system of loc_application_B.
const ChMatrix66d & | GetStiffnessMatrix () const
void | SetDampingMatrix (const ChMatrix66d &mdamping)
| Set a generic 6x6 damping matrix, expressed in local coordinate system of loc_application_B.
const ChMatrix66d & | GetDampingMatrix () const
void | SetNeutralForce (const ChVector3d mf)
| Set the initial pre-load of the bushing, applied to loc_application_A, expressed in local coordinate system of loc_application_B.
ChVector3d | GetNeutralForce () const
void | SetNeutralTorque (const ChVector3d mt)
| Set the initial pre-load torque of the bushing, applied to loc_application_A, expressed in local coordinate system of loc_application_B.
ChVector3d | GetNeutralTorque () const
ChFrame & | NeutralDisplacement ()
| Set/get the initial pre-displacement of the bushing, as the pre-displacement of A, expressed in local coordinate system of loc_application_B.
Public Member Functions inherited from chrono::ChLoadBodyBody
| ChLoadBodyBody (std::shared_ptr< ChBody > bodyA, std::shared_ptr< ChBody > bodyB, const ChFrame<> &abs_application)
ChVector3d | GetForce () const
| For diagnosis purposes, this can return the actual last computed value of the applied force, expressed in coordinate system of loc_application_B, assumed applied to body B.
ChVector3d | GetTorque () const
| For diagnosis purposes, this can return the actual last computed value of the applied torque, expressed in coordinate system of loc_application_B, assumed applied to body B.
void | SetApplicationFrameA (const ChFrame<> &mpA)
| Set the application frame of bushing on bodyA.
ChFrame | GetApplicationFrameA () const
void | SetApplicationFrameB (const ChFrame<> &mpB)
| Set the application frame of bushing on bodyB.
ChFrame | GetApplicationFrameB () const
ChFrameMoving | GetAbsoluteFrameA () const
| Get absolute coordinate of frame A (last computed).
ChFrameMoving | GetAbsoluteFrameB () const
| Get absolute coordinate of frame B (last computed).
std::shared_ptr< ChBody > | GetBodyA () const
std::shared_ptr< ChBody > | GetBodyB () const
Public Member Functions inherited from chrono::ChLoadCustomMultiple
| ChLoadCustomMultiple (std::vector< std::shared_ptr< ChLoadable > > &loadable_objects)
| ChLoadCustomMultiple (std::shared_ptr< ChLoadable > loadableA, std::shared_ptr< ChLoadable > loadableB)
| ChLoadCustomMultiple (std::shared_ptr< ChLoadable > loadableA, std::shared_ptr< ChLoadable > loadableB, std::shared_ptr< ChLoadable > loadableC)
virtual int | LoadGetNumCoordsPosLevel () override
| Gets the number of DOFs affected by this load (position part).
virtual int | LoadGetNumCoordsVelLevel () override
| Gets the number of DOFs affected by this load (speed part).
virtual void | LoadGetStateBlock_x (ChState &mD) override
| Gets all the current DOFs packed in a single vector (position part).
virtual void | LoadGetStateBlock_w (ChStateDelta &mD) override
| Gets all the current DOFs packed in a single vector (speed part).
virtual void | LoadStateIncrement (const ChState &x, const ChStateDelta &dw, ChState &x_new) override
| Increment a packed state (e.g., as obtained by LoadGetStateBlock_x()) by a given packed state-delta.
virtual int | LoadGetNumFieldCoords () override
| Number of coordinates in the interpolated field.
virtual void | ComputeJacobian (ChState *state_x, ChStateDelta *state_w) override
| Compute Jacobian matrices K=-dQ/dx, R=-dQ/dv, and M=-dQ/da.
virtual void | LoadIntLoadResidual_F (ChVectorDynamic<> &R, double c) override
| Add the internal loads Q (pasted at global offsets) into a global vector R, multiplied by a scaling factor c.
virtual void | LoadIntLoadResidual_Mv (ChVectorDynamic<> &R, const ChVectorDynamic<> &w, double c) override
| Increment a vector R with the matrix-vector product M*w, scaled by the factor c.
virtual void | LoadIntLoadLumpedMass_Md (ChVectorDynamic<> &Md, double &err, const double c) override
| Add the lumped mass to an Md vector, representing a mass diagonal matrix.
virtual void | CreateJacobianMatrices () override
| Create the Jacobian loads if needed and set the ChVariables referenced by the sparse KRM block.
virtual ChVectorDynamic & | GetQ ()
| Access the generalized load vector Q.
Public Member Functions inherited from chrono::ChLoadBase
ChLoadJacobians * | GetJacobians ()
| Access the Jacobians (if any, i.e. if this is a stiff load).
virtual void | Update (double time)
| Update, called at least at each time step.
virtual void | InjectKRMMatrices (ChSystemDescriptor &descriptor)
| Register with the given system descriptor any ChKRMBlock objects associated with this item.
virtual void | LoadKRMMatrices (double Kfactor, double Rfactor, double Mfactor)
| Compute and load current stiffnes (K), damping (R), and mass (M) matrices in encapsulated ChKRMBlock objects.
Public Member Functions inherited from chrono::ChObj
| ChObj (const ChObj &other)
int | GetIdentifier () const
| Get the unique integer identifier of this object.
void | SetTag (int tag)
| Set an object integer tag (default: -1).
int | GetTag () const
| Get the tag of this object.
void | SetName (const std::string &myname)
| Set the name of this object.
const std::string & | GetName () const
| Get the name of this object.
double | GetChTime () const
| Gets the simulation time of this object.
void | SetChTime (double m_time)
| Sets the simulation time of this object.
virtual void | ArchiveOut (ChArchiveOut &archive_out)
| Method to allow serialization of transient data to archives.
virtual void | ArchiveIn (ChArchiveIn &archive_in)
| Method to allow de-serialization of transient data from archives.
virtual std::string & | ArchiveContainerName ()

## Protected Member Functions
virtual bool | IsStiff () override
| Report if this is load is stiff.
virtual void | ComputeBodyBodyForceTorque (const ChFrameMoving<> &rel_AB, ChVector3d &loc_force, ChVector3d &loc_torque) override
| Implement the computation of the bushing force, in local coordinates of the loc_application_B.
Protected Member Functions inherited from chrono::ChLoadBodyBody
virtual void | ComputeQ (ChState *state_x, ChStateDelta *state_w) override
| Compute the generalized load(s).
Protected Member Functions inherited from chrono::ChObj
int | GenerateUniqueIdentifier ()

## Protected Attributes
ChMatrix66d | stiffness
ChMatrix66d | damping
ChVector3d | neutral_force
ChVector3d | neutral_torque
ChFrame | neutral_displacement
Protected Attributes inherited from chrono::ChLoadBodyBody
ChFrame | loc_application_A
| application point on body A (local)
ChFrame | loc_application_B
| application point on body B (local)
ChVector3d | locB_force
| store computed values here
ChVector3d | locB_torque
| store computed values here
ChFrameMoving | frame_Aw
| for results
ChFrameMoving | frame_Bw
| for results
Protected Attributes inherited from chrono::ChLoadBase
ChLoadJacobians * | m_jacobians
Protected Attributes inherited from chrono::ChObj
double | ChTime
| object simulation time
std::string | m_name
| object name
int | m_identifier
| object unique identifier
int | m_tag
| user-supplied tag

## Additional Inherited Members
Public Attributes inherited from chrono::ChLoadCustomMultiple
std::vector< std::shared_ptr< ChLoadable > > | loadables
ChVectorDynamic | load_Q

## Constructor & Destructor Documentation

## ◆ ChLoadBodyBodyBushingGeneric()

chrono::ChLoadBodyBodyBushingGeneric::ChLoadBodyBodyBushingGeneric | ( | std::shared_ptr< ChBody > | bodyA,
|  | std::shared_ptr< ChBody > | bodyB,
|  | const ChFrame<> & | abs_application,
|  | const ChMatrix66d & | stiffness66,
|  | const ChMatrix66d & | damping66 )

Parameters

  bodyA | body A
  bodyB | body B
  abs_application | create the bushing here, in abs. coordinates.
  stiffness66 | stiffness as a 6x6 matrix, local in the abs_application frame
  damping66 | damping as a 6x6 matrix, local in the abs_application frame

## Member Function Documentation

## ◆ Clone()

virtual ChLoadBodyBodyBushingGeneric * chrono::ChLoadBodyBodyBushingGeneric::Clone | ( |  | ) | const
| inlineoverridevirtual

"Virtual" copy constructor (covariant return type).

Implements chrono::ChObj.

## ◆ ComputeBodyBodyForceTorque()

void chrono::ChLoadBodyBodyBushingGeneric::ComputeBodyBodyForceTorque | ( | const ChFrameMoving<> & | rel_AB,
|  | ChVector3d & | loc_force,
|  | ChVector3d & | loc_torque )
| overrideprotectedvirtual

Implement the computation of the bushing force, in local coordinates of the loc_application_B.

Force is assumed applied to loc_application_B of body B, and its opposite reaction to A.

Implements chrono::ChLoadBodyBody.

## ◆ IsStiff()

virtual bool chrono::ChLoadBodyBodyBushingGeneric::IsStiff | ( |  | ) |
| inlineoverrideprotectedvirtual

Report if this is load is stiff.

If so, InjectKRMMatrices will provide the Jacobians of the load.

Implements chrono::ChLoadBase.

## ◆ NeutralDisplacement()

ChFrame & chrono::ChLoadBodyBodyBushingGeneric::NeutralDisplacement | ( |  | ) |
| inline

Set/get the initial pre-displacement of the bushing, as the pre-displacement of A, expressed in local coordinate system of loc_application_B.

Default behavior is no initial pre-displacement.

## ◆ SetNeutralForce()

void chrono::ChLoadBodyBodyBushingGeneric::SetNeutralForce | ( | const ChVector3d | mf | ) |
| inline

Set the initial pre-load of the bushing, applied to loc_application_A, expressed in local coordinate system of loc_application_B.

By default it is zero.

## ◆ SetNeutralTorque()

void chrono::ChLoadBodyBodyBushingGeneric::SetNeutralTorque | ( | const ChVector3d | mt | ) |
| inline

Set the initial pre-load torque of the bushing, applied to loc_application_A, expressed in local coordinate system of loc_application_B.

By default it is zero.

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

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