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 <ChLoadsXYZROTnode.h>
Public Member Functions | |
ChLoadXYZROTnodeXYZROTnodeBushingGeneric (std::shared_ptr< ChNodeFEAxyzrot > mnodeA, std::shared_ptr< ChNodeFEAxyzrot > mnodeB, const ChFrame<> &abs_application, ChMatrixConstRef mstiffness, ChMatrixConstRef mdamping) | |
virtual ChLoadXYZROTnodeXYZROTnodeBushingGeneric * | Clone () const override |
"Virtual" copy constructor (covariant return type). | |
void | SetStiffnessMatrix (ChMatrixConstRef mstiffness) |
Set a generic 6x6 stiffness matrix, expressed in local coordinate system of loc_application_B. | |
const ChMatrixNM< double, 6, 6 > & | GetStiffnessMatrix () const |
void | SetDampingMatrix (ChMatrixConstRef mdamping) |
Set a generic 6x6 damping matrix, expressed in local coordinate system of loc_application_B. | |
const ChMatrixNM< double, 6, 6 > & | GetDampingMatrix () const |
void | SetNeutralForce (const ChVector<> mf) |
Set the initial pre-load of the bushing, applied to loc_application_A, expressed in local coordinate system of loc_application_B. More... | |
ChVector | GetNeutralForce () const |
void | SetNeutralTorque (const ChVector<> 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... | |
ChVector | 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::fea::ChLoadXYZROTnodeXYZROTnode | |
ChLoadXYZROTnodeXYZROTnode (std::shared_ptr< ChNodeFEAxyzrot > mnodeA, std::shared_ptr< ChNodeFEAxyzrot > mnodeB, const ChFrame<> &abs_application) | |
virtual void | ComputeQ (ChState *state_x, ChStateDelta *state_w) override |
Compute Q, the generalized load. More... | |
ChVector | 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. | |
ChVector | 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< ChNodeFEAxyzrot > | GetNodeA () const |
std::shared_ptr< ChNodeFEAxyzrot > | GetNodeB () const |
Public Member Functions inherited from chrono::ChLoadCustomMultiple | |
ChLoadCustomMultiple (std::vector< std::shared_ptr< ChLoadable >> &mloadables) | |
ChLoadCustomMultiple (std::shared_ptr< ChLoadable > mloadableA, std::shared_ptr< ChLoadable > mloadableB) | |
ChLoadCustomMultiple (std::shared_ptr< ChLoadable > mloadableA, std::shared_ptr< ChLoadable > mloadableB, std::shared_ptr< ChLoadable > mloadableC) | |
virtual int | LoadGet_ndof_x () override |
Gets the number of DOFs affected by this load (position part) | |
virtual int | LoadGet_ndof_w () 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 (ex. More... | |
virtual int | LoadGet_field_ncoords () override |
Number of coordinates in the interpolated field, ex=3 for a tetrahedron finite element or a cable, = 1 for a thermal problem, etc. | |
virtual void | ComputeJacobian (ChState *state_x, ChStateDelta *state_w, ChMatrixRef mK, ChMatrixRef mR, ChMatrixRef mM) override |
Compute jacobians (default fallback). More... | |
virtual void | LoadIntLoadResidual_F (ChVectorDynamic<> &R, double c) override |
Adds the internal loads Q (pasted at global nodes offsets) into a global vector R, multiplied by a scaling factor c, as R += forces * c. | |
virtual void | LoadIntLoadResidual_Mv (ChVectorDynamic<> &R, const ChVectorDynamic<> &w, double c) override |
Default fallback: compute jacobians via ComputeJacobian(), then use M=-dQ/da to do R += c*M*w. More... | |
virtual void | CreateJacobianMatrices () override |
Create the jacobian loads if needed, and also 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: this is called at least at each time step. More... | |
virtual void | InjectKRMmatrices (ChSystemDescriptor &mdescriptor) |
Tell to a system descriptor that there are item(s) of type ChKblock in this object (for further passing it to a solver) | |
virtual void | KRMmatricesLoad (double Kfactor, double Rfactor, double Mfactor) |
Adds the current stiffness K and damping R and mass M matrices in encapsulated ChKblock item(s), if any. More... | |
Public Member Functions inherited from chrono::ChObj | |
ChObj (const ChObj &other) | |
int | GetIdentifier () const |
Gets the numerical identifier of the object. | |
void | SetIdentifier (int id) |
Sets the numerical identifier of the object. | |
double | GetChTime () const |
Gets the simulation time of this object. | |
void | SetChTime (double m_time) |
Sets the simulation time of this object. | |
const char * | GetName () const |
Gets the name of the object as C Ascii null-terminated string -for reading only! | |
void | SetName (const char myname[]) |
Sets the name of this object, as ascii string. | |
std::string | GetNameString () const |
Gets the name of the object as C Ascii null-terminated string. | |
void | SetNameString (const std::string &myname) |
Sets the name of this object, as std::string. | |
void | MFlagsSetAllOFF (int &mflag) |
void | MFlagsSetAllON (int &mflag) |
void | MFlagSetON (int &mflag, int mask) |
void | MFlagSetOFF (int &mflag, int mask) |
int | MFlagGet (int &mflag, int mask) |
virtual void | ArchiveOUT (ChArchiveOut &marchive) |
Method to allow serialization of transient data to archives. | |
virtual void | ArchiveIN (ChArchiveIn &marchive) |
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 | ComputeForceTorque (const ChFrameMoving<> &rel_AB, ChVector<> &loc_force, ChVector<> &loc_torque) override |
Compute the wrench (force & torque) between the two nodes, expressed in local frame of loc_application_B, given rel_AB, i.e. More... | |
Protected Attributes | |
ChMatrixNM< double, 6, 6 > | stiffness |
ChMatrixNM< double, 6, 6 > | damping |
ChVector | neutral_force |
ChVector | neutral_torque |
ChFrame | neutral_displacement |
Protected Attributes inherited from chrono::fea::ChLoadXYZROTnodeXYZROTnode | |
ChFrame | loc_application_A |
application point on body A (local) | |
ChFrame | loc_application_B |
application point on body B (local) | |
ChVector | locB_force |
store computed values here | |
ChVector | locB_torque |
store computed values here | |
ChFrameMoving | frame_Aw |
for results | |
ChFrameMoving | frame_Bw |
for results | |
Protected Attributes inherited from chrono::ChLoadBase | |
ChLoadJacobians * | jacobians |
Protected Attributes inherited from chrono::ChObj | |
double | ChTime |
the time of simulation for the object | |
Additional Inherited Members | |
Public Attributes inherited from chrono::ChLoadCustomMultiple | |
std::vector< std::shared_ptr< ChLoadable > > | loadables |
ChVectorDynamic | load_Q |
Constructor & Destructor Documentation
◆ ChLoadXYZROTnodeXYZROTnodeBushingGeneric()
chrono::fea::ChLoadXYZROTnodeXYZROTnodeBushingGeneric::ChLoadXYZROTnodeXYZROTnodeBushingGeneric | ( | std::shared_ptr< ChNodeFEAxyzrot > | mnodeA, |
std::shared_ptr< ChNodeFEAxyzrot > | mnodeB, | ||
const ChFrame<> & | abs_application, | ||
ChMatrixConstRef | mstiffness, | ||
ChMatrixConstRef | mdamping | ||
) |
- Parameters
-
mnodeA node A mnodeB node B abs_application create the bushing here, in abs. coordinates. Will define loc_application_A and B mstiffness stiffness as a 6x6 matrix, local in the abs_application frame mdamping damping as a 6x6 matrix, local in the abs_application frame
Member Function Documentation
◆ ComputeForceTorque()
|
overrideprotectedvirtual |
Compute the wrench (force & torque) between the two nodes, expressed in local frame of loc_application_B, given rel_AB, i.e.
the position and speed of loc_application_A respect to loc_application_B, expressed in frame of loc_application_B. Force is assumed applied to loc_application_B, and its opposite reaction to A.
Implements chrono::fea::ChLoadXYZROTnodeXYZROTnode.
◆ 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/fea/ChLoadsXYZROTnode.h
- /builds/uwsbel/chrono/src/chrono/fea/ChLoadsXYZROTnode.cpp