Skip to main content

NeuberRule

Struct NeuberRule 

Source
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: f64

Stress concentration factor Kt.

§e_modulus: f64

Young’s modulus E (Pa).

§k_prime: f64

Ramberg-Osgood cyclic strength coefficient K’ (Pa).

§n_prime: f64

Ramberg-Osgood cyclic strain hardening exponent n’.

Implementations§

Source§

impl NeuberRule

Source

pub fn new(kt: f64, e_modulus: f64, k_prime: f64, n_prime: f64) -> Self

Create a new Neuber rule model.

Source

pub fn neuber_product(&self, sigma_nom: f64) -> f64

Neuber hyperbola product: (Kt * σ_nom)² / E

Source

pub fn ramberg_osgood_strain(&self, sigma_local: f64) -> f64

Ramberg-Osgood total strain for a given local stress.

ε = σ/E + (σ/K’)^(1/n’)

Source

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.

Source

pub fn local_strain(&self, sigma_local: f64) -> f64

Solve for local strain from local stress (direct Ramberg-Osgood).

Source

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

Source§

fn clone(&self) -> NeuberRule

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for NeuberRule

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.