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>


| 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.  More... | |
| 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.  More... | |
| 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.  More... | |
|  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.  More... | |
| virtual int | LoadGetNumFieldCoords () override | 
| Number of coordinates in the interpolated field.  More... | |
| virtual void | ComputeJacobian (ChState *state_x, ChStateDelta *state_w) override | 
| Compute Jacobian matrices K=-dQ/dx, R=-dQ/dv, and M=-dQ/da.  More... | |
| 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.  More... | |
| 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.  More... | |
| 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.  More... | |
| 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, bool update_assets) override | 
| Update, called at least at each time step.  More... | |
| 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.  More... | |
|  Public Member Functions inherited from chrono::ChObj | |
| ChObj (const ChObj &other) | |
| int | GetIdentifier () const | 
| Get the unique integer identifier of this object.  More... | |
| void | SetTag (int tag) | 
| Set an object integer tag (default: -1).  More... | |
| 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. | |
| void | AddVisualModel (std::shared_ptr< ChVisualModel > model) | 
| Add an (optional) visualization model.  More... | |
| std::shared_ptr< ChVisualModel > | GetVisualModel () const | 
| Access the visualization model (if any).  More... | |
| void | AddVisualShape (std::shared_ptr< ChVisualShape > shape, const ChFrame<> &frame=ChFrame<>()) | 
| Add the specified visual shape to the visualization model.  More... | |
| std::shared_ptr< ChVisualShape > | GetVisualShape (unsigned int i) const | 
| Access the specified visualization shape in the visualization model (if any).  More... | |
| void | AddVisualShapeFEA (std::shared_ptr< ChVisualShapeFEA > shapeFEA) | 
| Add the specified FEA visualization object to the visualization model.  More... | |
| std::shared_ptr< ChVisualShapeFEA > | GetVisualShapeFEA (unsigned int i) const | 
| Access the specified FEA visualization object in the visualization model (if any).  More... | |
| virtual ChFrame | GetVisualModelFrame (unsigned int nclone=0) const | 
| Get the reference frame (expressed in and relative to the absolute frame) of the visual model.  More... | |
| virtual unsigned int | GetNumVisualModelClones () const | 
| Return the number of clones of the visual model associated with this object.  More... | |
| void | AddCamera (std::shared_ptr< ChCamera > camera) | 
| Attach a camera to this object.  More... | |
| std::vector< std::shared_ptr< ChCamera > > | GetCameras () const | 
| Get the set of cameras attached to this object. | |
| void | UpdateVisualModel () | 
| Utility function to update only the associated visual assets (if any). | |
| 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.  More... | |
| 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.  More... | |
|  Protected Member Functions inherited from chrono::ChLoadBodyBody | |
| virtual void | ComputeQ (ChState *state_x, ChStateDelta *state_w) override | 
| Compute the generalized load(s).  More... | |
|  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 | |
| std::shared_ptr< ChVisualModelInstance > | vis_model_instance | 
| instantiated visualization model | |
| std::vector< std::shared_ptr< ChCamera > > | cameras | 
| set of cameras | |
| 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
◆ ComputeBodyBodyForceTorque()
| 
 | 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()
| 
 | inlineoverrideprotectedvirtual | 
Report if this is load is stiff.
If so, InjectKRMMatrices will provide the Jacobians of the load.
Implements chrono::ChLoadBase.
◆ 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()
| 
 | 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()
| 
 | 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:
- /builds/uwsbel/chrono/src/chrono/physics/ChLoadsBody.h
- /builds/uwsbel/chrono/src/chrono/physics/ChLoadsBody.cpp
