Description
Load for a visco-elasto-plastic bushing acting between two bodies.
It uses three values for stiffness along the X Y Z axes of a coordinate system attached to the second body. This is equivalent to having a bushing with 3x3 diagonal local stiffness matrix. Also, it allows a very simple plasticity model, to cap the plastic force on x,y,z given three yelds.
#include <ChLoadsBody.h>
Public Member Functions | |
ChLoadBodyBodyBushingPlastic (std::shared_ptr< ChBody > mbodyA, std::shared_ptr< ChBody > mbodyB, const ChFrame<> &abs_application, const ChVector3d &stiffness, const ChVector3d &damping, const ChVector3d &plastic_yield) | |
void | SetYield (const ChVector3d myeld) |
Set plastic yield, forces beyond this limit will be capped. More... | |
ChVector3d | GetYield () const |
ChVector3d | GetPlasticDeformation () const |
Get the current accumulated plastic deformation. More... | |
Public Member Functions inherited from chrono::ChLoadBodyBodyBushingSpherical | |
ChLoadBodyBodyBushingSpherical (std::shared_ptr< ChBody > bodyA, std::shared_ptr< ChBody > bodyB, const ChFrame<> &abs_application, const ChVector3d &stiffness_coefs, const ChVector3d &damping_coefs) | |
virtual ChLoadBodyBodyBushingSpherical * | Clone () const override |
"Virtual" copy constructor (covariant return type). | |
void | SetStiffness (const ChVector3d mstiffness) |
Set stiffness, along the x y z axes of loc_application_B, es [N/m]. | |
ChVector3d | GetStiffness () const |
void | SetDamping (const ChVector3d mdamping) |
Set damping, along the x y z axes of loc_application_B, es [Ns/m]. | |
ChVector3d | GetDamping () const |
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) |
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. | |
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 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::ChLoadBodyBodyBushingSpherical | |
virtual bool | IsStiff () override |
Report if this is load is stiff. 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 | |
ChVector3d | yield |
ChVector3d | plastic_def |
Protected Attributes inherited from chrono::ChLoadBodyBodyBushingSpherical | |
ChVector3d | stiffness |
ChVector3d | damping |
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
◆ ChLoadBodyBodyBushingPlastic()
chrono::ChLoadBodyBodyBushingPlastic::ChLoadBodyBodyBushingPlastic | ( | std::shared_ptr< ChBody > | mbodyA, |
std::shared_ptr< ChBody > | mbodyB, | ||
const ChFrame<> & | abs_application, | ||
const ChVector3d & | stiffness, | ||
const ChVector3d & | damping, | ||
const ChVector3d & | plastic_yield | ||
) |
- Parameters
-
mbodyA body A mbodyB body B abs_application create the bushing here, in abs. coordinates. stiffness stiffness, along the x y z axes of the abs_application damping damping, along the x y z axes of the abs_application plastic_yield plastic yield, along the x y z axes of the abs_application
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.
Reimplemented from chrono::ChLoadBodyBodyBushingSpherical.
◆ GetPlasticDeformation()
|
inline |
Get the current accumulated plastic deformation.
This could become nonzero if forces went beyond the plastic yield.
◆ SetYield()
|
inline |
Set plastic yield, forces beyond this limit will be capped.
Expressed along the x y z axes of loc_application_B.
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