Description
Class for a single node in the SPH cluster.
Does not define mass, inertia and shape because those are shared among them.
#include <ChMatterSPH.h>
Public Member Functions | |
ChNodeSPH (const ChNodeSPH &other) | |
ChNodeSPH & | operator= (const ChNodeSPH &other) |
double | GetKernelRadius () const |
void | SetKernelRadius (double mr) |
double | GetCollisionRadius () const |
void | SetCollisionRadius (double mr) |
void | SetMass (double mmass) override |
double | GetMass () const override |
virtual ChVariablesNode & | Variables () override |
ChMatterSPH * | GetContainer () const |
void | SetContainer (ChMatterSPH *mc) |
virtual ChContactable::eChContactableType | GetContactableType () const override |
This must return the proper eChContactableType enum, for allowing a faster collision dispatcher in ChContactContainer classes (this enum will be used instead of slow dynamic_cast<> to infer the type of ChContactable, if possible) | |
virtual ChVariables * | GetVariables1 () override |
Access variables. | |
virtual bool | IsContactActive () override |
Tell if the object must be considered in collision detection. | |
virtual int | ContactableGet_ndof_x () override |
Get the number of DOFs affected by this object (position part). | |
virtual int | ContactableGet_ndof_w () override |
Get the number of DOFs affected by this object (speed part). | |
virtual void | ContactableGetStateBlock_x (ChState &x) override |
Get all the DOFs packed in a single vector (position part) | |
virtual void | ContactableGetStateBlock_w (ChStateDelta &w) override |
Get all the DOFs packed in a single vector (speed part) | |
virtual void | ContactableIncrementState (const ChState &x, const ChStateDelta &dw, ChState &x_new) override |
Increment the provided state of this object by the given state-delta increment. More... | |
virtual ChVector | GetContactPoint (const ChVector<> &loc_point, const ChState &state_x) override |
Express the local point in absolute frame, for the given state position. | |
virtual ChVector | GetContactPointSpeed (const ChVector<> &loc_point, const ChState &state_x, const ChStateDelta &state_w) override |
Get the absolute speed of a local point attached to the contactable. More... | |
virtual ChVector | GetContactPointSpeed (const ChVector<> &abs_point) override |
Get the absolute speed of point abs_point if attached to the surface. More... | |
virtual ChCoordsys | GetCsysForCollisionModel () override |
Return the coordinate system for the associated collision model. More... | |
virtual void | ContactForceLoadResidual_F (const ChVector<> &F, const ChVector<> &abs_point, ChVectorDynamic<> &R) override |
Apply the force, expressed in absolute reference, applied in pos, to the coordinates of the variables. More... | |
virtual void | ContactForceLoadQ (const ChVector<> &F, const ChVector<> &point, const ChState &state_x, ChVectorDynamic<> &Q, int offset) override |
Apply the given force at the given point and load the generalized force array. More... | |
virtual void | ComputeJacobianForContactPart (const ChVector<> &abs_point, ChMatrix33<> &contact_plane, type_constraint_tuple &jacobian_tuple_N, type_constraint_tuple &jacobian_tuple_U, type_constraint_tuple &jacobian_tuple_V, bool second) override |
Compute the jacobian(s) part(s) for this contactable item. More... | |
virtual double | GetContactableMass () override |
This can be useful in some SMC code: | |
virtual ChPhysicsItem * | GetPhysicsItem () override |
This is only for backward compatibility. | |
virtual void | ArchiveOUT (ChArchiveOut &marchive) override |
Method to allow serialization of transient data to archives. | |
virtual void | ArchiveIN (ChArchiveIn &marchive) override |
Method to allow de serialization of transient data from archives. | |
Public Member Functions inherited from chrono::ChNodeXYZ | |
ChNodeXYZ (const ChVector<> &initial_pos) | |
ChNodeXYZ (const ChNodeXYZ &other) | |
ChNodeXYZ & | operator= (const ChNodeXYZ &other) |
const ChVector & | GetPos () const |
void | SetPos (const ChVector<> &mpos) |
const ChVector & | GetPos_dt () const |
void | SetPos_dt (const ChVector<> &mposdt) |
const ChVector & | GetPos_dtdt () const |
void | SetPos_dtdt (const ChVector<> &mposdtdt) |
virtual int | Get_ndof_x () const override |
Get the number of degrees of freedom. | |
virtual int | LoadableGet_ndof_x () override |
Gets the number of DOFs affected by this element (position part) | |
virtual int | LoadableGet_ndof_w () override |
Gets the number of DOFs affected by this element (speed part) | |
virtual void | LoadableGetStateBlock_x (int block_offset, ChState &mD) override |
Gets all the DOFs packed in a single vector (position part) | |
virtual void | LoadableGetStateBlock_w (int block_offset, ChStateDelta &mD) override |
Gets all the DOFs packed in a single vector (speed part) | |
virtual void | LoadableStateIncrement (const unsigned int off_x, ChState &x_new, const ChState &x, const unsigned int off_v, const ChStateDelta &Dv) override |
Increment all DOFs using a delta. | |
virtual int | Get_field_ncoords () override |
Number of coordinates in the interpolated field, ex=3 for a tetrahedron finite element or a cable, etc. More... | |
virtual int | GetSubBlocks () override |
Get the number of DOFs sub-blocks. | |
virtual unsigned int | GetSubBlockOffset (int nblock) override |
Get the offset of the specified sub-block of DOFs in global vector. | |
virtual unsigned int | GetSubBlockSize (int nblock) override |
Get the size of the specified sub-block of DOFs in global vector. | |
virtual bool | IsSubBlockActive (int nblock) const override |
Check if the specified sub-block of DOFs is active. | |
virtual void | LoadableGetVariables (std::vector< ChVariables * > &mvars) override |
Get the pointers to the contained ChVariables, appending to the mvars vector. | |
virtual void | ComputeNF (const double U, const double V, const double W, ChVectorDynamic<> &Qi, double &detJ, const ChVectorDynamic<> &F, ChVectorDynamic<> *state_x, ChVectorDynamic<> *state_w) override |
Evaluate Q=N'*F , for Q generalized lagrangian load, where N is some type of matrix evaluated at point P(U,V,W) assumed in absolute coordinates, and F is a load assumed in absolute coordinates. More... | |
virtual double | GetDensity () override |
This is not needed because not used in quadrature. | |
Public Member Functions inherited from chrono::ChNodeBase | |
ChNodeBase (const ChNodeBase &other) | |
ChNodeBase & | operator= (const ChNodeBase &other) |
virtual int | Get_ndof_w () const |
Get the number of degrees of freedom, derivative This might be different from ndof if quaternions are used for rotations, as derivative might be angular velocity. | |
unsigned int | NodeGetOffset_x () |
Get offset in the state vector (position part) | |
unsigned int | NodeGetOffset_w () |
Get offset in the state vector (speed part) | |
void | NodeSetOffset_x (const unsigned int moff) |
Set offset in the state vector (position part) | |
void | NodeSetOffset_w (const unsigned int moff) |
Set offset in the state vector (speed part) | |
virtual void | NodeIntStateGather (const unsigned int off_x, ChState &x, const unsigned int off_v, ChStateDelta &v, double &T) |
virtual void | NodeIntStateScatter (const unsigned int off_x, const ChState &x, const unsigned int off_v, const ChStateDelta &v, const double T) |
virtual void | NodeIntStateGatherAcceleration (const unsigned int off_a, ChStateDelta &a) |
virtual void | NodeIntStateScatterAcceleration (const unsigned int off_a, const ChStateDelta &a) |
virtual void | NodeIntStateIncrement (const unsigned int off_x, ChState &x_new, const ChState &x, const unsigned int off_v, const ChStateDelta &Dv) |
virtual void | NodeIntLoadResidual_F (const unsigned int off, ChVectorDynamic<> &R, const double c) |
virtual void | NodeIntLoadResidual_Mv (const unsigned int off, ChVectorDynamic<> &R, const ChVectorDynamic<> &w, const double c) |
virtual void | NodeIntToDescriptor (const unsigned int off_v, const ChStateDelta &v, const ChVectorDynamic<> &R) |
virtual void | NodeIntFromDescriptor (const unsigned int off_v, ChStateDelta &v) |
virtual void | InjectVariables (ChSystemDescriptor &mdescriptor) |
Tell to a system descriptor that there are variables of type ChVariables in this object (for further passing it to a solver) | |
virtual void | VariablesFbReset () |
Sets the 'fb' part (the known term) of the encapsulated ChVariables to zero. | |
virtual void | VariablesFbLoadForces (double factor=1) |
Adds the current forces (applied to node) into the encapsulated ChVariables, in the 'fb' part: qf+=forces*factor. | |
virtual void | VariablesQbLoadSpeed () |
Initialize the 'qb' part of the ChVariables with the current value of speeds. | |
virtual void | VariablesFbIncrementMq () |
Adds M*q (masses multiplied current 'qb') to Fb, ex. More... | |
virtual void | VariablesQbSetSpeed (double step=0) |
Fetches the item speed (ex. More... | |
virtual void | VariablesQbIncrementPosition (double step) |
Increment node positions by the 'qb' part of the ChVariables, multiplied by a 'step' factor. More... | |
Public Member Functions inherited from chrono::ChLoadableUVW | |
virtual bool | IsTetrahedronIntegrationNeeded () |
If true, use quadrature over u,v,w in [0..1] range as tetrahedron volumetric coords (with z=1-u-v-w) otherwise use default quadrature over u,v,w in [-1..+1] as box isoparametric coords. | |
virtual bool | IsTrianglePrismIntegrationNeeded () |
If true, use quadrature over u,v in [0..1] range as triangle natural coords (with z=1-u-v), and use linear quadrature over w in [-1..+1], otherwise use default quadrature over u,v,w in [-1..+1] as box isoparametric coords. | |
Public Attributes | |
ChMatterSPH * | container |
ChVariablesNode | variables |
collision::ChCollisionModel * | collision_model |
ChVector | UserForce |
double | volume |
double | density |
double | h_rad |
double | coll_rad |
double | pressure |
Public Attributes inherited from chrono::ChNodeXYZ | |
ChVector | pos |
ChVector | pos_dt |
ChVector | pos_dtdt |
Additional Inherited Members | |
Protected Attributes inherited from chrono::ChNodeBase | |
unsigned int | offset_x |
offset in vector of state (position part) | |
unsigned int | offset_w |
offset in vector of state (speed part) | |
Member Function Documentation
◆ ComputeJacobianForContactPart()
|
overridevirtual |
Compute the jacobian(s) part(s) for this contactable item.
For example, if the contactable is a ChBody, this should update the corresponding 1x6 jacobian.
◆ ContactableIncrementState()
|
inlineoverridevirtual |
Increment the provided state of this object by the given state-delta increment.
Compute: x_new = x + dw.
Implements chrono::ChContactable.
◆ ContactForceLoadQ()
|
inlineoverridevirtual |
Apply the given force at the given point and load the generalized force array.
The force and its application point are specified in the global frame. Each object must set the entries in Q corresponding to its variables, starting at the specified offset. If needed, the object states must be extracted from the provided state position.
Implements chrono::ChContactable.
◆ ContactForceLoadResidual_F()
|
overridevirtual |
Apply the force, expressed in absolute reference, applied in pos, to the coordinates of the variables.
Force for example could come from a penalty model.
Implements chrono::ChContactable.
◆ GetContactPointSpeed() [1/2]
|
inlineoverridevirtual |
Get the absolute speed of point abs_point if attached to the surface.
Easy in this case because there are no rotations..
Implements chrono::ChContactable.
◆ GetContactPointSpeed() [2/2]
|
inlineoverridevirtual |
Get the absolute speed of a local point attached to the contactable.
The given point is assumed to be expressed in the local frame of this object. This function must use the provided states.
Implements chrono::ChContactable.
◆ GetCsysForCollisionModel()
|
inlineoverridevirtual |
Return the coordinate system for the associated collision model.
ChCollisionModel might call this to get the position of the contact model (when rigid) and sync it.
Implements chrono::ChContactable.
The documentation for this class was generated from the following files:
- /builds/uwsbel/chrono/src/chrono/physics/ChMatterSPH.h
- /builds/uwsbel/chrono/src/chrono/physics/ChMatterSPH.cpp