The FKMNonlinearRecorder class#

class pylife.stress.rainflow.recorders.FKMNonlinearRecorder[source]#

Record loops for the FKM nonlinear assessment workflow.

The recorder stores minimum and maximum load, stress, and strain values reported by FKMNonlinearDetector together with flags that distinguish closed hystereses from Memory 3 entries of the FKM nonlinear procedure.

property R#

Return stress ratios R of recorded hystereses.

Returns:

Stress ratio R = S_min / S_max, dimensionless.

Return type:

numpy.ndarray

Notes

For Memory 3 hystereses the FKM nonlinear guideline defines R = -1. Those rows are indicated by is_zero_mean_stress_and_strain.

property S_a#

Return stress amplitudes of recorded hystereses.

Returns:

Stress amplitude in MPa.

Return type:

numpy.ndarray

property S_m#

Return mean stresses of recorded hystereses.

Returns:

Mean stress in MPa.

Return type:

numpy.ndarray

Notes

Mean stress is usually (S_min + S_max) / 2. For Memory 3 hystereses the FKM nonlinear guideline defines S_m = 0; those rows are indicated by is_zero_mean_stress_and_strain.

property S_max#

Return the maximum stresses of recorded hystereses.

Returns:

Maximum stress values in MPa.

Return type:

pandas.Series

property S_min#

Return the minimum stresses of recorded hystereses.

Returns:

Minimum stress values in MPa.

Return type:

pandas.Series

__init__()[source]#

Instantiate a FKMNonlinearRecorder.

property collective#

Return the FKM nonlinear collective as a DataFrame.

The load values are given in the columns loads_min, and loads_max for consistency with other recoders. Stress and strain values for the hystereses are given in the columns S_min, S_max, and epsilon_min, epsilon_max, respectively. The column is_closed_hysteresis indicates whether the row corresponds to a closed hysteresis or was recorded as a memory 3 hysteresis, which counts only half the damage in the FKM nonlinear procedure. The columns epsilon_min_LF and epsilon_max_LF describe the minimum and maximum seen value of epsilon in the entire load history, up to the current hysteresis. These values may be lower (min) or higher (max) than the min/max values of the previously recorded hysteresis as they also take into account parts of the stress-strain diagram curve that are not part of hystereses.

The resulting DataFrame will have a MultiIndex with levels “hysteresis_index” and “assessment_point_index”, both counting from 0 upwards. The nodes of a mesh are, thus, mapped to the index sequence 0,1,…, even if the node_id starts, e.g., with 1.

Returns:

Recorded FKM nonlinear collective with load, stress, strain, and status columns.

Return type:

pandas.DataFrame

property epsilon_a#

Return strain amplitudes of recorded hystereses.

Returns:

Strain amplitude, dimensionless.

Return type:

numpy.ndarray

property epsilon_m#

Return mean strains of recorded hystereses.

Returns:

Mean strain, dimensionless.

Return type:

numpy.ndarray

Notes

Mean strain is usually (epsilon_min + epsilon_max) / 2. For Memory 3 hystereses the FKM nonlinear guideline defines epsilon_m = 0; those rows are indicated by is_zero_mean_stress_and_strain.

property epsilon_max#

Return the maximum strains of recorded hystereses.

Returns:

Maximum strain values, dimensionless.

Return type:

pandas.Series

property epsilon_max_LF#

Return the maximum lifetime-history strain values.

Returns:

Maximum strain values seen in the load history up to each hysteresis, dimensionless.

Return type:

pandas.Series

property epsilon_min#

Return the minimum strains of recorded hystereses.

Returns:

Minimum strain values, dimensionless.

Return type:

pandas.Series

property epsilon_min_LF#

Return the minimum lifetime-history strain values.

Returns:

Minimum strain values seen in the load history up to each hysteresis, dimensionless.

Return type:

pandas.Series

property is_closed_hysteresis#

Return whether each row is a closed hysteresis.

Returns:

True for closed hystereses and False for Memory 3 entries, which count only half damage in the FKM nonlinear procedure.

Return type:

list of bool or numpy.ndarray

property is_zero_mean_stress_and_strain#

Return flags for FKM Memory 3 zero mean values.

Returns:

True for hystereses where the FKM nonlinear procedure defines mean stress and mean strain as zero.

Return type:

list of bool or numpy.ndarray

property loads_max#

Return the maximum load values of recorded hystereses.

Returns:

Maximum load values, typically in MPa or the unit of the input load history.

Return type:

pandas.Series

property loads_min#

Return the minimum load values of recorded hystereses.

Returns:

Minimum load values, typically in MPa or the unit of the input load history.

Return type:

pandas.Series

record_values_fkm_nonlinear(results_min, results_max, is_closed_hysteresis, is_zero_mean_stress_and_strain, run_index)[source]#

Record FKM nonlinear loop results.

Parameters:
  • results_min (pandas.DataFrame) – Minimum-side results with columns loads_min, S_min, epsilon_min, and epsilon_min_LF.

  • results_max (pandas.DataFrame) – Maximum-side results with columns loads_max, S_max, epsilon_max, and epsilon_max_LF.

  • is_closed_hysteresis (list of bool) – Flags indicating closed hystereses.

  • is_zero_mean_stress_and_strain (list of bool) – Flags indicating Memory 3 hystereses with zero mean stress and strain according to the FKM nonlinear procedure.

  • run_index (int) – Index of the detector run that produced the results.