Skip to content

[IMPL] Implement stress-life prediction function based on the Morrow mean-stress correction #46

@MartinNesladek

Description

@MartinNesladek

ℹ️ General Information

Component Name: Morrow

Component Location: core/stress_life/damage_params/uniaxial_stress_eq_amp/

Suggested Python Name: calc_stress_eq_amp_morrow

FABER WG Relation: 4.1

Brief Description: Uniaxial equivalent stress amplitude based on Morrow line

Priority: 2

Technical Complexity: 2

Estimated Effort: 2

Dependencies: -


Implementation Details

📋 Specification

Using the Morrow mean-stress correction, compute the value of equivalent stress amplitude, $\sigma_{aeq}$, in MPa for given stress values $\sigma_a$ and $\sigma_m$ representing a single load cycle.

Mathematical Formulation

$$ \displaystyle\sigma_{aeq}=\frac{\sigma_a}{1-\frac{\sigma_m}{\sigma_{true}} } $$

$$  \displaystyle\sigma_{aeq}=\frac{\sigma_a}{1-\frac{\sigma_m}{\sigma_{true}} } $$

Inputs

  1. Static tensile parameters
Parameter Symbol Type Description Units Constraints
true_fract_stress $\sigma_{true}$ array of floats True tensile fracture stress MPa $>0$
  1. Stress / Strain values
Parameter Symbol Type Description Units Range
stress_amp $\sigma_a$ array of floats stress amplitude MPa $(0; \infty)$
mean_stress $\sigma_m$ array of floats mean stress MPa $(-\infty; \infty)$

Outputs

Parameter Type Description Units Range
$\sigma_{aeq}$ array of floats Equivalent stress amplitude by Morrow - $(-\infty; \infty)$

Expected Behavior

🔧 Implementation Guidelines

Function Signature

# Suggested function signature
def calc_stress_eq_amp_morrow(
    stress_amp: ArrayLike,
    mean_stress: ArrayLike,
    true_fract_stress: ArrayLike,
) -> NDArray[np.float64]:

Code Structure

Error Handling

✅ Validation & Testing

Test Cases

Test Case Inputs Expected Outputs Notes
Example 1 $\sigma_{true} = 770 MPa; \sigma_a = 180 MPa, \sigma_m = 100 MPa$ $\sigma_{aeq} = 206.9 MPa$

Validation Criteria

  • Mathematical accuracy verified against literature
  • Edge cases handled appropriately
  • Output format matches specification

📚 References & Resources

J. Draper: Modern Metal Fatigue Analysis. EMAS Publishing, 2008

📝 Technical Notes

Performance Considerations

Edge Cases to Handle

Issue a warning if $\sigma_m > \sigma_{true}$
An error handling should be implemented for $\sigma_m = \sigma_{true}$

Special Requirements

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions