The sn_curve module

class pylife.strength.sn_curve.FiniteLifeBase(k_1, SD_50, ND_50)[source]

Base class for SN curve calculations - either in logarithmic or regular scale

k_1
class pylife.strength.sn_curve.FiniteLifeCurve(k_1, SD_50, ND_50)[source]

Sample points on the finite life curve - either N or S (NOT logarithmic scale)

The formula for calculation is taken from “Betriebsfestigkeit”, Haibach, 3. Auflage 2006

Consider: load collective and life curve have to be consistent:

  • range vs range
  • amplitude vs amplitude
Parameters:
  • k (float) – slope of the SN-curve
  • SD_50 (float) – lower stress limit in the finite life region
  • ND_50 (float) – number of cycles at stress SD_50
calc_N(S, ignore_limits=False)[source]

Calculate number of cycles N for a given stress S

Parameters:
  • S (array like) – Stress (point(s) on the SN-curve)
  • ignore_limits (boolean) – ignores the upper limit of the number of cycles generally it should be smaller than ND_50 (=the limit of the finite life region) but some special evaluation methods (e.g. according to marquardt2004) require extrapolation to estimate an equivalent stress
Returns:

N – number of cycles corresponding to the given stress value (point on the SN-curve)

Return type:

array like

calc_S(N, ignore_limits=True)[source]

Calculate stress S for a given number of cycles N

Parameters:
  • N (float) – number of cycles
  • ignore_limits (boolean) – ignores the upper limit of the number of cycles generally it should be smaller than ND_50 (=the limit of the finite life region) but some special evaluation methods (e.g. according to marquardt2004) require extrapolation to estimate an equivalent stress
Returns:

S – stress corresponding to the given number of cycles (point on the SN-curve)

Return type:

float

calc_damage(loads, method='elementar', index_name='range')[source]
Calculate the damage based on the methods
  • Miner elementar (k_2 = k)
  • Miner Haibach (k_2 = 2k-1)
  • Miner original (k_2 = -inf)

Consider: load collective and life curve have to be consistent:

  • range vs range
  • amplitude vs amplitude
Parameters:
  • loads (pandas series histogram) – loads (index is the load, column the cycles)
  • method (str) –
    • ‘elementar’: Miner elementar (k_2 = k)
    • ’MinerHaibach’: Miner Haibach (k_2 = 2k-1)
    • ’original’: Miner original (k_2 = -inf)
Returns:

damage – damage for every load horizont based on the load collective and the method

Return type:

pd.DataFrame

class pylife.strength.sn_curve.FiniteLifeLine(k, SD_50, ND_50)[source]

Sample points on the finite life line - either N or S (LOGARITHMIC SCALE)

The formula for calculation is taken from “Betriebsfestigkeit”, Haibach, 3. Auflage 2006

Notes

In contrast to the case

Parameters:
  • k (float) – slope of the SN-curve
  • SD_50 (float) – lower stress limit in the finite life region
  • ND_50 (float) – number of cycles at stress SD_50
calc_N_log(S_log, ignore_limits=False)[source]

Calculate number of cycles N_log for a given stress S_log

Parameters:
  • S_log (float) – logarithmic stress (point on the SN-curve)
  • ignore_limits (boolean) – ignores the upper limit of the number of cycles generally it should be smaller than ND_50_log (=the limit of the finite life region) but some special evaluation methods (e.g. according to marquardt2004) require extrapolation to estimate an equivalent stress
Returns:

N_log – logarithmic number of cycles corresponding to the given stress value (point on the SN-curve)

Return type:

float

calc_S_log(N_log, ignore_limits=False)[source]

Calculate stress logarithmic S_log for a given number of cycles N_log

Parameters:
  • N_log (float) – logarithmic number of cycles
  • ignore_limits (boolean) – ignores the upper limit of the number of cycles generally it should be smaller than ND_50 (=the limit of the finite life region) but some special evaluation methods (e.g. according to marquardt2004) require extrapolation to estimate an equivalent stress
Returns:

S_log – logarithmic stress corresponding to the given number of cycles (point on the SN-curve)

Return type:

float