pub struct GursonDamage {
pub f: f64,
pub f0: f64,
pub fc: f64,
pub f_f: f64,
pub q1: f64,
pub q2: f64,
pub q3: f64,
pub a_n: f64,
pub eps_n: f64,
pub s_n: f64,
}Expand description
Gurson-Tvergaard-Needleman (GTN) porous plasticity model.
Yield function: Φ = (σ_eq/σ_y)² + 2q₁f* cosh(3q₂σ_H/(2σ_y)) - 1 - (q₁f*)² = 0
where f* is the effective void volume fraction.
Fields§
§f: f64Current void volume fraction f ∈ [0, 1].
f0: f64Initial void volume fraction f_0.
fc: f64Critical void volume fraction f_c for coalescence.
f_f: f64Failure void volume fraction f_F.
q1: f64Tvergaard parameter q₁ (typically 1.5).
q2: f64Tvergaard parameter q₂ (typically 1.0).
q3: f64Tvergaard parameter q₃ (typically q₁²).
a_n: f64Nucleation amplitude A_n.
eps_n: f64Mean nucleation strain ε_N.
s_n: f64Standard deviation of nucleation s_N.
Implementations§
Source§impl GursonDamage
impl GursonDamage
Sourcepub fn new(f0: f64, fc: f64, f_f: f64, a_n: f64, eps_n: f64, s_n: f64) -> Self
pub fn new(f0: f64, fc: f64, f_f: f64, a_n: f64, eps_n: f64, s_n: f64) -> Self
Create a new GTN model with default Tvergaard parameters.
Sourcepub fn effective_void_fraction(&self) -> f64
pub fn effective_void_fraction(&self) -> f64
Effective void volume fraction f* accounting for coalescence.
f* = f if f <= f_c f* = f_c + (f̄_F - f_c)/(f_F - f_c) * (f - f_c) if f > f_c
where f̄_F = (q₁ + sqrt(q₁² - q₃))/q₃ ≈ 1/q₁
Sourcepub fn yield_function(&self, sigma_eq: f64, sigma_h: f64, sigma_y: f64) -> f64
pub fn yield_function(&self, sigma_eq: f64, sigma_h: f64, sigma_y: f64) -> f64
Evaluate the GTN yield function.
Φ = (σ_eq/σ_y)² + 2q₁f* cosh(3q₂σ_H/(2σ_y)) - 1 - q₃f*²
Sourcepub fn nucleation_rate(&self, eps_p: f64, eps_p_dot: f64) -> f64
pub fn nucleation_rate(&self, eps_p: f64, eps_p_dot: f64) -> f64
Void nucleation rate from strain-controlled nucleation (Chu & Needleman).
ḟ_nucleation = A_n / (s_N * sqrt(2π)) * exp(-0.5*((ε_p - ε_N)/s_N)²) * ε̇_p
Sourcepub fn growth_rate(&self, plastic_volumetric_strain_rate: f64) -> f64
pub fn growth_rate(&self, plastic_volumetric_strain_rate: f64) -> f64
Void growth rate from plastic dilatation.
ḟ_growth = (1 - f) * ε̇_kk^p
Sourcepub fn update(
&mut self,
eps_p: f64,
eps_p_dot: f64,
plastic_volumetric_strain_rate: f64,
dt: f64,
)
pub fn update( &mut self, eps_p: f64, eps_p_dot: f64, plastic_volumetric_strain_rate: f64, dt: f64, )
Update void volume fraction given plastic strain increment.
Sourcepub fn compute_void_growth_rate(
&self,
sigma_h: f64,
sigma_eq: f64,
sigma_y: f64,
deps_p: f64,
) -> f64
pub fn compute_void_growth_rate( &self, sigma_h: f64, sigma_eq: f64, sigma_y: f64, deps_p: f64, ) -> f64
Compute the total void growth rate including nucleation and growth.
The Rice-Tracey void growth model extended for GTN:
ḟ_total = ḟ_growth + ḟ_nucleation
where:
- ḟ_growth = (1 - f) * A * sinh(B * η) * ε̇_p
- ḟ_nucleation = Gaussian nucleation from Chu-Needleman model
- η = σ_H / σ_eq (stress triaxiality)
- A = 0.283 (Rice-Tracey coefficient), B = 1.5 (triaxiality amplifier)
§Arguments
sigma_h- Hydrostatic (mean) stress [Pa]sigma_eq- Von Mises equivalent stress [Pa]sigma_y- Current yield stress [Pa]deps_p- Equivalent plastic strain increment (dimensionless)
§Returns
Total void volume fraction rate df/dε (per unit plastic strain)
Trait Implementations§
Source§impl Clone for GursonDamage
impl Clone for GursonDamage
Source§fn clone(&self) -> GursonDamage
fn clone(&self) -> GursonDamage
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more