C#编写的基于ASTM-E1049-85标准的雨流计数法

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

I基于ASTME1049-85标准的雨流计数法实现过程及其C#实现作者:simxpert2014-7-21版权声明:本文的版权归本人所有,未经许可,不可用于任何商业目的或者其他任何获利的目的,转载需注明来源。II目录一.简介.........................................................................................................................1二.雨流计数法及其具体实现过程..................................................................................12.1.获取原始载荷谱时间序列..................................................................................12.2.从原始时间序列中去除非峰谷值的数据点.........................................................22.3.用“4点法”遍历时间序列提取载荷循环.............................................................32.3.1基本概念.......................................................................................................32.3.2用4点法从时间序列提取整循环的过程.......................................................42.4对发散波进行半循环计数....................................................................................52.5对得到的整循环和半循环进行合并......................................................................52.6雨流统计的结果...................................................................................................5二.雨流计数法的C#实现..............................................................................................51.MR类的定义.............................................................................................................62.1成员变量介绍.......................................................................................................72.2成员函数介绍.......................................................................................................7三.C#代码计算结果与Matlab官方代码的计算结果对比..............................................83.1Matlab雨流统计主程序.......................................................................................8测试案例.....................................................................................................................9四.手工应用4点法进行雨流统计实例.......................................................................11附录1.C#雨流统计的主程序代码。..............................................................................151基于ASTME1049-85标准的雨流计数法实现过程及其C#实现一.简介ASTME1049-85标准介绍了雨流计数法的具体实现过程。雨流计数法的实现方法有多种,各有优缺点和应用场合。本文介绍了基于该标准的雨流计数法的具体实现过程,并用C#语言实现了雨流统计算法,并和Matlab官方提供的基于Matlab的雨流计数法的统计结果进行了对比,两者的统计结果完全吻合。本文包括四部分,第一部分介绍雨流计数法的实现步骤,第二部分介绍C#编写的雨流计数法的代码,第三部分是本文C#代码的统计结果与matlab统计结果对比。第四部分通过手工进行雨流统计的实例来讲解雨流计数法的具体实现过程。二.雨流计数法及其具体实现过程雨流计数法是从给定的载荷谱中提取出不同均值和幅值(或者范围)的循环以及该循环重复出现的次数。载荷谱通常是某个载荷随时间变化的时间序列。2.1.获取原始载荷谱时间序列载荷谱原始时间序列可以是通过测量或者仿真计算得到的结构上某一点的应力变化的时间序列。也可以是施加在结构上的某一外载荷的变化的时间序列。例如下图是用matlab产生的10000个随机数据点得到的载荷谱。22.2.从原始时间序列中去除非峰谷值的数据点进行雨流计数法的载荷时间序列是由交替出现的峰值和谷值组成,其中的数据点要么是峰值,要么是谷值,如图1所示。如果原始时间序列中包含有非峰值(谷值),必须予以剔除。图1.峰谷值组成的时间序列图2中的时间序列中就包含非峰谷值点,需要剔除。a-b-c-d是一个上升过程,中间的b,c两点不是峰值需要剔除。d-e-f是一个下降过程,中间的e点不是谷值,需要剔除掉。剔除掉所有非峰谷值点后,时间序列就只剩下a,d,f,g四个点,如图3中的红色虚线所示。图2.时间序列中含有非峰谷值点。图3.剔除非峰谷值点。32.3.用“4点法”遍历时间序列提取载荷循环2.3.1基本概念从载荷谱中任意取出4个连续的点,如果从走势上区分只可能出现如图3中所示的两种情况:上升-下降-上升,下降-上升-下降。我们把第一种情况称为升式,第二种称为降式。图3.4点时间序列片段。1).升式对于升式,考虑到4个点的相对位置,又可以细分为多种形态,这里只列出4种:如图4.图4.升式的各种不同形态。图4中的各种不同形态中,只有第一种可以提取出整循环。图5.符合要求的升式。它的具体定义是:a)上升段必须升的更高。即d点必须升到高于b点,d=b。b)下降段不能降得太低。即c点必须高于a点,c=a。4根据上面的两条定义对图4中的2,3,4这三种不满足要求的形态进行分析:形态2:d点上升时升得不够高,低于b点,不满足定义a);形态3:c点降得太低,低于a点了。不满足b)。形态4:c点降的太低,d点升的不够高。既不满足a)也不满足b)。对于上升式是否满足要求的判断,可以总结为一句话:上升必须升的更高(d必须高于b),下降不能降得太低(c不能低于a)。2)下降式下降式的情况和上升式的类似,这里不详细描述,只给出符合要求的形态,如图6所示。图6.满足要求的下降式。满足要求的形态的定义:a)下降段必须降得更低。d点必须降到低于b点,d=b。b)上升段不能升的太高。c点不能升到高于a点,c=a。对于下降式是否满足要求的判断,也可以总结为一句话:下降必须降的更低(d必须低于b),上升不能升得太高(c不能高于a)。2.3.2用4点法从时间序列提取整循环的过程2.3.1中介绍了如何判断一个4点形态是否包含整循环。可据此遍历整个载荷谱,提取整循环。4点法的具体实现步骤:从载荷谱的第1点开始,取出相邻的4个点。分别为n1,n2,n3,n4。根据前述判定法则:1)如果n1,n2,n3,n4满足要求,则得到一个整循环。该循环的均值为(n2+n3)/2,幅值为abs(n3-n2)/2。从载荷谱中去除n2,n3这两个中间点。起点保持在n1,继续取相邻的四点得到:n1,n4,n5,n6。再进行判定。2)如果n1,n2,n3,n4不满足要求,则不包含整循环。把起点往后挪一位到n2,取相邻的四点得到:n2,n3,n4,n5,再进行判定。按照上面的规则,一直到遍历完整个载荷谱。然后再对剩下的载荷谱反复地从头到尾进行遍历,一直到剩下的载荷谱找不到满足要求的4点为止。此时剩下的载荷谱就是所谓的“发散波”。按照上述规则已经无法对发散波进行处理。对发散波的处理,一般有两种办法:1)对发散波进行改造,得到新的载荷谱,再按照前面的4点法进行处理。常见的改造方法,是把发散波的起点和终点都变成最大峰值,或者都是最小谷值。5具体方法本文不详细介绍,可参阅相关文献。2)按照半循环计数,直接从发散波中提取半循环。ASTM标准中对1),2)两种方法都有介绍。本文按照第2)种方法对发散波进行处理。2.4对发散波进行半循环计数对剩下的发散波进行半循环计数。半循环计数比较简单。假定最终得到的离散波剩下N个数据点G1,G2,…GN。每相邻的两个点即可得到一个半循环,于是可得到(G1,G2),(G2,G3),…,(Gi,Gi+1),….,(GN-1,GN)这样的一组数据对。每个数据对算半个循环。循环的均值为(Gi+Gi+1)/2,幅值为abs(Gi-Gi+1)/2,与整循环唯一的差别就只能算0.5个循环。2.5对得到的整循环和半循环进行合并得到的整循环和半循环中会有一些循环的幅值和均值相同。把均值和幅值相同的循环进行合并。在实际编程的时候,设置一个小的容差值,幅值或幅值的差值在容差范围内的就认为是相同的。2.6雨流统计的结果载荷谱经过雨流统计后得到的结果应该是一系列的循环和各个循环重复的次数。可以用一个Nx3的矩阵来描述最终的统计结果:M1A1n1M2A2n2…………………….MiAini…………………..MNANnN(Mi,Ai,ni)表示该循环的均值(Mean)为Mi,幅值(Amplitude)为Ai,并且该循环在整个载荷谱中重复的次数为ni。(ni的值只可能是0.5的整数倍,比如0.5,1,1.5,2,2.5)。描述一个循环可以用均值和幅值,还可以用均值和范围(Range)来表示循环,数值上,Range是Amplitude的2倍,根据要求或个人习惯选取。二.雨流计数法的C#实现按照上述过程,在C#中实现了雨流计数法。整个算法由一个类MR和RFCout类组成。MR类定义了组成雨流统计结果的基本单元。RFCount类实现了具体的雨流计数法算法。61.MR类的定义MR类定义了组成雨流统计结果的基本单元。M代表均值Meanvalue,R代表应力(载荷)范围Range。注:在前文介绍中用的不是Range,而是Amplitude,这不影响问题的本质。MR结构有3个成员变量,sMean,sRange,fCount,分别表示均值,范围,该循环出现的次数。publicclassMR{publicdoublesMean;publicdoublesRange;publicdoublefCount;publicMR(doubleMean,doublerange,doubleCount){sMean=Mean;sRange=range;fCount=Count;}}2

1 / 17
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功