chrono::peridynamics::ChNodePeri Class Reference

Description

Class for a single node in the Peridynamics cluster.

#include <ChNodePeri.h>

Inheritance diagram for chrono::peridynamics::ChNodePeri:
Collaboration diagram for chrono::peridynamics::ChNodePeri:

Public Member Functions

 ChNodePeri (const ChNodePeri &other)
 
double GetHorizonRadius ()
 Get the horizon radius (max. radius while checking surrounding particles).
 
void SetHorizonRadius (double mr)
 Set the horizon radius (max. radius while checking surrounding particles).
 
double GetCollisionRadius ()
 Get collision radius (for colliding with bodies, boundaries, etc.).
 
void SetCollisionRadius (double mr)
 Set collision radius (for colliding with bodies, boundaries, etc.)
 
double GetVolumeSize ()
 Get size of volume cell, assumed approx. as a cube. Used for volume correction with fading on horizon, at quadrature.
 
void SetVolumeSize (double mvol_size)
 Set size of volume cell, assumed approx. as a cube. Used for volume correction with fading on horizon, at quadrature.
 
virtual ChContactable::eChContactableType GetContactableType () const override
 Access the variables of the node.
 
virtual ChVariablesGetVariables1 () override
 Access variables.
 
virtual bool IsContactActive () override
 Tell if the object must be considered in collision detection.
 
virtual int GetContactableNumCoordsPosLevel () override
 Get the number of DOFs affected by this object (position part).
 
virtual int GetContactableNumCoordsVelLevel () override
 Get the number of DOFs affected by this object (speed part).
 
virtual void ContactableGetStateBlockPosLevel (ChState &x) override
 Get all the DOFs packed in a single vector (position part).
 
virtual void ContactableGetStateBlockVelLevel (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 ChVector3d GetContactPoint (const ChVector3d &loc_point, const ChState &state_x) override
 Express the local point in absolute frame, for the given state position.
 
virtual ChVector3d GetContactPointSpeed (const ChVector3d &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 ChVector3d GetContactPointSpeed (const ChVector3d &abs_point) override
 Get the absolute speed of point abs_point if attached to the surface. More...
 
virtual ChFrame GetCollisionModelFrame () override
 Return the coordinate system for the associated collision model. More...
 
virtual void ContactForceLoadResidual_F (const ChVector3d &F, const ChVector3d &T, const ChVector3d &abs_point, ChVectorDynamic<> &R) override
 Apply the force, expressed in absolute reference, applied in pos, to the coordinates of the variables. More...
 
virtual void ContactComputeQ (const ChVector3d &F, const ChVector3d &T, const ChVector3d &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 ChVector3d &abs_point, ChMatrix33<> &contact_plane, ChContactable_1vars::type_constraint_tuple &jacobian_tuple_N, ChContactable_1vars::type_constraint_tuple &jacobian_tuple_U, ChContactable_1vars::type_constraint_tuple &jacobian_tuple_V, bool second) override
 Compute the jacobian(s) part(s) for this contactable item. More...
 
virtual double GetContactableMass () override
 Used by some SMC code.
 
virtual ChPhysicsItemGetPhysicsItem () override
 This is only for backward compatibility. OBSOLETE.
 
bool IsRequiringCollision ()
 
- Public Member Functions inherited from chrono::fea::ChNodeFEAxyz
 ChNodeFEAxyz (ChVector3d initial_pos=VNULL)
 
 ChNodeFEAxyz (const ChNodeFEAxyz &other)
 
ChNodeFEAxyzoperator= (const ChNodeFEAxyz &other)
 
virtual ChVariablesNodeVariables () override
 
virtual void Relax () override
 Set the rest position as the actual position.
 
virtual void ForceToRest () override
 Reset to no speed and acceleration.
 
virtual void SetFixed (bool fixed) override
 Fix/release this node. More...
 
virtual bool IsFixed () const override
 Return true if the node is fixed (i.e., its state variables are not changed by the solver).
 
virtual double GetMass () const override
 Get mass of the node.
 
virtual void SetMass (double m) override
 Set mass of the node.
 
virtual void SetX0 (const ChVector3d &x)
 Set the initial (reference) position.
 
virtual const ChVector3dGetX0 () const
 Get the initial (reference) position.
 
virtual void SetForce (const ChVector3d &frc)
 Set the 3d applied force, in absolute reference.
 
virtual const ChVector3dGetForce () const
 Get the 3d applied force, in absolute reference.
 
virtual unsigned int GetNumCoordsPosLevel () const override
 Get the number of degrees of freedom.
 
virtual void ArchiveOut (ChArchiveOut &archive) override
 Method to allow serialization of transient data to archives.
 
virtual void ArchiveIn (ChArchiveIn &archive) override
 Method to allow de-serialization of transient data from archives.
 
virtual void NodeIntStateGather (const unsigned int off_x, ChState &x, const unsigned int off_v, ChStateDelta &v, double &T) override
 
virtual void NodeIntStateScatter (const unsigned int off_x, const ChState &x, const unsigned int off_v, const ChStateDelta &v, const double T) override
 
virtual void NodeIntStateGatherAcceleration (const unsigned int off_a, ChStateDelta &a) override
 
virtual void NodeIntStateScatterAcceleration (const unsigned int off_a, const ChStateDelta &a) override
 
virtual void NodeIntStateIncrement (const unsigned int off_x, ChState &x_new, const ChState &x, const unsigned int off_v, const ChStateDelta &Dv) override
 
virtual void NodeIntStateGetIncrement (const unsigned int off_x, const ChState &x_new, const ChState &x, const unsigned int off_v, ChStateDelta &Dv) override
 
virtual void NodeIntLoadResidual_F (const unsigned int off, ChVectorDynamic<> &R, const double c) override
 
virtual void NodeIntLoadResidual_Mv (const unsigned int off, ChVectorDynamic<> &R, const ChVectorDynamic<> &w, const double c) override
 
virtual void NodeIntLoadLumpedMass_Md (const unsigned int off, ChVectorDynamic<> &Md, double &error, const double c) override
 
virtual void NodeIntToDescriptor (const unsigned int off_v, const ChStateDelta &v, const ChVectorDynamic<> &R) override
 
virtual void NodeIntFromDescriptor (const unsigned int off_v, ChStateDelta &v) override
 
virtual void InjectVariables (ChSystemDescriptor &descriptor) override
 Register with the given system descriptor any ChVariable objects associated with this item.
 
virtual void VariablesFbReset () override
 Set the 'fb' part (the known term) of the encapsulated ChVariables to zero.
 
virtual void VariablesFbLoadForces (double factor=1) override
 Add the current forces (applied to node) into the encapsulated ChVariables. More...
 
virtual void VariablesQbLoadSpeed () override
 Initialize the 'qb' part of the ChVariables with the current value of speeds.
 
virtual void VariablesQbSetSpeed (double step=0) override
 Fetch the item speed (ex. More...
 
virtual void VariablesFbIncrementMq () override
 Add M*q (masses multiplied current 'qb') to Fb, ex. More...
 
virtual void VariablesQbIncrementPosition (double step) override
 Increment node positions by the 'qb' part of the ChVariables, multiplied by a 'step' factor. More...
 
- Public Member Functions inherited from chrono::fea::ChNodeFEAbase
virtual void SetIndex (unsigned int mindex)
 Sets the global index of the node.
 
virtual unsigned int GetIndex ()
 Gets the global index of the node.
 
virtual void SetupInitial (ChSystem *system)
 Initial setup.
 
- Public Member Functions inherited from chrono::ChNodeBase
 ChNodeBase (const ChNodeBase &other)
 
ChNodeBaseoperator= (const ChNodeBase &other)
 
virtual unsigned int GetNumCoordsVelLevel () const
 Get the number of degrees of freedom, derivative. More...
 
virtual unsigned int GetNumCoordsPosLevelActive () const
 Get the actual number of active degrees of freedom. More...
 
virtual unsigned int GetNumCoordsVelLevelActive () const
 Get the actual number of active degrees of freedom, derivative. More...
 
virtual bool IsAllCoordsActive () const
 Return true if all node DOFs are active (no node variable is fixed).
 
unsigned int NodeGetOffsetPosLevel ()
 Get offset in the state vector (position part).
 
unsigned int NodeGetOffsetVelLevel ()
 Get offset in the state vector (speed part).
 
void NodeSetOffsetPosLevel (const unsigned int moff)
 Set offset in the state vector (position part).
 
void NodeSetOffsetVelLevel (const unsigned int moff)
 Set offset in the state vector (speed part).
 
- Public Member Functions inherited from chrono::ChNodeXYZ
 ChNodeXYZ (const ChVector3d &initial_pos)
 
 ChNodeXYZ (const ChNodeXYZ &other)
 
ChNodeXYZoperator= (const ChNodeXYZ &other)
 
const ChVector3dGetPos () const
 
void SetPos (const ChVector3d &mpos)
 
const ChVector3dGetPosDt () const
 
void SetPosDt (const ChVector3d &mposdt)
 
const ChVector3dGetPosDt2 () const
 
void SetPosDt2 (const ChVector3d &mposdtdt)
 
virtual unsigned int GetLoadableNumCoordsPosLevel () override
 Gets the number of DOFs affected by this element (position part)
 
virtual unsigned int GetLoadableNumCoordsVelLevel () override
 Gets the number of DOFs affected by this element (speed part)
 
virtual void LoadableGetStateBlockPosLevel (int block_offset, ChState &mD) override
 Gets all the DOFs packed in a single vector (position part)
 
virtual void LoadableGetStateBlockVelLevel (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 unsigned int GetNumFieldCoords () override
 Number of coordinates in the interpolated field, ex=3 for a tetrahedron finite element or a cable, etc. More...
 
virtual unsigned int GetNumSubBlocks () override
 Get the number of DOFs sub-blocks.
 
virtual unsigned int GetSubBlockOffset (unsigned int nblock) override
 Get the offset of the specified sub-block of DOFs in global vector.
 
virtual unsigned int GetSubBlockSize (unsigned int nblock) override
 Get the size of the specified sub-block of DOFs in global vector.
 
virtual bool IsSubBlockActive (unsigned 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::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

bool is_requiring_bonds = true
 
bool is_boundary = false
 
bool is_fluid = true
 
bool is_colliding = false
 
ChVector3d F_peridyn
 
double volume
 
double h_rad
 
double coll_rad
 
double vol_size
 
double vol_accumulator
 
- Public Attributes inherited from chrono::fea::ChNodeFEAbase
double m_TotalMass
 Nodal mass obtained from element mass matrix.
 
- Public Attributes inherited from chrono::ChNodeXYZ
ChVector3d pos
 
ChVector3d pos_dt
 
ChVector3d pos_dtdt
 

Additional Inherited Members

- Public Types inherited from chrono::ChVariableTupleCarrier_1vars< 3 >
typedef ChConstraintTuple_1vars< ChVariableTupleCarrier_1vars< N1 > > type_constraint_tuple
 
- Static Public Attributes inherited from chrono::ChVariableTupleCarrier_1vars< 3 >
static const int nvars1
 
- Protected Attributes inherited from chrono::fea::ChNodeFEAxyz
ChVariablesNode variables
 3D node variables, with x,y,z
 
ChVector3d X0
 reference position
 
ChVector3d Force
 applied force
 
- Protected Attributes inherited from chrono::fea::ChNodeFEAbase
unsigned int g_index
 global node index
 
- 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()

void chrono::ChNodePeri::ComputeJacobianForContactPart ( const ChVector3d abs_point,
ChMatrix33<> &  contact_plane,
ChContactable_1vars::type_constraint_tuple &  jacobian_tuple_N,
ChContactable_1vars::type_constraint_tuple &  jacobian_tuple_U,
ChContactable_1vars::type_constraint_tuple &  jacobian_tuple_V,
bool  second 
)
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()

virtual void chrono::peridynamics::ChNodePeri::ContactableIncrementState ( const ChState x,
const ChStateDelta dw,
ChState x_new 
)
inlineoverridevirtual

Increment the provided state of this object by the given state-delta increment.

Compute: x_new = x + dw.

Implements chrono::ChContactable.

◆ ContactComputeQ()

virtual void chrono::peridynamics::ChNodePeri::ContactComputeQ ( const ChVector3d F,
const ChVector3d T,
const ChVector3d point,
const ChState state_x,
ChVectorDynamic<> &  Q,
int  offset 
)
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 gloabl 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.

Parameters
Fforce
Ttorque

Implements chrono::ChContactable.

◆ ContactForceLoadResidual_F()

void chrono::ChNodePeri::ContactForceLoadResidual_F ( const ChVector3d F,
const ChVector3d T,
const ChVector3d abs_point,
ChVectorDynamic<> &  R 
)
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. The force F and its application point are specified in the absolute reference frame.

Parameters
Fforce
Ttorque

Implements chrono::ChContactable.

◆ GetCollisionModelFrame()

virtual ChFrame chrono::peridynamics::ChNodePeri::GetCollisionModelFrame ( )
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.

◆ GetContactPointSpeed() [1/2]

virtual ChVector3d chrono::peridynamics::ChNodePeri::GetContactPointSpeed ( const ChVector3d abs_point)
inlineoverridevirtual

Get the absolute speed of point abs_point if attached to the surface.

Easy in this case because there are no roations..

Implements chrono::ChContactable.

◆ GetContactPointSpeed() [2/2]

virtual ChVector3d chrono::peridynamics::ChNodePeri::GetContactPointSpeed ( const ChVector3d loc_point,
const ChState state_x,
const ChStateDelta state_w 
)
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.


The documentation for this class was generated from the following files:
  • /builds/uwsbel/chrono/src/chrono_peridynamics/ChNodePeri.h
  • /builds/uwsbel/chrono/src/chrono_peridynamics/ChNodePeri.cpp