chrono::fea::ChContinuumDruckerPrager Class Reference

Description

Class for the basic properties of elastoplastic materials of Drucker-Prager type, that are useful for simulating soils.

#include <ChContinuumMaterial.h>

Inheritance diagram for chrono::fea::ChContinuumDruckerPrager:
Collaboration diagram for chrono::fea::ChContinuumDruckerPrager:

Public Member Functions

 ChContinuumDruckerPrager (double young=10000000, double poisson=0.4, double density=1000, double elastic_yield=0.1, double alpha=0.5, double dilatancy=0)
 Create a continuum isotropic Drucker-Prager material.
 
 ChContinuumDruckerPrager (const ChContinuumDruckerPrager &other)
 
void SetElasticYield (double elastic_yield)
 Set the D-P yield modulus C, for Drucker-Prager yield. More...
 
double GetElasticYield () const
 Get the elastic yield modulus C.
 
void SetInternalFriction (double alpha)
 Set the internal friction coefficient A.
 
double GetInternalFriction () const
 Get the internal friction coefficient A.
 
void SetFromMohrCoulomb (double phi, double cohesion, bool inner_approx=true)
 Set the C and A parameters of the Drucker-Prager model starting from 'practical' values of inner friction angle phi and cohesion, as used in the faceted Mohr-Coulomb model. More...
 
virtual void SetPlasticFlowRate (double flow_rate) override
 Set the plastic flow rate multiplier. More...
 
virtual double GetPlasticFlowRate () const override
 Get the flow rate multiplier.
 
void SetDilatancy (double dilatancy)
 Set the internal dilatation coefficient. More...
 
double GetDilatancy () const
 Get the internal dilatation coefficient.
 
void SetHardeningLimit (double hl)
 Set the hardening limit (usually a bit larger than yield), or softening.
 
double GetHardeningLimit () const
 Get the hardening limit.
 
void SetHardeningSpeed (double hl)
 Set the hardening inverse speed coefficient for exponential hardening. More...
 
double GetHardeningSpeed () const
 Get the hardening speed.
 
virtual double ComputeYieldFunction (const ChStressTensor<> &stress) const override
 Return a scalar value that is 0 on the yield surface, <0 inside (elastic), >0 outside (incompatible->plastic flow).
 
virtual void ComputeReturnMapping (ChStrainTensor<> &plasticstrainflow, const ChStrainTensor<> &incrementstrain, const ChStrainTensor<> &lastelasticstrain, const ChStrainTensor<> &lastplasticstrain) const override
 Correct the strain-stress by enforcing that elastic stress must remain on the yield surface. More...
 
virtual void ComputePlasticStrainFlow (ChStrainTensor<> &plasticstrainflow, const ChStrainTensor<> &totstrain) const override
 Compute plastic strain flow direction from strain according to Drucker-Prager.
 
virtual void ArchiveOut (ChArchiveOut &archive_out) override
 
virtual void ArchiveIn (ChArchiveIn &archive_in) override
 
- Public Member Functions inherited from chrono::fea::ChContinuumElastoplastic
 ChContinuumElastoplastic (double young=10000000, double poisson=0.4, double density=1000)
 
- Public Member Functions inherited from chrono::fea::ChContinuumElastic
 ChContinuumElastic (double young=1e7, double poisson=0.4, double density=1000)
 
 ChContinuumElastic (const ChContinuumElastic &other)
 
void SetYoungModulus (double E)
 Set the Young elastic modulus, as the ratio of the uniaxial stress over the uniaxial strain, for hookean materials.
 
double GetYoungModulus () const
 Get the Young elastic modulus.
 
void SetPoissonRatio (double v)
 Set the Poisson ratio. More...
 
double GetPoissonRatio () const
 Get the Poisson ratio, as v=-transverse_strain/axial_strain.
 
void SetShearModulus (double G)
 Set the shear modulus G. More...
 
double GetShearModulus () const
 Get the shear modulus G.
 
double GetLameFirstParam () const
 Get Lame first parameter. More...
 
double GetBulkModulus () const
 Get bulk modulus (increase of pressure for decrease of volume).
 
double GetPWaveModulus () const
 Get P-wave modulus. More...
 
void ComputeStressStrainMatrix ()
 Computes elasticity matrix and stores the value in this->StressStrainMatrix. More...
 
ChMatrixDynamicGetStressStrainMatrix ()
 Get the Elasticity matrix.
 
void ComputeElasticStress (ChStressTensor<> &stress, const ChStrainTensor<> &strain) const
 Compute elastic stress from elastic strain. More...
 
void ComputeElasticStrain (ChStrainTensor<> &strain, const ChStressTensor<> &stress) const
 Compute elastic strain from elastic stress. More...
 
void SetRayleighDampingAlpha (double alpha)
 Set the Rayleigh mass-proportional damping factor alpha. More...
 
double GetRayleighDampingAlpha () const
 Set the Rayleigh mass-proportional damping factor alpha.
 
void SetRayleighDampingBeta (double beta)
 Set the Rayleigh stiffness-proportional damping factor beta. More...
 
double GetRayleighDampingBeta () const
 Set the Rayleigh stiffness-proportional damping factor beta.
 
- Public Member Functions inherited from chrono::fea::ChContinuumMaterial
 ChContinuumMaterial (double density=1000)
 
 ChContinuumMaterial (const ChContinuumMaterial &other)
 
void SetDensity (double density)
 Set the density of the material.
 
double GetDensity () const
 Get the density of the material.
 

Additional Inherited Members

- Protected Attributes inherited from chrono::fea::ChContinuumMaterial
double m_density
 

Member Function Documentation

◆ ComputeReturnMapping()

void chrono::fea::ChContinuumDruckerPrager::ComputeReturnMapping ( ChStrainTensor<> &  plasticstrainflow,
const ChStrainTensor<> &  incrementstrain,
const ChStrainTensor<> &  lastelasticstrain,
const ChStrainTensor<> &  lastplasticstrain 
) const
overridevirtual

Correct the strain-stress by enforcing that elastic stress must remain on the yield surface.

This computes a plastic flow to be added to plastic strain while integrating.

Implements chrono::fea::ChContinuumElastoplastic.

◆ SetDilatancy()

void chrono::fea::ChContinuumDruckerPrager::SetDilatancy ( double  dilatancy)
inline

Set the internal dilatation coefficient.

Usually, 0.. < internal friction.

◆ SetElasticYield()

void chrono::fea::ChContinuumDruckerPrager::SetElasticYield ( double  elastic_yield)
inline

Set the D-P yield modulus C, for Drucker-Prager yield.

This defines the transition elastic->plastic.

◆ SetFromMohrCoulomb()

void chrono::fea::ChContinuumDruckerPrager::SetFromMohrCoulomb ( double  phi,
double  cohesion,
bool  inner_approx = true 
)

Set the C and A parameters of the Drucker-Prager model starting from 'practical' values of inner friction angle phi and cohesion, as used in the faceted Mohr-Coulomb model.

Use the optional parameter inner_approx to set if the faceted Mohr-Coulomb must be approximated with D-P inscribed (default) or circumscribed.

◆ SetHardeningSpeed()

void chrono::fea::ChContinuumDruckerPrager::SetHardeningSpeed ( double  hl)
inline

Set the hardening inverse speed coefficient for exponential hardening.

The larger this value, the slower the hardening or softening process that will asymptotically make yield = hardening_limit.

◆ SetPlasticFlowRate()

virtual void chrono::fea::ChContinuumDruckerPrager::SetPlasticFlowRate ( double  flow_rate)
inlineoverridevirtual

Set the plastic flow rate multiplier.

The lower the value, the slower the plastic flow during dynamic simulations.

Implements chrono::fea::ChContinuumElastoplastic.


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