pub struct NeuberRule {
pub kt: f64,
pub e_modulus: f64,
pub k_prime: f64,
pub n_prime: f64,
}Expand description
Neuber’s rule for notch analysis.
Neuber’s rule relates the theoretical (elastic) stress/strain at a notch to the actual local elastic-plastic stress and strain:
(Kt * σ_nom)² / E = σ_local * ε_local
i.e., the geometric mean of local stress and strain energy equals the nominal elastic value scaled by Kt².
Given nominal stress σ_nom, stress concentration factor Kt, and Young’s modulus E, the Neuber hyperbola is: σ_local * ε_local = (Kt * σ_nom)² / E
When combined with a cyclic stress-strain curve (e.g., Ramberg-Osgood) the intersection gives the actual local stress and strain.
Fields§
§kt: f64Stress concentration factor Kt.
e_modulus: f64Young’s modulus E (Pa).
k_prime: f64Ramberg-Osgood cyclic strength coefficient K’ (Pa).
n_prime: f64Ramberg-Osgood cyclic strain hardening exponent n’.
Implementations§
Source§impl NeuberRule
impl NeuberRule
Sourcepub fn new(kt: f64, e_modulus: f64, k_prime: f64, n_prime: f64) -> Self
pub fn new(kt: f64, e_modulus: f64, k_prime: f64, n_prime: f64) -> Self
Create a new Neuber rule model.
Sourcepub fn neuber_product(&self, sigma_nom: f64) -> f64
pub fn neuber_product(&self, sigma_nom: f64) -> f64
Neuber hyperbola product: (Kt * σ_nom)² / E
Sourcepub fn ramberg_osgood_strain(&self, sigma_local: f64) -> f64
pub fn ramberg_osgood_strain(&self, sigma_local: f64) -> f64
Ramberg-Osgood total strain for a given local stress.
ε = σ/E + (σ/K’)^(1/n’)
Sourcepub fn local_stress(&self, sigma_nom: f64, max_iter: usize) -> f64
pub fn local_stress(&self, sigma_nom: f64, max_iter: usize) -> f64
Solve for local stress using Neuber’s rule + Ramberg-Osgood (bisection).
Finds σ_local such that σ_local * ε(σ_local) = (Kt * σ_nom)² / E.
Sourcepub fn local_strain(&self, sigma_local: f64) -> f64
pub fn local_strain(&self, sigma_local: f64) -> f64
Solve for local strain from local stress (direct Ramberg-Osgood).
Sourcepub fn cyclic_local_stress_strain(
&self,
sigma_nom_amp: f64,
max_iter: usize,
) -> (f64, f64)
pub fn cyclic_local_stress_strain( &self, sigma_nom_amp: f64, max_iter: usize, ) -> (f64, f64)
Cyclic Neuber analysis: compute local stress and strain amplitudes for a given nominal stress amplitude using Masing’s hypothesis.
For cyclic loading, the cyclic Ramberg-Osgood uses factor 2: Δε = Δσ/E + 2*(Δσ/2K’)^(1/n’)
Returns (sigma_a_local, epsilon_a_local).
Trait Implementations§
Source§impl Clone for NeuberRule
impl Clone for NeuberRule
Source§fn clone(&self) -> NeuberRule
fn clone(&self) -> NeuberRule
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more