Loading...
Searching...
No Matches
CubbyFlow::SnowConstitutiveModel< N > Class Template Referencefinal

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

template<size_t N>
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

template<size_t N>
using CubbyFlow::SnowConstitutiveModel< N >::MatrixType = Matrix<double, N, N>

◆ State

Constructor & Destructor Documentation

◆ SnowConstitutiveModel()

template<size_t N>
CubbyFlow::SnowConstitutiveModel< N >::SnowConstitutiveModel ( double  youngsModulus = 1.4e5,
double  poissonRatio = 0.2,
double  criticalCompression = 2.5e-2,
double  criticalStretch = 7.5e-3,
double  hardeningCoefficient = 10.0 
)
explicit

Constructs a snow constitutive model.

Parameters
[in]youngsModulusInitial Young's modulus; must be positive and finite.
[in]poissonRatioPoisson's ratio in (-1, 0.5).
[in]criticalCompressionPrincipal-stretch compression offset in [0, 1).
[in]criticalStretchNon-negative principal-stretch extension offset.
[in]hardeningCoefficientNon-negative hardening coefficient.

Member Function Documentation

◆ ComputeFirstPiolaStressDifferential()

template<size_t N>
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]stateCurrent elastic and plastic deformation state.
[in]differentialElastic deformation differential.
Returns
First Piola stress differential.
Exceptions
std::invalid_argumentIf the state, differential, or computed stress differential is invalid or non-finite.

◆ ComputeKirchhoffStress()

template<size_t N>
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]stateCurrent deformation state.
Returns
Fixed-corotated Kirchhoff stress.

◆ ComputeWaveSpeed()

template<size_t N>
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]stateCurrent deformation state.
[in]referenceDensityPositive material density at rest.
Returns
Estimated elastic wave speed.

◆ Update()

template<size_t N>
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]deformationGradientIncrementMultiplicative increment D applied on the left.
[in]stateCurrent deformation state.
Returns
Updated deformation state.

The documentation for this class was generated from the following files: