Документация Engee

rainflow

Анализ усталостных характеристик по методу «дождя».

Библиотека

EngeeDSP

Синтаксис

Вызов функции

  • c,rm,rmr,rmm,idx = rainflow(x) — возвращает количество циклов для картины изменения нагрузки во времени x в соответствии со стандартом ASTM E 1049 [1]. Для получения дополнительной информации см. раздел Алгоритмы.

    Функция также возвращает матрицу дождевых потоков rm, два вектора rmr и rmm, содержащие границы интервалов гистограммы для строк и столбцов матрицы rm соответственно, и линейные индексы idx поворотных точек, обнаруженных во входных данных.

  • c,rm,rmr,rmm,idx = rainflow(x,fs) — возвращает количество циклов для x, дискретизированных с частотой fs.

  • c,rm,rmr,rmm,idx = rainflow(x,t) — возвращает количество циклов для x, дискретизированных со значениями времени, хранящимися в аргументе t.

  • c,rm,rmr,rmm,idx = rainflow(___,"ext") — задает картину изменений во времени в виде вектора идентифицированных поворотных точек (пиков и впадин). Аргумент "ext" можно использовать с любым из предыдущих вариантов синтаксиса.

  • rainflow(___;out=:plot) — строит график изменений нагрузки (поворотных точек).

Аргументы

Входные аргументы

# x — картина изменения нагрузки во времени
вектор

Details

Картина изменения нагрузки во времени, заданная как вектор. Аргумент x должен содержать конечные значения.

Типы данных

Float32, Float64

# fs — частота дискретизации
скаляр

Details

Частота дискретизации, заданная как положительный вещественный скаляр.

Типы данных

Float32, Float64

# t — значения времени
вектор

Details

Значения времени, заданные как вектор, представляющий временной интервал между отсчетами.

Типы данных

Float32, Float64

Входные аргументы «имя-значение»

Укажите необязательные пары аргументов в виде Name=Value, где Name — имя аргумента, а Value — соответствующее значение. Аргументы типа «имя-значение» должны располагаться после других аргументов.

# out — тип выходных данных
:data (по умолчанию) | :plot

Details

Тип выходных данных:

  • :data — функция возвращает данные;

  • :plot — функция возвращает график.

Выходные аргументы

# c — количество циклов
матрица

Details

Данные о количестве циклов, возвращаемые в виде матрицы. Матрица c содержит информацию о циклах в следующих столбцах: количество, диапазоны нагрузки, средние значения нагрузки, индексы начала цикла и индексы конца цикла. Пример см. в разделе Алгоритмы. Если указана частота дискретизации, временной интервал или вектор значений времени, то последние два столбца матрицы c содержат начальную и конечную длительность цикла.

# rm — матрица дождевых потоков
матрица

Details

Матрица дождевых потоков. Строки rm соответствуют диапазону нагрузки циклов, а столбцы — среднему значению нагрузки цикла.

# rmr,rmm — границы интервалов гистограммы
векторы

Details

Границы интервалов гистограммы, возвращаемые в виде векторов. Аргументы rmr и rmm содержат границы интервалов строк и столбцов матрицы rm соответственно.

# idx — линейные индексы поворотных точек
вектор

Details

Линейные индексы поворотных точек, возвращаемые в виде вектора.

Примеры

Подсчет циклов идентифицированных поворотных точек

Details

Сгенерируем набор экстремумов, имитирующих изменения направления нагрузки. Построим график данных.

X = [-2, 1, -3, 5, -1, 3, -4, 4, -2]

plot(X, xlabel="Sample Index", ylabel="Stress")

rainflow 3

Вычислим количество циклов для этих данных. Укажем, что входные данные состоят из уже идентифицированных экстремумов.

import EngeeDSP.Functions: rainflow

C, hist, edges = rainflow(X, "ext")

Построим гистограмму количества циклов в зависимости от диапазона нагрузки напряжений.

counts = sum(hist, dims=2)[:]

bin_centers = (edges[1:end-1] + edges[2:end]) / 2
bar(bin_centers, counts, xlabel="Stress Range", ylabel="Cycle Counts")

rainflow 4

Алгоритмы

Анализ усталостных характеристик изучает, как накапливаются повреждения в объекте, подверженном циклическим изменениям напряжений. Количество циклов, необходимое для разрушения объекта, зависит от амплитуды цикла. Широкополосное входное возбуждение содержит циклы различной амплитуды, а наличие гистерезиса в объекте приводит к тому, что одни циклы полностью или частично вкладываются в другие. Метод «дождя» оценивает количество циклов изменения нагрузки как функцию амплитуды цикла.

Сначала функция rainflow преобразует картину изменения нагрузки в последовательность поворотных точек. Поворотные точки — это локальные минимумы и максимумы, в которых нагрузка меняет знак. Функция подсчитывает циклы, рассматривая движущуюся опорную точку последовательности Z и движущееся упорядоченное подмножество из трех точек со следующими характеристиками:

  1. Первая и вторая точки в совокупности называются Y.

  2. Вторая и третья точки в совокупности называются X.

  3. В обеих точках X и Y точки отсортированы по времени от более ранних к более поздним, но не обязательно являются упорядоченными в последовательности поворотных точек.

  4. Диапазон нагрузки значений X, обозначаемый как r(X), представляет собой абсолютное значение разности между амплитудой первой точки и амплитудой второй точки. Определение r(Y) аналогично.

Алгоритм функции rainflow выглядит следующим образом:

rainflow 1 ru

В конце функция собирает данные о различных циклах и полуциклах и составляет таблицу их диапазонов нагрузки, средних значений нагрузки, а также точек начала и окончания. Эта информация затем может быть использована для построения гистограммы циклов.

Рассмотрим следующую последовательность поворотных точек:

rainflow 2 ru

Шаг Z Поворотные точки Три поворотных точки? Y r(Y) X r(X) r(X) < r(Y)? Z в Y? Действия

1

A

A, B, C

Да

AB

3

BC

4

Нет

Да

  1. Считать AB за половину цикла

  2. Игнорировать A

  3. Установить Z равным B

2

B

B, C

Нет

Прочитать D

3

B

B, C, D

Да

BC

4

CD

8

Нет

Да

  1. Считать BC за половину цикла

  2. Отбросить B

  3. Установить Z равным C

4

C

C, D

Нет

Прочитать E

5

C

C, D, E

Да

CD

8

DE

6

Да

Прочитать F

6

C

C, D, E, F

Да

DE

6

EF

4

Да

Прочитать G

7

C

C, D, E, F, G

Да

EF

4

FG

7

Нет

Нет

  1. Считать EF за полный цикл

  2. Исключить E и F

8

C

C, D, G

Да

CD

8

DG

9

Нет

Да

  1. Считать CD за половину цикла

  2. Исключить C

  3. Установить Z равным D

9

D

D, G

Нет

Читать H

10

D

D, G, H

Да

DG

9

GH

8

Да

Читать J

11

D

D, G, H, J

Да

GH

8

HJ

7

Да

Читать K

12

D

D, G, H, J, K

Да

HJ

7

JK

4

Да

Читать L

13

D

D, G, H, J, K, L

Да

JK

4

KL

3

Да

Читать M

14

D

D, G, H, J, K, L, M

Да

KL

3

LM

5

Нет

Нет

  1. Считать KL за полный цикл

  2. Исключить K и L

15

D

D, G, H, J, M

Да

HJ

7

JM

5

Да

Прочитать N

16

D

D, G, H, J, M, N

Да

JM

5

MN

1

Да

Читать P

17

D

D, G, H, J, M, N, P

Да

MN

1

NP

4

Нет

Нет

  1. Считать MN за полный цикл

  2. Исключить M и N

18

D

D, G, H, J, P

Да

HJ

7

JP

9

Нет

Нет

  1. Считать HJ как полный цикл

  2. Исключить H и J

19

D

D, G, P

Да

DG

9

GP

10

Нет

Да

  1. Считать DG как половину цикла

  2. Исключить D

  3. Установить Z равным G

20

G

G, P

Данных нет

Считать GP как половину цикла

Теперь соберем результаты.

Количество циклов Диапазон нагрузки Среднее значение нагрузки Начало Конец

1/2

3

−0.5

A

B

1/2

4

−1

B

C

1

4

1

E

F

1/2

8

1

C

D

1

3

−0.5

K

L

1

1

2.5

M

N

1

7

0.5

H

J

1/2

9

0.5

D

G

1/2

10

1

G

P

Сравним это с результатом применения алгоритма функции rainflow для данной последовательности:

import EngeeDSP.Functions: rainflow

q = rainflow([-2 1 -3 5 -1 3 -4 4 -3 1 -2 3 2 6])[1]
9×5 Matrix{Float64}:
 0.5   3.0  -0.5   1.0   2.0
 0.5   4.0  -1.0   2.0   3.0
 1.0   4.0   1.0   5.0   6.0
 0.5   8.0   1.0   3.0   4.0
 1.0   3.0  -0.5  10.0  11.0
 1.0   1.0   2.5  12.0  13.0
 1.0   7.0   0.5   8.0   9.0
 0.5   9.0   0.5   4.0   7.0
 0.5  10.0   1.0   7.0  14.0

Литература

  1. ASTM E1049-85(2017), Standard Practices for Cycle Counting in Fatigue Analysis. West Conshohocken, PA: ASTM International, 2017, https://www.astm.org/e1049-85r17.html.