pub struct CrackBandModel {
pub gf: f64,
pub ft: f64,
pub young_modulus: f64,
pub h: f64,
pub d: f64,
pub kappa: f64,
}Expand description
Crack band model for mesh-objective softening (Bažant & Oh 1983).
Regularizes strain-softening by relating the softening curve to fracture energy G_f and the element characteristic length h. This ensures mesh independence of the energy dissipation.
Fields§
§gf: f64Fracture energy G_f (J/m² or N/m).
ft: f64Tensile strength f_t (Pa).
young_modulus: f64Young’s modulus E (Pa).
h: f64Characteristic element length h (m).
d: f64Current damage variable.
kappa: f64Maximum historical strain (for irreversibility).
Implementations§
Source§impl CrackBandModel
impl CrackBandModel
Sourcepub fn new(gf: f64, ft: f64, young_modulus: f64, h: f64) -> Self
pub fn new(gf: f64, ft: f64, young_modulus: f64, h: f64) -> Self
Create a new crack band model.
The failure strain is computed as ε_f = 2*G_f / (f_t * h).
Sourcepub fn initiation_strain(&self) -> f64
pub fn initiation_strain(&self) -> f64
Damage initiation strain: ε_0 = f_t / E.
Sourcepub fn failure_strain(&self) -> f64
pub fn failure_strain(&self) -> f64
Failure strain: ε_f = 2*G_f / (f_t * h).
This ensures the correct fracture energy is dissipated regardless of element size.
Sourcepub fn has_snapback(&self) -> bool
pub fn has_snapback(&self) -> bool
Check snap-back condition: ε_f must be > ε_0.
If h > 2EG_f / f_t², snap-back occurs and the element is too large.
Sourcepub fn max_element_size(&self) -> f64
pub fn max_element_size(&self) -> f64
Maximum allowable element size to avoid snap-back.
Sourcepub fn update(&mut self, strain: f64)
pub fn update(&mut self, strain: f64)
Update damage based on current strain.
Uses linear softening between ε_0 and ε_f.
Sourcepub fn stress(&self, strain: f64) -> f64
pub fn stress(&self, strain: f64) -> f64
Stress for a given strain considering damage.
σ = (1 - D) * E * ε
Sourcepub fn dissipated_energy_density(&self) -> f64
pub fn dissipated_energy_density(&self) -> f64
Energy dissipated per unit volume so far.
For linear softening: g = 0.5 * f_t * (ε_f - ε_0) * D Total energy dissipated per unit area = g * h ≈ G_f when D=1.
Trait Implementations§
Source§impl Clone for CrackBandModel
impl Clone for CrackBandModel
Source§fn clone(&self) -> CrackBandModel
fn clone(&self) -> CrackBandModel
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more