chrono::peridynamics::ChMatterPeriLinearElastic Class Reference
Description
Simple state-based peridynamic material whose elasticity depends on two parameters.
Example: a 3D linear elastic Hookean material, that is:
- K, the bulk modulus.
- G, the shear modulus. This comes at a cost of slower performance compared to the ChMatterPeriBB bond-based elasticity model, that has Poisson fixed to 1/4. For very high stiffness, time integration might diverge because it does not introduce any tangent stiffness matrix (even if using implicit integrators like HHT, this will behave like in explicit anyway); use ChMatterPeriBBimplicit in these cases.
#include <ChMatterPeriLinearElastic.h>
Inheritance diagram for chrono::peridynamics::ChMatterPeriLinearElastic:

Collaboration diagram for chrono::peridynamics::ChMatterPeriLinearElastic:

Public Member Functions | |
void | SetYoungModulusShearModulus (double mE, double mG) |
void | SetYoungModulusPoisson (double mE, double mu) |
double | InfluenceFunction (double zeta, double horizon) |
virtual void | SetupInitial () override |
Initialize material with weighted volume. | |
virtual void | ComputeForces () override |
Adds the peridynamics force to each node, as a summation of all the effects of neighbouring nodes. More... | |
![]() | |
ChMatterPeri () | |
Build a cluster of nodes for peridynamics. More... | |
ChMatterPeri (const ChMatterPeri &other) | |
unsigned int | GetNnodes () const |
Get the number of nodes. | |
unsigned int | GetNbonds () const |
Get the number of bonds. | |
const std::unordered_map< ChNodePeri *, ChMatterDataPerNodeLinearElastic > & | GetMapOfNodes () |
Access the node container. | |
std::unordered_map< std::pair< ChNodePeri *, ChNodePeri * >, ChMatterDataPerBondLinearElastic > & | GetMapOfBonds () |
Access the bonds container. | |
virtual std::shared_ptr< ChNodePeri > | AddNode (std::shared_ptr< ChNodePeri > node) override |
Add a node to the particle cluster. | |
virtual bool | RemoveNode (std::shared_ptr< ChNodePeri > node) override |
Remove a node from the particle cluster. | |
virtual bool | AddProximity (ChNodePeri *nodeA, ChNodePeri *nodeB) override |
Add a proximity: this will be called thousand of times by the broadphase collision detection. More... | |
virtual void | ComputeForcesReset () override |
CONSTITUTIVE MODEL - INTERFACE TO IMPLEMENT: (optionally) Base behaviour: More... | |
virtual void | ComputeCollisionStateChanges () override |
CONSTITUTIVE MODEL - INTERFACE TO IMPLEMENT: (optionally) Changes the collision model of nodes, from collision to no collision, etc., ex when an interface is generated, depending on the evolution of the system. More... | |
void | SetContactMaterial (const std::shared_ptr< ChContactMaterial > &mnewsurf) |
Set the material surface for 'boundary contact'. | |
std::shared_ptr< ChContactMaterial > & | GetContactMaterial () |
Set the material surface for 'boundary contact'. | |
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 void | Setup () |
CONSTITUTIVE MODEL - INTERFACE TO IMPLEMENT: (optionally) This function is called at each time step. More... | |
virtual unsigned int | GetNumConstraints () |
Get the number of scalar constraints (maybe used for implicit materials) | |
virtual void | IntLoadResidual_CqL (const unsigned int off_L, ChVectorDynamic<> &R, const ChVectorDynamic<> &L, const double c) |
virtual void | IntLoadConstraint_C (const unsigned int off, ChVectorDynamic<> &Qc, const double c, bool do_clamp, double recovery_clamp) |
Takes the term C, scale and adds to Qc at given offset: Qc += c*C. More... | |
virtual void | InjectConstraints (ChSystemDescriptor &descriptor) |
Register with the given system descriptor any ChConstraint objects associated with this item. | |
virtual void | LoadConstraintJacobians () |
Compute and load current Jacobians in encapsulated ChConstraint objects. | |
virtual void | IntToDescriptor (const unsigned int off_v, const ChStateDelta &v, const ChVectorDynamic<> &R, const unsigned int off_L, const ChVectorDynamic<> &L, const ChVectorDynamic<> &Qc) |
virtual void | IntFromDescriptor (const unsigned int off_v, ChStateDelta &v, const unsigned int off_L, ChVectorDynamic<> &L) |
ChPeridynamics * | GetContainer () const |
void | SetContainer (ChPeridynamics *mc) |
Public Attributes | |
double | k_bulk = 100 |
bulk modulus, unit Pa, i.e. N/m^2 | |
double | G = 100 |
shear modulus | |
double | r_bulk = 0 |
bulk damping, unit Pa*s/m, i.e. Ns/m^3 NOT USED | |
double | max_stretch = 1e30 |
maximum stretch - after this, bonds will break. Default no break. | |
Additional Inherited Members | |
![]() | |
std::unordered_map< ChNodePeri *, ChMatterDataPerNodeLinearElastic > | nodes |
nodes | |
std::unordered_map< std::pair< ChNodePeri *, ChNodePeri * >, ChMatterDataPerBondLinearElastic > | bonds |
bonds | |
std::shared_ptr< ChContactMaterial > | matsurface |
data for surface contact and impact | |
![]() | |
ChPeridynamics * | container = nullptr |
Member Function Documentation
◆ ComputeForces()
|
overridevirtual |
Adds the peridynamics force to each node, as a summation of all the effects of neighbouring nodes.
Formulas based on Silling work
Implements chrono::peridynamics::ChMatterPeriBase.
The documentation for this class was generated from the following files:
- /builds/uwsbel/chrono/src/chrono_peridynamics/ChMatterPeriLinearElastic.h
- /builds/uwsbel/chrono/src/chrono_peridynamics/ChMatterPeriLinearElastic.cpp