Snow-specific elastoplastic constitutive model. More...
#include <Core/Particle/MPM/SnowConstitutiveModel.hpp>
Public Types | |
| using | MatrixType = Matrix< double, N, N > |
| using | State = SnowDeformationState< N > |
Public Member Functions | |
| SnowConstitutiveModel (double youngsModulus=1.4e5, double poissonRatio=0.2, double criticalCompression=2.5e-2, double criticalStretch=7.5e-3, double hardeningCoefficient=10.0) | |
| Constructs a snow constitutive model. | |
| State | Update (const MatrixType &deformationGradientIncrement, const State &state) const |
| Projects a deformation increment into elastic and plastic parts. | |
| MatrixType | ComputeKirchhoffStress (const State &state) const |
| Computes the fixed-corotated Kirchhoff stress for the state. | |
| MatrixType | ComputeFirstPiolaStressDifferential (const State &state, const MatrixType &differential) const |
| Computes the first Piola stress differential. | |
| double | ComputeWaveSpeed (const State &state, double referenceDensity) const |
| Estimates the fastest elastic wave speed for the state. | |
Detailed Description
class CubbyFlow::SnowConstitutiveModel< N >
Snow-specific elastoplastic constitutive model.
Implements the fixed-corotated hyperelastic snow model from "A Material Point Method for Snow Simulation" by A. Stomakhin et al. (2013) for MPM simulations.
Member Typedef Documentation
◆ MatrixType
◆ State
| using CubbyFlow::SnowConstitutiveModel< N >::State = SnowDeformationState<N> |
Constructor & Destructor Documentation
◆ SnowConstitutiveModel()
|
explicit |
Constructs a snow constitutive model.
- Parameters
-
[in] youngsModulus Initial Young's modulus; must be positive and finite. [in] poissonRatio Poisson's ratio in (-1, 0.5).[in] criticalCompression Principal-stretch compression offset in [0, 1).[in] criticalStretch Non-negative principal-stretch extension offset. [in] hardeningCoefficient Non-negative hardening coefficient.
Member Function Documentation
◆ ComputeFirstPiolaStressDifferential()
| SnowConstitutiveModel< N >::MatrixType CubbyFlow::SnowConstitutiveModel< N >::ComputeFirstPiolaStressDifferential | ( | const State & | state, |
| const MatrixType & | differential | ||
| ) | const |
Computes the first Piola stress differential.
Evaluates (d^2 Psi / d F_E d F_E) : differential while holding the plastic deformation fixed.
- Parameters
-
[in] state Current elastic and plastic deformation state. [in] differential Elastic deformation differential.
- Returns
- First Piola stress differential.
- Exceptions
-
std::invalid_argument If the state, differential, or computed stress differential is invalid or non-finite.
◆ ComputeKirchhoffStress()
| SnowConstitutiveModel< N >::MatrixType CubbyFlow::SnowConstitutiveModel< N >::ComputeKirchhoffStress | ( | const State & | state | ) | const |
Computes the fixed-corotated Kirchhoff stress for the state.
Applies the det(F_P)-dependent hardening/softening factor to the elastic response.
- Parameters
-
[in] state Current deformation state.
- Returns
- Fixed-corotated Kirchhoff stress.
◆ ComputeWaveSpeed()
| double CubbyFlow::SnowConstitutiveModel< N >::ComputeWaveSpeed | ( | const State & | state, |
| double | referenceDensity | ||
| ) | const |
Estimates the fastest elastic wave speed for the state.
Evaluates the principal-basis acoustic-tensor candidates for the fixed-corotated snow energy.
- Parameters
-
[in] state Current deformation state. [in] referenceDensity Positive material density at rest.
- Returns
- Estimated elastic wave speed.
◆ Update()
| SnowConstitutiveModel< N >::State CubbyFlow::SnowConstitutiveModel< N >::Update | ( | const MatrixType & | deformationGradientIncrement, |
| const State & | state | ||
| ) | const |
Projects a deformation increment into elastic and plastic parts.
Forms F_E_trial = D F_E, clamps its principal stretches, and transfers the remainder to F_P while preserving the trial total deformation.
- Parameters
-
[in] deformationGradientIncrement Multiplicative increment Dapplied on the left.[in] state Current deformation state.
- Returns
- Updated deformation state.
The documentation for this class was generated from the following files:
- Core/Particle/MPM/SnowConstitutiveModel.hpp
- Core/Particle/MPM/SnowConstitutiveModel-Impl.hpp
1.9.8