rainflow
Анализ усталостных характеристик по методу «дождя».
| Библиотека |
|
Синтаксис
Аргументы
Входные аргументы
#
x —
картина изменения нагрузки во времени
вектор
Details
Картина изменения нагрузки во времени, заданная как вектор. Аргумент x должен содержать конечные значения.
| Типы данных |
|
#
fs —
частота дискретизации
скаляр
Details
Частота дискретизации, заданная как положительный вещественный скаляр.
| Типы данных |
|
#
t —
значения времени
вектор
Details
Значения времени, заданные как вектор, представляющий временной интервал между отсчетами.
| Типы данных |
|
Входные аргументы «имя-значение»
Укажите необязательные пары аргументов в виде Name=Value, где Name — имя аргумента, а Value — соответствующее значение. Аргументы типа «имя-значение» должны располагаться после других аргументов.
#
out —
тип выходных данных
:data (по умолчанию) | :plot
Details
Тип выходных данных:
-
:data— функция возвращает данные; -
:plot— функция возвращает график.
Выходные аргументы
#
c —
количество циклов
матрица
Details
Данные о количестве циклов, возвращаемые в виде матрицы. Матрица c содержит информацию о циклах в следующих столбцах: количество, диапазоны нагрузки, средние значения нагрузки, индексы начала цикла и индексы конца цикла. Пример см. в разделе Алгоритмы. Если указана частота дискретизации, временной интервал или вектор значений времени, то последние два столбца матрицы c содержат начальную и конечную длительность цикла.
#
rm —
матрица дождевых потоков
матрица
Details
Матрица дождевых потоков. Строки rm соответствуют диапазону нагрузки циклов, а столбцы — среднему значению нагрузки цикла.
#
idx —
линейные индексы поворотных точек
вектор
Details
Линейные индексы поворотных точек, возвращаемые в виде вектора.
Примеры
Подсчет циклов идентифицированных поворотных точек
Details
Сгенерируем набор экстремумов, имитирующих изменения направления нагрузки. Построим график данных.
X = [-2, 1, -3, 5, -1, 3, -4, 4, -2]
plot(X, xlabel="Sample Index", ylabel="Stress")
Вычислим количество циклов для этих данных. Укажем, что входные данные состоят из уже идентифицированных экстремумов.
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 преобразует картину изменения нагрузки в последовательность поворотных точек. Поворотные точки — это локальные минимумы и максимумы, в которых нагрузка меняет знак. Функция подсчитывает циклы, рассматривая движущуюся опорную точку последовательности Z и движущееся упорядоченное подмножество из трех точек со следующими характеристиками:
-
Первая и вторая точки в совокупности называются Y.
-
Вторая и третья точки в совокупности называются X.
-
В обеих точках X и Y точки отсортированы по времени от более ранних к более поздним, но не обязательно являются упорядоченными в последовательности поворотных точек.
-
Диапазон нагрузки значений X, обозначаемый как r(X), представляет собой абсолютное значение разности между амплитудой первой точки и амплитудой второй точки. Определение r(Y) аналогично.
Алгоритм функции rainflow выглядит следующим образом:
В конце функция собирает данные о различных циклах и полуциклах и составляет таблицу их диапазонов нагрузки, средних значений нагрузки, а также точек начала и окончания. Эта информация затем может быть использована для построения гистограммы циклов.
Рассмотрим следующую последовательность поворотных точек:
| Шаг | Z | Поворотные точки | Три поворотных точки? | Y | r(Y) | X | r(X) | r(X) < r(Y)? | Z в Y? | Действия |
|---|---|---|---|---|---|---|---|---|---|---|
1 |
A |
A, B, C |
Да |
AB |
3 |
BC |
4 |
Нет |
Да |
|
2 |
B |
B, C |
Нет |
— |
— |
— |
— |
— |
— |
Прочитать D |
3 |
B |
B, C, D |
Да |
BC |
4 |
CD |
8 |
Нет |
Да |
|
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 |
Нет |
Нет |
|
8 |
C |
C, D, G |
Да |
CD |
8 |
DG |
9 |
Нет |
Да |
|
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 |
Нет |
Нет |
|
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 |
Нет |
Нет |
|
18 |
D |
D, G, H, J, P |
Да |
HJ |
7 |
JP |
9 |
Нет |
Нет |
|
19 |
D |
D, G, P |
Да |
DG |
9 |
GP |
10 |
Нет |
Да |
|
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
Литература
-
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.