pub struct SoilModel {
pub cohesion: f64,
pub friction_angle: f64,
pub dilatancy_angle: f64,
pub young_modulus: f64,
pub poisson_ratio: f64,
}Expand description
Soil model using the Mohr-Coulomb yield criterion.
Models elastic-perfectly-plastic soil behavior with friction and cohesion.
Fields§
§cohesion: f64Cohesion c [Pa].
friction_angle: f64Internal friction angle φ [radians].
dilatancy_angle: f64Dilatancy angle ψ [radians].
young_modulus: f64Young’s modulus E [Pa].
poisson_ratio: f64Poisson’s ratio ν.
Implementations§
Source§impl SoilModel
impl SoilModel
Sourcepub fn new(
cohesion: f64,
friction_angle_deg: f64,
dilatancy_angle_deg: f64,
young_modulus: f64,
poisson_ratio: f64,
) -> Self
pub fn new( cohesion: f64, friction_angle_deg: f64, dilatancy_angle_deg: f64, young_modulus: f64, poisson_ratio: f64, ) -> Self
Create a new Mohr-Coulomb soil model.
Sourcepub fn medium_sand() -> Self
pub fn medium_sand() -> Self
Typical medium-density sand.
Sourcepub fn stiff_clay() -> Self
pub fn stiff_clay() -> Self
Typical stiff clay.
Sourcepub fn yield_function(&self, sigma1: f64, sigma3: f64) -> f64
pub fn yield_function(&self, sigma1: f64, sigma3: f64) -> f64
Mohr-Coulomb yield function F(σ1, σ3).
F = (σ1 - σ3) - 2ccos(φ) - (σ1 + σ3)*sin(φ) F < 0: elastic; F = 0: on yield surface.
Sourcepub fn is_yielding(&self, sigma1: f64, sigma3: f64) -> bool
pub fn is_yielding(&self, sigma1: f64, sigma3: f64) -> bool
Check if the stress state is yielding.
Sourcepub fn plastic_multiplier(&self, d_eps_p: f64) -> f64
pub fn plastic_multiplier(&self, d_eps_p: f64) -> f64
Plastic multiplier Δλ for a given incremental plastic strain magnitude.
Δλ = Δεp / (1 + sin(ψ))
Sourcepub fn critical_state_line_q(&self, p: f64) -> f64
pub fn critical_state_line_q(&self, p: f64) -> f64
Critical state line (CSL) deviator stress q as a function of mean stress p [Pa].
q = M_cs * p where M_cs = 6*sin(φ) / (3 - sin(φ)) for compression.
Sourcepub fn bulk_modulus(&self) -> f64
pub fn bulk_modulus(&self) -> f64
Bulk modulus K = E / (3*(1-2ν)) [Pa].
Sourcepub fn shear_modulus(&self) -> f64
pub fn shear_modulus(&self) -> f64
Shear modulus G = E / (2*(1+ν)) [Pa].