Description
Base class for assigning material properties (elasticity, viscosity etc) to a cluster of peridynamics nodes.
Do not inherit directly from this. Better inherit from ChMatterPeri, that provides some useful default functionality like activating/deactivating collision shapes.
#include <ChMatterPeridynamics.h>


Public Member Functions | |
virtual void | ComputeCollisionStateChanges ()=0 |
CONSTITUTIVE MODEL - INTERFACE TO IMPLEMENT: (optionally) Changes the collision model of nodes, from collision to no collision, etc., depending on the evolution of the system. More... | |
virtual void | ComputeForcesReset ()=0 |
CONSTITUTIVE MODEL - INTERFACE TO IMPLEMENT: (optionally) Base behaviour in ChMatterPeri: resets the ChNodePeri::F_peridyn vector of each ChNodePeri to zero. More... | |
virtual void | ComputeForces ()=0 |
CONSTITUTIVE MODEL - INTERFACE TO IMPLEMENT: IMPORTANT Add the forces caused by this material to the ChNodePeri::F vector of each ChNodePeri. More... | |
virtual void | SetupInitial () |
CONSTITUTIVE MODEL - INTERFACE TO IMPLEMENT: (optionally) This function is called where system construction is completed, at the beginning of the simulation. More... | |
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) |
virtual std::shared_ptr< ChNodePeri > | AddNode (std::shared_ptr< ChNodePeri > mnode)=0 |
Add a node that will be affected by this material. More... | |
virtual bool | RemoveNode (std::shared_ptr< ChNodePeri > mnode)=0 |
Override/inherit only if really needed. | |
virtual bool | AddProximity (ChNodePeri *nodeA, ChNodePeri *nodeB)=0 |
Override/inherit only if really needed. More... | |
ChPeridynamics * | GetContainer () const |
void | SetContainer (ChPeridynamics *mc) |
Protected Attributes | |
ChPeridynamics * | container = 0 |
Member Function Documentation
◆ AddNode()
|
pure virtual |
Add a node that will be affected by this material.
Note that the node must be added also to the ChPeridynamics that manages this material.
Implemented in chrono::peridynamics::ChMatterPeri< T_per_node, T_per_bond >, chrono::peridynamics::ChMatterPeri< ChMatterDataPerNodeLinearElastic, ChMatterDataPerBondLinearElastic >, chrono::peridynamics::ChMatterPeri<>, chrono::peridynamics::ChMatterPeri< ChMatterDataPerNode, ChMatterDataPerBondBreakable >, chrono::peridynamics::ChMatterPeri< ChMatterDataPerNode, ChMatterDataPerBondBB >, chrono::peridynamics::ChMatterPeri< ChMatterDataLiquid, ChMatterDataPerBond >, and chrono::peridynamics::ChMatterPeri< ChMatterDataPerNode, ChMatterDataPerBondBBimplicit >.
◆ AddProximity()
|
pure virtual |
Override/inherit only if really needed.
There is a default implementation in ChMatterPeri that takes care of allocating a ChMatterDataPerBond in the map.
Implemented in chrono::peridynamics::ChMatterPeri< T_per_node, T_per_bond >, chrono::peridynamics::ChMatterPeri< ChMatterDataPerNodeLinearElastic, ChMatterDataPerBondLinearElastic >, chrono::peridynamics::ChMatterPeri<>, chrono::peridynamics::ChMatterPeri< ChMatterDataPerNode, ChMatterDataPerBondBreakable >, chrono::peridynamics::ChMatterPeri< ChMatterDataPerNode, ChMatterDataPerBondBB >, chrono::peridynamics::ChMatterPeri< ChMatterDataLiquid, ChMatterDataPerBond >, and chrono::peridynamics::ChMatterPeri< ChMatterDataPerNode, ChMatterDataPerBondBBimplicit >.
◆ ComputeCollisionStateChanges()
|
pure virtual |
CONSTITUTIVE MODEL - INTERFACE TO IMPLEMENT: (optionally)
Changes the collision model of nodes, from collision to no collision, etc., depending on the evolution of the system.
It is run right before the collision detection compute proximyty bonds & contacts. This may add/remove collision models, or may change them. The base behavior in ChMatterPeri is: turn on collision model if mnode->IsRequiringCollision()
Implemented in chrono::peridynamics::ChMatterPeri< T_per_node, T_per_bond >, chrono::peridynamics::ChMatterPeri< ChMatterDataPerNodeLinearElastic, ChMatterDataPerBondLinearElastic >, chrono::peridynamics::ChMatterPeri<>, chrono::peridynamics::ChMatterPeri< ChMatterDataPerNode, ChMatterDataPerBondBreakable >, chrono::peridynamics::ChMatterPeri< ChMatterDataPerNode, ChMatterDataPerBondBB >, chrono::peridynamics::ChMatterPeri< ChMatterDataLiquid, ChMatterDataPerBond >, and chrono::peridynamics::ChMatterPeri< ChMatterDataPerNode, ChMatterDataPerBondBBimplicit >.
◆ ComputeForces()
|
pure virtual |
CONSTITUTIVE MODEL - INTERFACE TO IMPLEMENT: IMPORTANT Add the forces caused by this material to the ChNodePeri::F vector of each ChNodePeri.
Child class can use the containers this->nodes and this->bonds to compute F, assuming bonds have been updated with latest collision detection.
Implemented in chrono::peridynamics::ChMatterPeriLinearElastic, chrono::peridynamics::ChMatterPeriBBimplicit, chrono::peridynamics::ChMatterPeriLiquid, chrono::peridynamics::ChMatterPeriBB, and chrono::peridynamics::ChMatterPeriSprings.
◆ ComputeForcesReset()
|
pure virtual |
CONSTITUTIVE MODEL - INTERFACE TO IMPLEMENT: (optionally) Base behaviour in ChMatterPeri: resets the ChNodePeri::F_peridyn vector of each ChNodePeri to zero.
Implemented in chrono::peridynamics::ChMatterPeri< T_per_node, T_per_bond >, chrono::peridynamics::ChMatterPeri< ChMatterDataPerNodeLinearElastic, ChMatterDataPerBondLinearElastic >, chrono::peridynamics::ChMatterPeri<>, chrono::peridynamics::ChMatterPeri< ChMatterDataPerNode, ChMatterDataPerBondBreakable >, chrono::peridynamics::ChMatterPeri< ChMatterDataPerNode, ChMatterDataPerBondBB >, chrono::peridynamics::ChMatterPeri< ChMatterDataLiquid, ChMatterDataPerBond >, and chrono::peridynamics::ChMatterPeri< ChMatterDataPerNode, ChMatterDataPerBondBBimplicit >.
◆ IntLoadConstraint_C()
|
inlinevirtual |
Takes the term C, scale and adds to Qc at given offset: Qc += c*C.
- Parameters
-
off offset in Qc residual Qc result: the Qc residual, Qc += c*C c a scaling factor do_clamp apply clamping to c*C? recovery_clamp value for min/max clamping of c*C
Reimplemented in chrono::peridynamics::ChMatterPeriBBimplicit.
◆ IntLoadResidual_CqL()
|
inlinevirtual |
- Parameters
-
off_L offset in L multipliers R result: the R residual, R += c*Cq'*L L the L vector c a scaling factor
Reimplemented in chrono::peridynamics::ChMatterPeriBBimplicit.
◆ Setup()
|
inlinevirtual |
CONSTITUTIVE MODEL - INTERFACE TO IMPLEMENT: (optionally) This function is called at each time step.
Maybe your constitutive law has to initialize some state data, if so you can implement this function, otherwise leave as empty.
Reimplemented in chrono::peridynamics::ChMatterPeriBBimplicit.
◆ SetupInitial()
|
inlinevirtual |
CONSTITUTIVE MODEL - INTERFACE TO IMPLEMENT: (optionally) This function is called where system construction is completed, at the beginning of the simulation.
Maybe your constitutive law has to initialize some state data, if so you can implement this function, otherwise leave as empty.
Reimplemented in chrono::peridynamics::ChMatterPeriBB, and chrono::peridynamics::ChMatterPeriLinearElastic.
The documentation for this class was generated from the following file:
- /builds/uwsbel/chrono/src/chrono_peridynamics/ChMatterPeridynamics.h