The notch approximation law classes#
The following classes are available: ExtendedNeuber, SeegerBeste, and Binned.
The ExtendedNeuber and SeegerBeste classes implement the respective notch approximations.
The Binned class implements binning to a predefined number of bins.
It contains an object of either ExtendedNeuber or SeegerBeste.
The respective stress and strain values from the notch approximation for equi-spaced load values get precomputed and stored in a lookup table.
This speeds up the computation as only the initialization step is compute intense.
- class pylife.materiallaws.notch_approximation_law.ExtendedNeuber(E, K, n, K_p=None)[source]#
Apply the extended Neuber notch approximation law.
Use this law for the P_RAM damage parameter in the FKM nonlinear assessment. It converts a linear-elastic FE load to an elastic-plastic local stress and strain following the Ramberg-Osgood material law.
- Parameters:
Notes
The primary path follows extended Neuber’s rule from section 2.5.7 of the FKM guideline nonlinear [FKM-Neuber]:
\[\varepsilon(\sigma) = \frac{L}{\sigma} K_p\, \varepsilon^*(L), \qquad \varepsilon^*(L) = \varepsilon\!\left(\frac{L}{K_p}\right).\]References
[FKM-Neuber]Forschungskuratorium Maschinenbau,
FKM-Richtlinie nichtlinear, 2019.- property K#
Return the Ramberg-Osgood strength coefficient.
- Returns:
Strength coefficient in MPa, also denoted
K_prime.- Return type:
- property K_p#
Return the plastic shape factor.
- Returns:
Plastic shape factor, dimensionless.
- Return type:
- property K_prime#
Return the Ramberg-Osgood strength coefficient.
- Returns:
Strength coefficient in MPa, also denoted
K_prime.- Return type:
- load(stress, *, rtol=0.0001, tol=0.0001)[source]#
Calculate linear-elastic load from elastic-plastic stress.
- Parameters:
- Returns:
Linear-elastic load in MPa that produces
stress.- Return type:
- load_secondary_branch(delta_stress, *, rtol=0.0001, tol=0.0001)[source]#
Calculate load increment from secondary-branch stress increment.
- Parameters:
- Returns:
Linear-elastic load increment in MPa that produces
delta_stress.- Return type:
- property n#
Return the Ramberg-Osgood strain hardening exponent.
- Returns:
Strain hardening exponent, dimensionless.
- Return type:
- primary(load)#
Calculate stress and strain for the primary path.
- Parameters:
load (array_like) – Linear-elastic load in MPa.
- Returns:
Stress-strain array. Scalars return
[stress, strain]; arrays return stress values and strain values stacked along the last axis.- Return type:
- property ramberg_osgood_relation#
Return the Ramberg-Osgood material relation.
- Returns:
Material relation used to convert elastic-plastic stress and strain.
- Return type:
- secondary(delta_load)#
Calculate stress and strain increments for a secondary branch.
- Parameters:
delta_load (array_like) – Linear-elastic load increment in MPa for the hysteresis branch.
- Returns:
Stress-strain increment array. Scalars return
[delta_stress, delta_strain]; arrays return increments stacked along the last axis.- Return type:
- strain(stress)[source]#
Calculate primary-path elastic-plastic strain from stress.
- Parameters:
stress (array_like) – Elastic-plastic stress in MPa on the primary path.
- Returns:
Elastic-plastic strain on the primary path, dimensionless.
- Return type:
- strain_secondary_branch(delta_stress)[source]#
Calculate secondary-branch strain increment from stress increment.
- Parameters:
delta_stress (array_like) – Elastic-plastic stress increment in MPa on a secondary hysteresis branch.
- Returns:
Elastic-plastic strain increment on the secondary branch, dimensionless.
- Return type:
- stress(load, *, rtol=0.0001, tol=0.0001)[source]#
Calculate primary-path elastic-plastic stress from load.
- Parameters:
load (array_like) – Linear-elastic von Mises stress from a scaled FE result in MPa, denoted as load
Lin the FKM nonlinear guideline.rtol (float, optional) – Relative tolerance for solving the implicit equation. Default is
1e-4.tol (float, optional) – Absolute tolerance for solving the implicit equation. Default is
1e-4.
- Returns:
Elastic-plastic stress in MPa on the primary path.
- Return type:
- class pylife.materiallaws.notch_approximation_law_seegerbeste.SeegerBeste(E, K, n, K_p=None)[source]#
Apply the Seeger-Beste notch approximation law.
Use this law for the P_RAJ damage parameter in the FKM nonlinear assessment. It converts a linear-elastic FE load to an elastic-plastic local stress and strain following the Ramberg-Osgood material law.
- Parameters:
Notes
The implementation follows section 2.8.7 of the FKM guideline nonlinear [FKM-SeegerBeste] and solves the Seeger-Beste implicit equations for primary and secondary paths.
References
[FKM-SeegerBeste]Forschungskuratorium Maschinenbau,
FKM-Richtlinie nichtlinear, 2019.- property K#
Return the Ramberg-Osgood strength coefficient.
- Returns:
Strength coefficient in MPa, also denoted
K_prime.- Return type:
- property K_p#
Return the plastic shape factor.
- Returns:
Plastic shape factor, dimensionless.
- Return type:
- property K_prime#
Return the Ramberg-Osgood strength coefficient.
- Returns:
Strength coefficient in MPa, also denoted
K_prime.- Return type:
- load(stress, *, rtol=0.0001, tol=0.0001)[source]#
Calculate linear-elastic load from elastic-plastic stress.
- Parameters:
- Returns:
Linear-elastic load in MPa that produces
stress.- Return type:
- load_secondary_branch(delta_stress, *, rtol=0.0001, tol=0.0001)[source]#
Calculate load increment from secondary-branch stress increment.
- Parameters:
- Returns:
Linear-elastic load increment in MPa that produces
delta_stress.- Return type:
- property n#
Return the Ramberg-Osgood strain hardening exponent.
- Returns:
Strain hardening exponent, dimensionless.
- Return type:
- primary(load)#
Calculate stress and strain for the primary path.
- Parameters:
load (array_like) – Linear-elastic load in MPa.
- Returns:
Stress-strain array. Scalars return
[stress, strain]; arrays return stress values and strain values stacked along the last axis.- Return type:
- property ramberg_osgood_relation#
Return the Ramberg-Osgood material relation.
- Returns:
Material relation used to convert elastic-plastic stress and strain.
- Return type:
- secondary(delta_load)#
Calculate stress and strain increments for a secondary branch.
- Parameters:
delta_load (array_like) – Linear-elastic load increment in MPa for the hysteresis branch.
- Returns:
Stress-strain increment array. Scalars return
[delta_stress, delta_strain]; arrays return increments stacked along the last axis.- Return type:
- strain(stress)[source]#
Calculate primary-path elastic-plastic strain from stress.
- Parameters:
stress (array_like) – Elastic-plastic stress in MPa on the primary path.
- Returns:
Elastic-plastic strain on the primary path, dimensionless.
- Return type:
- strain_secondary_branch(delta_stress)[source]#
Calculate secondary-branch strain increment from stress increment.
- Parameters:
delta_stress (array_like) – Elastic-plastic stress increment in MPa on a secondary hysteresis branch.
- Returns:
Elastic-plastic strain increment on the secondary branch, dimensionless.
- Return type:
- stress(load, *, rtol=0.0001, tol=0.0001)[source]#
Calculate primary-path elastic-plastic stress from load.
- Parameters:
load (array_like) – Linear-elastic von Mises stress from a scaled FE result in MPa, denoted as load
Lin the FKM nonlinear guideline.rtol (float, optional) – Relative tolerance for solving the implicit equation. Default is
1e-4.tol (float, optional) – Absolute tolerance for solving the implicit equation. Default is
1e-4.
- Returns:
Elastic-plastic stress in MPa on the primary path.
- Return type:
- class pylife.materiallaws.notch_approximation_law.NotchApproxBinner(notch_approximation_law, number_of_bins=100)[source]#
Cache a notch approximation law on lookup tables.
Use this helper when repeated evaluations of the same notch approximation law would make nonlinear root finding too expensive. The binner precomputes the primary path and secondary hysteresis branches up to an expected maximum load.
- Parameters:
notch_approximation_law (NotchApproximationLawBase) – Notch approximation law to tabulate.
number_of_bins (int, optional) – Number of bins in the primary lookup table. Default is
100.
- initialize(max_load)[source]#
Initialize lookup tables up to the maximum expected load.
- Parameters:
max_load (array_like) – Maximum linear-elastic load in MPa expected during the assessment.
- Returns:
Initialized binner instance.
- Return type:
- primary(load)[source]#
Look up stress and strain on the primary path.
- Parameters:
load (array_like) – Linear-elastic load in MPa.
- Returns:
Tabulated stress-strain array on the primary path.
- Return type:
- Raises:
RuntimeError – Raised if
initialize()has not been called.ValueError – Raised if
loadexceeds the initialized maximum load.
- property ramberg_osgood_relation#
Return the Ramberg-Osgood material relation.
- Returns:
Material relation of the tabulated notch approximation law.
- Return type:
- secondary(delta_load)[source]#
Look up stress and strain increments on a secondary branch.
- Parameters:
delta_load (array_like) – Linear-elastic load increment in MPa.
- Returns:
Tabulated stress-strain increment array on the secondary branch.
- Return type:
- Raises:
RuntimeError – Raised if
initialize()has not been called.ValueError – Raised if
delta_loadexceeds the initialized maximum load increment.