# 滞回与骨架数据处理 **Repository Path**: HawkYarn/HystereticSkeletonPrj ## Basic Information - **Project Name**: 滞回与骨架数据处理 - **Description**: 1、滞回:滞回环分解、骨架提取、耗能计算、等效阻尼比计算、割线刚度计算,等。 2、骨架:等效屈服点计算、延性系数计算,等; 3、屈服点计算:作图法、Park法、能量等效法。 - **Primary Language**: C# - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 9 - **Created**: 2022-05-25 - **Last Updated**: 2022-05-25 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 滞回与骨架数据处理 ## 介绍 * 滞回:滞回环分解、骨架提取、耗能计算、等效阻尼比计算、割线刚度计算,等。 * 骨架:等效屈服点计算、延性系数计算,等; * 屈服点计算:作图法、Park法、能量等效法。 * 滞回曲线案例详见[ColumnTest](https://gitee.com/civilwilson/HystereticSkeletonPrj/tree/master/HystereticBasic/ColumnTest) * C#使用案例详见[Example.cs](https://gitee.com/civilwilson/HystereticSkeletonPrj/blob/master/HystereticBasic/HystereticBasic/Example.cs) * Python使用案例详见[Hysteretic.py](https://gitee.com/civilwilson/HystereticSkeletonPrj/blob/master/HystereticBasic/HystereticBasic/Python/Hysteretic.py) ## C#使用说明 #### 构造滞回数据 ```C# /// /// 构造滞回数据 /// /// 滞回数据文件路径 /// 跳过行数 /// 骨架取滞回环位移最大点,否则取力最大点 /// 是否过滤等位移滞回环(仅保留第一滞回环) var dataObj = new BasicData(string filePath, int skipLine, bool isDispCtrl, bool isFilter); /// /// 构造滞回数据 /// /// 位移数据点 /// 力数据点 /// 骨架取滞回环位移最大点,否则取力最大点 /// 是否过滤等位移滞回环(仅保留第一滞回环) var dataObj = new BasicData(List dispList, List forceList, bool isDispCtrl, bool isFilter); ``` #### 滞回数据常用操作 ```C# /// /// 获得加载历史 /// /// 每个滞回环的最大位移 List histroy = dataObj.CircleSet.GetLoadingHistory(); /// /// 获得数据 /// /// 数据类型(累积面积、刚度退化系数、粘滞阻尼系数等) /// 对象数据列表 List reusltList = dataObj[DataType dataType]; /// /// 获得滞回环数据 /// /// 是否过滤等位移滞回环(仅保留第一滞回环) /// 滞回环对象列表 List circleList = dataObj.CircleSet.GetCircleList(bool isFilter); ``` #### 滞回环常用操作 ```C# // 获得第一个滞回环对象 OneCircle circle = circleList.First(); // 滞回环的最大、最小位移点,最大、最小承载力点 ForceDispBasicPair dispMaxPtr = circle.DispMaxPoint; ForceDispBasicPair dispMinPtr = circle.DispMinPoint; ForceDispBasicPair forceMaxPtr = circle.ForceMaxPoint; ForceDispBasicPair forceMinPtr = circle.ForceMinPoint; // 通过点获得对应的位移和变形 float dispMax = dispMaxPtr.Disp; float forceMax = forceMaxPtr.Force; /// /// 求滞回环面积 /// /// 面积 float A = circle.GetA(); ``` #### 骨架曲线常用操作 ```C# // 骨架曲线 ForceDispObj skeleton = dataObj.SkeletonCurveObj; /// /// 获得正向或负向骨架曲线 /// /// 是否为正向 /// 骨架曲线 ForceDispObj negSkeleton = skeleton.GetHalfSkeletonCurveObj(bool isPositive); /// /// 力位移曲线位移放缩 /// /// 放缩系数 negSkeleton.DispAmplitude(double factor); /// /// 力位移曲线力放缩 /// /// 放缩系数 negSkeleton.ForceAmplitude(double factor); //骨架曲线位移和力散点 List dispSkeletonList = negSkeleton.Disps; List forceSkeletonList = negSkeleton.Forces; ``` #### 延性系数常用操作 ```C# /// /// 构造延性系数求解器 /// /// 力位移均为+的骨架 var obj = new DuctilityData(ForceDispObj negSkeleton); /// /// 设定延性系数相关方法的计算参数 /// /// 极限承载力退化系数 /// Park法系数 obj.SetDuctilityFactor(float UltimateStrengthCo, float ParkCo); /// /// 获得延性系数 /// /// 计算方法 /// float factor = obj.GetDuctilityFactor(DuctilityMethod methodType); ``` ## python使用说明 #### 构造滞回数据 ```python # 构造滞回数据 # filePath: 滞回数据文件路径 string # skipLine: 跳过行数 int # isDispCtrl: 骨架取滞回环位移最大点,否则取力最大点 bool # isFilter: 是否过滤等位移滞回环(仅保留第一滞回环) bool dataObj = HystereticBasic.BasicData(filePath, 0, isDisp, isFilter) # 构造滞回数据 # dispList: 位移数据点 List # forceList: 力数据点 List # isDispCtrl: 骨架取滞回环位移最大点,否则取力最大点 bool # isFilter: 是否过滤等位移滞回环(仅保留第一滞回环) bool dataObj = HystereticBasic.BasicData(dispList, forceList, isDispCtrl, isFilter) ``` #### 滞回数据常用操作 ```python # 每个滞回环的最大位移 histroy = dataObj.CircleSet.GetLoadingHistory() # 获得累积耗能面积 List energyList = dataObj[HystereticBasic.DataType.Energy] # 获得刚度退化系数 List sDegradationList = dataObj[HystereticBasic.DataType.DegradCoe] # 获得每个滞回环 List # isFilter: 是否过滤等位移滞回环(仅保留第一滞回环) bool circleList = dataObj.CircleSet.GetCircleList(isFilter) ``` #### 滞回环常用操作 ```python # 获得第一个滞回环对象 circle = circleList[0]] # 滞回环的最大、最小位移点,最大、最小承载力点 dispMaxPtr = circle.DispMaxPoint dispMinPtr = circle.DispMinPoint forceMaxPtr = circle.ForceMaxPoint forceMinPtr = circle.ForceMinPoint # 通过点获得对应的位移和变形 dispMax = dispMaxPtr.Disp forceMax = forceMaxPtr.Force # 求滞回环面积 A = circle.GetA() ``` #### 骨架曲线常用操作 ```python # 骨架曲线 skeleton = dataObj.SkeletonCurveObj # 获得正向或负向骨架曲线 # isPositive: 是否为正向 bool negSkeleton = skeleton.GetHalfSkeletonCurveObj(isPositive) # 力位移曲线位移放缩 # factor: 放缩系数 float negSkeleton.DispAmplitude(factor) # 力位移曲线力放缩 # factor: 放缩系数 float negSkeleton.ForceAmplitude(factor) # 骨架曲线位移和力散点 dispSkeletonList = negSkeleton.Disps forceSkeletonList = negSkeleton.Forces ``` #### 延性系数常用操作 ```python # 构造延性系数求解器 # negSkeleton: 力位移均为+的骨架 obj = HystereticBasic.DuctilityData(negSkeleton) # 设定延性系数相关方法的计算参数 # UltimateStrengthCo: 极限承载力退化系数 float # ParkCo: Park法系数 float obj.SetDuctilityFactor(UltimateStrengthCo, ParkCo) # 获得延性系数 # methodType: 计算方法 float factor = obj.GetDuctilityFactor(DuctilityMethod methodType) ```