pub struct EnergyAbsorption {
pub plateau_stress: f64,
pub densification_strain: f64,
pub elastic_modulus: f64,
pub yield_strain: f64,
pub foam_density: f64,
pub thickness: f64,
}Expand description
Energy absorption model for foam impact.
Describes the three characteristic regions of foam compression: linear elastic, plateau (constant stress), and densification.
Fields§
§plateau_stress: f64Plateau stress [Pa].
densification_strain: f64Densification strain (typically 0.5–0.9).
elastic_modulus: f64Young’s modulus in the linear elastic region [Pa].
yield_strain: f64Yield strain (transition from elastic to plateau).
foam_density: f64Foam density [kg/m³].
thickness: f64Foam thickness [m].
Implementations§
Source§impl EnergyAbsorption
impl EnergyAbsorption
Sourcepub fn new(
plateau_stress: f64,
densification_strain: f64,
elastic_modulus: f64,
yield_strain: f64,
foam_density: f64,
thickness: f64,
) -> Self
pub fn new( plateau_stress: f64, densification_strain: f64, elastic_modulus: f64, yield_strain: f64, foam_density: f64, thickness: f64, ) -> Self
Create a new energy absorption model.
Sourcepub fn stress_at_strain(&self, strain: f64) -> f64
pub fn stress_at_strain(&self, strain: f64) -> f64
Stress at a given engineering strain (simplified tri-linear model).
Sourcepub fn energy_density(&self, strain: f64) -> f64
pub fn energy_density(&self, strain: f64) -> f64
Energy absorbed per unit volume up to a given strain [J/m³].
Integrates the stress-strain curve from 0 to strain.
Sourcepub fn plateau_energy_density(&self) -> f64
pub fn plateau_energy_density(&self) -> f64
Total energy absorbed through full plateau region [J/m³].
Sourcepub fn efficiency(&self, strain: f64) -> f64
pub fn efficiency(&self, strain: f64) -> f64
Efficiency at a given strain.
eta = W(strain) / (sigma(strain) * strain)
Sourcepub fn ideal_efficiency(&self) -> f64
pub fn ideal_efficiency(&self) -> f64
Ideal energy absorption efficiency (rectangular stress-strain).
eta_ideal = 1 for perfect energy absorber.
Sourcepub fn specific_energy(&self, strain: f64) -> f64
pub fn specific_energy(&self, strain: f64) -> f64
Energy absorbed per unit mass up to a given strain [J/kg].
Sourcepub fn peak_g_force(&self, drop_height: f64) -> f64
pub fn peak_g_force(&self, drop_height: f64) -> f64
Maximum deceleration during impact for given drop parameters.
G = sigma_plateau / (rho_foam * h) where h is the drop height.
Sourcepub fn cushion_factor(&self, strain: f64) -> f64
pub fn cushion_factor(&self, strain: f64) -> f64
Cushion factor = peak_stress / energy_density at that strain.
Trait Implementations§
Source§impl Clone for EnergyAbsorption
impl Clone for EnergyAbsorption
Source§fn clone(&self) -> EnergyAbsorption
fn clone(&self) -> EnergyAbsorption
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for EnergyAbsorption
impl Debug for EnergyAbsorption
Source§impl PartialEq for EnergyAbsorption
impl PartialEq for EnergyAbsorption
Source§fn eq(&self, other: &EnergyAbsorption) -> bool
fn eq(&self, other: &EnergyAbsorption) -> bool
self and other values to be equal, and is used by ==.