随着研究的深入,人们发现采用时间序列计算载荷谱太麻烦了,处理的工作量太大,我们不需要将每个时刻点的载荷都做运算,疲劳计算只需要提供幅值均值循环次数,鉴于此发展出了很多不同的计数方法,雨流法是最常见的处理方式,在ASTM E1049-85规范中记载了常见的4种计数方法。

传统的符合ASTM标准的载荷历程计数法主要有以下几种:

  • 水平交叉计数(Level cross counting)

  • 峰值计数(Peak counting)

  • 样本幅值计数(Simple-range counting)

  • 雨流计数(rainflow counting)

    参考文章 疲劳载荷计算 - 知乎 (zhihu.com)

其中雨流计数法是最为主流的计数方法,也是公认效率最好的,.目前提出的各种雨 流计数的模型都是以找出循环过程中的滞后环的应力循环为原则,针对雨流法的学习,我发现了以下几类常见的处理方式:

  • 第一个方法

    就是在ASTM E1049-85规范中记载的常规的雨流计数的步骤,该算法在没有数据重新安排的情况下起作用,因此无需提前知道绝对最大值,可以进行实时的雨流计数。从原始谱出发采用三点雨流计数的方法,用连续的三个点判断是否形成迟滞环即可以记为1个cycle的范围。连续的三点形成两条线段,根据线段的长度判断是否形成迟滞环,如果形成记为1cycle,否则记为0.5cycle。假设连续三个点记为A、B、C,形成的线段分别是AB和BC,首先假设AB不是起始段,若AB>BC,不能形成迟滞环,则提取A、B的均值和幅值,并进行记录0.5cycle,之后将B的值给A,C的值给B,读取下一个点为C就可以下一个判断,传统方法由于第一阶段中会遗留部分不能构成应力循环 的数据点,称之为发散收敛波,因此要进行第二阶段 的计数.

    参考文章Rainflow counts for fatigue analysis - MATLAB rainflow - MathWorks 中国

    >



    • 第二个方法

      就是简化的三点雨流计数法,它是对载荷历程进行编辑,将全局最大的峰值或者谷值放在起始位置,但是这就要注意在拼接的时候不要出错,或者增添或者删减数据。将峰值和估值放在起始点,就不会出现起始段满足迟滞环条件但是只能记作0.5cycle,所以只需要判断AB<=BC即可,为后面计算省了很多步骤。但是需要注意的是他的简化计算的优势也导致了他的操作的劣势,因简化的rainflow必须在计数之前重新安排时间序列,这使在线实时处理变得非常困难>。参考视频:疲劳与断裂





      • 第三个方法

        就是四点雨流计数法,依据时间序列读入时域数据的四个数据点,如果中间两个数据点构成的幅值被第一个和第四个点构成的幅值包含,则将中间这两个点构成的相对较小的载荷循环记作一次计数,并从原时域数据中删除中间这两个点,然后如法炮制的对剩余的数据点构成的新的载荷序列进行四点法雨流计数。如果中间两个点构成的幅值没有被第一和第四个点构成的幅值包含,则什么都不做,对下一个“四点”如法炮制的进行处理。当这套流程进行到最后的时候,会留下一个大的载荷循环“骨架”。按照“四点法计数”规则,在不做任何处理的情况下这个“骨架”无法再计数出任何新的结果。这个“骨架”我们习惯上称之为Residue。接着再将好多段Residue“首尾相接”进行雨流计数。这个时候,按照四点法雨流计数法则,本来数不出什么结果的,但拼接后的Residue又能贡献出新的载荷循环。而且,这些载荷循环都是幅值非常大的载荷循环,循环周次不多,但是实际形成的伪损伤数值可是不小的,因此不仅不能忽略,而且是要小心谨慎。对residue的循环计数处理,采用拼接的方法得到载荷谱,再继续雨流计数。最后对于无法再计完整循环的峰谷点,把相邻的两个数值记为半个循环。 参考文章【载荷数据处理-幅值域分析方法】雨流计数_操作稳定性测试__汽车测试网 (auto-testing.net)

        >



        • 第四个方法

          就是改进的雨流实时计数模型(田 和 李, 2009),其是在第一种方法的基础上进行的补充改进,由于第一种方法可以做实时的雨流计数,他是经过第一阶段计数后, S点以前的遗留点构成发散波,s点以后的遗留点 构成收敛波.第二阶段计数实际是利用S的位置变 化把发散波和收敛波位置进行调整和对接,形成收 敛发散波,然后再进行处理.,但是碍于其进行完第一阶段的计数后残余的载荷情况复杂,容易发生对接不当,这处理不当可能会产生漏点,甚至会得出错误计数结果.所以改进的方法就是在进行完第一阶段的计数后,须在第二阶段处 理前进行可靠的数据对接处理,才能保证结果正确.对接处理方法如下:

          标志位s前没有遗留点的处理流程如下:>

          标志位s前至少有一个遗留点的处理流程如下:>

参考文献:

[1] 佚名. 田_李_2009_改进的雨流法实时计数模型.pdf[Z]([日期不详]).

[2] 佚名. 董 et al_2004_雨流计数法及其在程序中的具体实现.pdf[Z]([日期不详])

[3] MCINNES C H, MEEHAN P A. Equivalence of four-point and three-point rainflow cycle counting algorithms[J]. International Journal of Fatigue, 2008, 30(3): 547–559. DOI:10.1016/j.ijfatigue.2007.03.006.

[4] 佚名. ASTM e1049-85(2017) standard practices for cycle counting in fatigue analysi.pdf[Z]([日期不详]).

[5] HUANG J, WANG S, XU W, 等. A novel autoregressive rainflow—integrated moving average modeling method for the accurate state of health prediction of lithium-ion batteries[C]. . DOI:10.3390/PR9050795.

[6] AMZALLAG C, GEREY J P, ROBERT J, 等. Standardization of the rainflow counting method for fatigue analysis[J]. 1994. . DOI:10.1016/0142-1123(94)90343-3.

[7] RYCHLIK I. A new definition of the rainflow cycle counting method[J]. 1987. . DOI:10.1016/0142-1123(87)90054-5.

[8] SCHOOL OF INFORMATION ENGINEERING, SOUTHWEST UNIVERSITY OF SCIENCE AND TECHNOLOGY, MIANYANG 621010, CHINA, HUANG J. An improved rainflow algorithm combined with linear criterion for the accurate li-ion battery residual life prediction[J]. International Journal of Electrochemical Science, 2021: ArticleID:21075. DOI:10.20964/2021.07.29.

.

            - ## 附录

                现给出简化的三点雨流计数法MATLAB程序代码

            %% rainflow计数法 %%

            clear;clc

            C=xlsread('load_F1');%%%%%%%%%在此修改加载的文件名,数据格式一直才可正确运算%%%  %%%也可以自行添加一个随机列向量C作为载荷谱输入%%

            B=C;A=C;

            q=length(A);

            %三点循环计数法;部分参考SAE ASTM标准

            %% 步骤一 %%

            %对载荷时间历程进行处理使它只包含峰谷峰谷交替出现

            m=q;

            for i=2:1:m-1

               if A(i-1)<A(i)&&A(i)<A(i+1)

                   B(i)=NaN;

               elseif A(i-1)>A(i)&&A(i)>A(i+1)

                   B(i)=NaN;

               end

            end

            B(isnan(B))=\[\];

            %% 步骤二 %%

            %对载荷时间历程再造,使从最大(小)值拆开,前后拼接,使从最值开始最值结束

            \[a,b\]=max(B);

            n=length(B);

            B1=B(b:n);

            B2=B(1:b);

            B=\[B1;B2\];

            %% 步骤三 %%

            %再只留波峰波谷,防止拼接处出现不合理的数据  ??

            A=B;m=length(B);

            for i=2:1:m-1

               if A(i-1)<A(i)&&A(i)<A(i+1)

                   B(i)=NaN;

               elseif A(i-1)>A(i)&&A(i)>A(i+1)

                   B(i)=NaN;

               end

            end

            B(isnan(B))=\[\];n=length(B);

            %%%%%%%%%%%%%%%%%%%%%%%%  B为改造后载荷时间历程  n为B中波峰波谷的个数

            %% 步骤四 %%

            %画出改造好的载荷时间历程折线图

            figure('Name','载荷谱');

            plot(1:n,B,'-k')

            legend('重组过的载荷时间历程');   %右上角标注

            xlabel('时间')  %x轴坐标描述

            ylabel('载荷') %y轴坐标描述

            xlim(\[0,10000\]);

            ylim(\[0,20000\]);

            xticks(0:1000:10000);

            yticks(-20000:1000:20000);

            grid on

            %% 步骤五 %%

            %雨流计数,输出结果矩阵c包括计数count、范围range、均值mean、单次循环载荷起点start、单词循环载荷终点end%

            \[c,hist,edges,rmm,idx\] = rainflow(B);

            TT = array2table(c,'VariableNames',{'Count','Range','Mean','Start','End'});%计数结果指标

            %% 步骤六 %%

            %绘制均值、幅值、循环次数的三维柱形图

            figure('Name','三维图');

            rainflow(B)

符合ASTM标准的雨流计数法及其不同的改进方法的更多相关文章

  1. Python中将array类型不按科学计数法存在文件中的方法

    直接上代码: from numpy import *import numpy as npDrug_array = zeros((708,708),dtype = int)f = open('D:\ma ...

  2. java中Double类数字太大时页面正常显示而不要用科学计数法

    /** * 当浮点型数据位数超过10位之后,数据变成科学计数法显示.用此方法可以使其正常显示. * @param value * @return Sting */ public static Stri ...

  3. Linux下科学计数法(e)转化为数字的方法 [shell中几种数字计算说明]

    科学计数法使用e标识数值,将科学计算学转化为数字的思路:按e右边的数字移动小数点位数.e右边的数字如果是负数,则向左移动小数点.示例如下: 1.2345678e2 = 123.45678 1.2345 ...

  4. Java中怎么把科学计数法显示出全部数字

    如果想去除科学计数法显示可以用如下方法处理: /** * 把科学计数法显示出全部数字 * @param d */ public static String object2Str(Object d) { ...

  5. python 全栈开发,Day48(标准文档流,块级元素和行内元素,浮动,margin的用法,文本属性和字体属性)

    昨日内容回顾 高级选择器: 后代选择 : div p 子代选择器 : div>p 并集选择器: div,p 交集选择器: div.active 属性选择器: [属性~='属性值'] 伪类选择器 ...

  6. C++:标准I/O流

    标准I/O对象:cin,cout,cerr,clog cout; //全局流对象 输出数据到显示器 cin; //cerr没有缓冲区 clog有缓冲区 cerr; //标准错误 输出数据到显示器 cl ...

  7. 2006Jam的计数法

    题目描述 Description Jam是个喜欢标新立异的科学怪人.他不使用阿拉伯数字计数,而是使用小写英文字母计数,他觉得这样做,会使世界更加丰富多彩.在他的计数法中,每个数字的位数都是相同的(使用 ...

  8. 1140 Jam的计数法

    1140 Jam的计数法 2006年NOIP全国联赛普及组  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold 题解  查看运行结果     题目描述 Descri ...

  9. Jam的计数法(codevs 1140)

    题目描述 Description Jam是个喜欢标新立异的科学怪人.他不使用阿拉伯数字计数,而是使用小写英文字母计数,他觉得这样做,会使世界更加丰富多彩.在他的计数法中,每个数字的位数都是相同的(使用 ...

  10. Codevs 1140 Jam的计数法 2006年NOIP全国联赛普及组

    1140 Jam的计数法 2006年NOIP全国联赛普及组 传送门 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description Jam是个喜欢标 ...

随机推荐

  1. macOS 磁盘设备文件命名规则

    macOS 系统使用不同于 Linux 的磁盘设备命名规则.在 macOS 中,磁盘设备和分区被命名并通过 /dev 目录访问,类似于 Linux 和 UNIX 系统.但是,macOS的命名规则遵循特 ...

  2. 专业级语义搜索优化:利用 Cohere AI、BGE Re-Ranker 及 Jina Reranker 实现精准结果重排

    专业级语义搜索优化:利用 Cohere AI.BGE Re-Ranker 及 Jina Reranker 实现精准结果重排 1. 简介 1.1 RAG 在说重排工具之前,我们要先了解一下 RAG. 检 ...

  3. 【YashanDB知识库】yasql登录报错:YAS-00413

    [问题分类]错误码处理 [关键字]yasql,00413 [问题描述]使用工具设置不同并发迁移数据的过程中,导致yasql登录报错:YAS-00413 [问题原因分析]工具使用与数据库使用资源超过了操 ...

  4. LeetCode题集-2 - 两数相加

    这个题目是什么意思呢?简单来说就是把两个链表平铺开,头节点对齐,然后从头开始相同的节点相加,满10则进位,进位值与下个节点继续相加,当一个链表没有节点时候则可以把没有节点当做0继续与有节点的链表继续相 ...

  5. 日志与追踪的完美融合:OpenTelemetry MDC 实践指南

    前言 在前面两篇实战文章中: OpenTelemetry 实战:从零实现分布式链路追踪 OpenTelemetry 实战:从零实现应用指标监控 覆盖了可观测中的指标追踪和 metrics 监控,下面理 ...

  6. CSS – background and styling img

    前言 之前写过一些: W3Schools 学习笔记 (2) – CSS Image Sprites W3Schools 学习笔记 (3) – CSS Styling Images & CSS ...

  7. ASP.NET Core – Program.cs and Startup.cs 小笔记

    前言 ASP.NET Core 6.0 以后, 默认模板去掉了 Program.cs 的 namespace, class 和 Startup.cs, 一开始看会有点懵. 这篇大概记入一下, prog ...

  8. 十三,Spring Boot 中注入 Servlet,Filter,Listener

    十三,Spring Boot 中注入 Servlet,Filter,Listener @ 目录 十三,Spring Boot 中注入 Servlet,Filter,Listener 1. 基本介绍 2 ...

  9. 使用BPF之前和之后生成直方图过程的对比

    以bitehist为例: 使用BPF之前: 1.在内核中:开启磁盘IO事件的插桩观测. 2.在内核中,针对每个事件:向perf缓冲区写入一条记录.如果使用了跟踪点技术(推荐方式),记录中会包含关于磁盘 ...

  10. SCHED_RR和SCHED_FIFO的区别

    SCHED_RR和SCHED_FIFO是Linux内核中用来调度进程的两种调度策略,它们有以下几点区别: 调度方式:SCHED_RR采用轮转调度方式,而SCHED_FIFO则采用先进先出调度方式. 优 ...