Skip to content

Latest commit

 

History

History
1476 lines (1018 loc) · 32.4 KB

File metadata and controls

1476 lines (1018 loc) · 32.4 KB

🕋力-位移滞回曲线分析工具

Python License PySide6

📖 文档

English 简体中文 Русский

用于分析结构循环加载试验中力-位移滞回曲线


📋 目录


🌟 概述

本应用程序专为从事结构试验数据分析的研究人员、工程师和学生设计。它提供了循环加载试验中力-位移滞回曲线的自动化分析,广泛应用于地震工程、结构动力学和材料测试领域。

能干什么?

  • 自动滞回环检测:识别并提取单个加载循环
  • 骨架曲线提取:使用两种不同方法推导骨架曲线
  • 高级平滑处理:七种插值算法
  • 综合指标计算:计算结构性能指标
  • 延性分析:七种不同的延性系数计算方法

✨ 功能特性

📊 数据分析功能

功能 描述
滞回环提取 从连续试验数据中自动识别和分离单个加载循环
骨架曲线生成 两种方法:(1) 外包络线追踪,(2) 峰值点连接
方向特定分析 分析正向、负向或同时分析两个方向
数据过滤 可选择仅保留每个位移水平的第一个循环(用于重复循环)
峰值检测 自动识别局部最大值和最小值
起始点识别 智能检测骨架曲线的原点

📈 可视化功能

  • 双绘图模式

    • 点线图:原始数据点用线连接
    • 平滑曲线图:使用高级算法插值的平滑曲线
  • 交互式控制

    • 鼠标滚轮缩放(以光标位置为中心)
    • 平移和拖动导航
    • 完整的matplotlib工具栏集成
    • 重置视图到原始范围
    • 导出高分辨率图形
  • 可自定义显示

    • 切换原始数据点显示/隐藏
    • 可调整插值点密度(100-1000点)
    • 正负曲线颜色编码
    • 标注峰值点和起始点
    • 专业网格和坐标轴格式

🔧 处理算法

七种平滑方法:

  1. PCHIP(分段三次埃尔米特插值多项式)

    • 保形插值
    • 无过冲或振荡
    • 最适合:保持数据趋势
  2. Akima(Akima样条插值)

    • 自然平滑曲线
    • 相比三次样条减少振荡
    • 最适合:在保持形状的同时减少波动
  3. 贝塞尔曲线

    • 超平滑的演示级曲线
    • 可调整控制点密度(10-100%)
    • 最适合:可视化和演示
  4. B样条(基样条)

    • 具有可调参数的超平滑曲线
    • 为了平滑性可能偏离原始点
    • 最适合:当精确性不重要时的最大平滑度
  5. Savitzky-Golay滤波器

    • 在平滑的同时保留峰值等特征
    • 可调窗口大小(奇数)
    • 最适合:在保持重要特征的同时降噪
  6. UnivariateSpline(单变量样条)

    • 通用型,具有可调平滑因子
    • s=0强制精确插值,较大的s增加平滑度
    • 最适合:灵活的平滑需求
  7. CubicSpline(三次样条)

    • 精确通过所有数据点
    • 节点处二阶导数连续
    • 最适合:具有平滑过渡的精确插值

🧮 延性计算方法

七种国际公认的方法:

方法 描述 应用
几何法 基于峰值荷载的75% 一般结构分析
能量法 基于能量耗散 基于能量的设计
Park法 基于刚度的退化准则 抗震设计(Park & Ang)
最远点法 距峰值线最大距离 保守估计
ASCE法 峰值荷载60%准则 美国抗震规范
EEEP(等效能量法) 能量等效原则 基于性能的设计
弹性屈服法 初始刚度交点 传统屈服点定义

📑 报告

三个详细的输出选项卡:

  1. 图形显示

    • 带颜色编码循环的滞回曲线
    • 骨架曲线(正向和负向)
    • 用星号标记的峰值点
    • 高亮显示的起始点
    • 交互式图例
  2. 性能指标报告

    • 文件信息
    • 位移相关指标
    • 力学性能
    • 能量耗散指标
    • 阻尼系数
    • 退化指标
    • 延性系数
  3. 逐循环详情

    • 单个循环属性表
    • 每个循环的峰值位移和力
    • 循环面积(能量耗散)
    • 统计摘要

💻 系统要求

软件要求

  • 操作系统

    • Windows 10/11(64位)
    • macOS 10.14或更高版本
    • Linux(Ubuntu 18.04+、Fedora 30+或同等版本)
  • Python:版本3.7或更高

所需Python包

版本 用途
numpy ≥1.19.0 数值计算
pandas ≥1.1.0 数据处理
PySide6 ≥6.0.0 GUI框架
matplotlib ≥3.3.0 绘图和可视化
scipy ≥1.5.0 科学计算和插值
openpyxl ≥3.0.0 Excel文件支持

🚀 安装说明

方法1:使用pip(推荐)

步骤1:安装Python

python.org下载并安装Python 3.7+

重要:安装时勾选"Add Python to PATH"

步骤2:验证安装

打开终端/命令提示符并验证:

python --version
# 应显示:Python 3.7.x或更高版本

步骤3:安装依赖

# 导航到项目目录
cd path/to/HysAnalysis_MultiLang

# 安装所有必需的包
pip install numpy pandas PySide6 matplotlib scipy openpyxl

或使用requirements文件:

pip install -r requirements.txt

步骤4:运行应用程序

python HysAnalysis_MultiLang.py

方法2:使用Conda(替代方案)

# 创建新环境
conda create -n hys_analysis python=3.9

# 激活环境
conda activate hys_analysis

# 安装包
conda install numpy pandas matplotlib scipy openpyxl
pip install PySide6

# 运行应用程序
python HysAnalysis_MultiLang.py

方法3:可移植可执行文件

Windows用户:可从发布页面下载独立可执行文件。

Mac/Linux的独立可执行版本将在未来版本中提供。


📁 数据格式要求

支持的文件格式

格式 扩展名 备注
文本 .txt 空格或制表符分隔
CSV .csv 逗号分隔值
Excel .xls, .xlsx 使用第一个工作表

数据结构

必需列(最少2列)

第1列:位移(mm)
第2列:力(N或kN)

格式示例

示例1:空格分隔的文本文件(.txt

0.00      0.00
0.12      1.23
0.24      2.45
0.36      3.67
-0.15    -1.89
-0.30    -3.78
...

示例2:制表符分隔的文本文件(.txt

0.00	0.00
0.12	1.23
0.24	2.45
0.36	3.67
-0.15	-1.89
-0.30	-3.78
...

示例3:CSV文件(.csv

0.00,0.00
0.12,1.23
0.24,2.45
0.36,3.67
-0.15,-1.89
-0.30,-3.78
...

示例4:带标题的CSV(标题将被忽略)

位移_mm,力_kN
0.00,0.00
0.12,1.23
0.24,2.45
...

示例5:Excel文件(.xlsx

     A          B
1   0.00       0.00
2   0.12       1.23
3   0.24       2.45
4   0.36       3.67
5  -0.15      -1.89
6  -0.30      -3.78
...

数据要求

必需

  • 至少10个数据点(最好100+)
  • 至少两列
  • 仅数值(除可选标题外无文本)
  • 按时间顺序排列(试验时间序列)

推荐

  • 200+数据点以获得平滑曲线
  • 一致的采样率
  • 完整的加载循环(返回到接近零)
  • 正向和负向位移

不支持

  • 多个标题或注释行
  • 数据中的非数字字符
  • 缺失值(NaN、空单元格)
  • 数据列中的日期/时间戳

数据质量提示

  1. 单位

    • 位移通常以mm为单位
    • 力以N(或kN)为单位
    • 混合单位会影响指标计算
  2. 零点

    • 第一个点应接近(0, 0)
    • 如果不是,工具会自动调整位移偏移
  3. 噪声

    • 可接受小的测量噪声
    • 如需要可使用平滑算法
    • Savitzky-Golay滤波器适用于噪声数据
  4. 采样

    • 采样率越高=曲线细节越好
    • 推荐:每个循环>100个点
    • 最小值:每个循环约20个点

预处理(自动)

工具会自动:

  • 删除重复的位移值(保留最大力)
  • 调整零点到第一次加载
  • 过滤接近零的值(<范围的0.1%)
  • 如需要按位移排序

🔬 分析方法

骨架曲线提取

方法1:外包络线

算法

  1. 从原点(0, 0)开始
  2. 对于正向:
    • 找到位移开始增加的第一个点
    • 跟踪迄今为止看到的最大位移
    • 如果位移>之前最大值+阈值,则添加点
  3. 对负向重复

特点

  • 创建平滑的单调递增曲线
  • 代表绝对最大承载力
  • 大多数规范中的标准方法
  • 对单个循环变化不太敏感

最适合

  • 标准抗震分析
  • 基于规范的评估
  • 比较不同试件
  • 报告极限承载力

方法2:峰值点

算法

  1. 识别力-位移数据中的所有局部最大值(峰值)
  2. 对于正峰值:
    • 找到第1个负峰值和第2个正峰值之间在y轴上的交点
    • 将此起始点连接到每个后续正峰值
  3. 对负峰值重复

特点

  • 捕获单个循环行为
  • 可能显示非单调变化
  • 更详细的表示
  • 对测试协议敏感

最适合

  • 详细的逐循环分析
  • 退化模式研究
  • 循环行为研究
  • 非标准加载协议

延性系数计算方法

延性(μ)=极限位移/屈服位移

关键区别在于如何定义"屈服位移":

1. 几何法

定义:峰值荷载的75%处屈服

计算

$$ F_{yield} = 0.75 \times F_{peak} $$

$$ μ = D_{peak} / D_{yield} $$

其中,

$F_{yield}$ — 屈服荷载;

$F_{peak}$ — 峰值荷载;

$D_{yield}$ — 屈服位移;

$D_{peak}$ — 峰值位移。

优点

  • 简单直观
  • 实践中广泛使用
  • 易于重现

缺点

  • 75%的选择是任意的
  • 不考虑能量或刚度

典型范围:设计良好的结构为2-6

2. 能量法

定义:基于等效能量耗散

计算

$$ \text{总能量} = \text{骨架曲线下的面积} $$

$$ D_{yield} = \frac{2 \times \text{总能量}}{F_{peak}} $$

$$ \mu = \frac{D_{peak}}{D_{yield}} $$

其中,

$\text{总能量}$ — 总能量耗散;

$D_{yield}$ — 屈服位移;

$D_{peak}$ — 峰值位移;

$F_{peak}$ — 峰值荷载;

$\mu$ — 延性比。

优点

  • 基于能量(物理意义明确)
  • 考虑整体行为

缺点

  • 可能给出比几何法更高的值
  • 对曲线形状敏感

典型范围:3-8

3. Park法

定义:刚度退化到初始值的1/3

计算

$$ K_{initial} = \text{骨架曲线的初始斜率} $$

$$ K_{yield} = \frac{K_{initial}}{3} $$

$$ \text{找到当前刚度等于$K_{yield}$的位移$D_{yield}$} $$

$$ \mu = \frac{D_{peak}}{D_{yield}} $$

其中,

$K_{initial}$ — 初始刚度;

$K_{yield}$ — 屈服刚度(初始值的1/3);

$D_{yield}$ — 屈服位移;

$D_{peak}$ — 峰值位移;

$\mu$ — 延性比。

优点

  • 基于刚度退化
  • 抗震研究中常用
  • 与Park & Ang损伤模型兼容

缺点

  • 需要明确的初始线性区域
  • 可能较为保守

参考文献:Park, Y., & Ang, A. H. ‐S. (1985). Mechanistic Seismic Damage Model for Reinforced Concrete. Journal of Structural Engineering, 111(4), 722–739. https://doi.org/10.1061/(asce)0733-9445(1985)111:4(722)

典型范围:2-5

4. 最远点法

定义:距原点到峰值连线最远的点

计算

定义从原点$(0, 0)$到峰值点$(D_{peak}, F_{peak})$的直线

对于骨架曲线上的每个点$(D_i, F_i)$,计算垂直距离:

$$ d_i = \frac{|F_{peak} \cdot D_i - D_{peak} \cdot F_i|}{\sqrt{D_{peak}^2 + F_{peak}^2}} $$

$$ D_{yield} = D_i \text{ 在 } \max(d_i) \text{ 处} $$

$$ \mu = \frac{D_{peak}}{D_{yield}} $$

其中,

$D_i$ — 点$i$的位移;

$F_i$ — 点$i$的力;

$d_i$ — 点$i$到直线的垂直距离;

$D_{yield}$ — 屈服位移(在最大距离处);

$D_{peak}$ — 峰值位移;

$F_{peak}$ — 峰值力;

$\mu$ — 延性比。

优点

  • 屈服的几何解释
  • 识别明确的过渡点
  • 独立于任意阈值

缺点

  • 可能受数据噪声影响
  • 可能需要先平滑

典型范围:3-7

5. ASCE法

定义:峰值荷载的60%处屈服

计算

$$ F_{yield} = 0.60 \times F_{peak} $$

$$ \text{找到} F = F_{yield} \text{时的位移} $$

$$ \mu = \frac{D_{peak}}{D_{yield}} $$

其中,

$F_{yield}$ — 屈服荷载;

$F_{peak}$ — 峰值荷载;

$D_{yield}$ — 屈服位移;

$D_{peak}$ — 峰值位移;

$\mu$ — 延性比。

优点

  • 基于美国抗震规范
  • ASCE 41评估标准
  • 比几何法更保守

缺点

  • 仍是任意阈值
  • 与其他国际规范不同

参考文献:ASCE 41-17 (2017). Seismic Evaluation and Retrofit of Existing Buildings. American Society of Civil Engineers. https://doi.org/10.1061/9780784414859

典型范围:2-5

6. EEEP(等效能量弹塑性法)

定义:具有等效能量的双线性曲线

计算

$$ E_{actual} = \text{骨架曲线下的面积} $$

构建具有以下特征的双线性曲线:

  • 弹性段:$(0, 0) \to (D_{yield}, F_{peak})$
  • 塑性平台:从$D_{yield}$到$D_{peak}$,$F = F_{peak}$

调整$D_{yield}$直到:$E_{bilinear} = E_{actual}$

$$ \mu = \frac{D_{peak}}{D_{yield}} $$

其中,

$E_{actual}$ — 实际骨架曲线下的能量;

$E_{bilinear}$ — 等效双线性曲线下的能量;

$D_{yield}$ — 屈服位移(调整以实现能量等效);

$D_{peak}$ — 峰值位移;

$F_{peak}$ — 峰值力;

$\mu$ — 延性比。

优点

  • 能量等效(FEMA标准)
  • 基于性能的设计中常用
  • 考虑屈服后行为

缺点

  • 需要迭代
  • 计算量较大

参考文献:FEMA 356, ATC-40

典型范围:3-6

7. 弹性屈服法

定义:初始刚度线与峰值力的交点

计算

$$ K_{initial} = \text{初始弹性斜率} $$

$$ D_{yield} = \frac{F_{peak}}{K_{initial}} $$

$$ \mu = \frac{D_{peak}}{D_{yield}} $$

其中,

$K_{initial}$ — 初始弹性刚度;

$F_{peak}$ — 峰值力;

$D_{yield}$ — 屈服位移;

$D_{peak}$ — 峰值位移;

$\mu$ — 延性比。

优点

  • 最简单的方法
  • 基于弹性假设
  • 物理意义明确

缺点

  • 经常低估延性
  • 忽略实际屈服行为
  • 非常保守

典型范围:1.5-4

方法比较表

方法 复杂度 保守性 最佳应用
几何法 中等 一般分析
能量法 中等 设计优化
Park法 中等 损伤评估
最远点法 中等 中等 研究
ASCE法 规范合规性(美国)
EEEP法 中等 基于性能的设计
弹性法 非常高 快速估算

🎨 平滑算法

算法选择指南

使用峰值点连接方法绘制曲线可以获得更好的平滑效果。

需要平滑?
  ├─ 是 → 主要目标?
  │         ├─ 精确数据 → CubicSpline
  │         ├─ 保持形状 → PCHIP或Akima
  │         ├─ 最大平滑 → Bézier或BSpline
  │         ├─ 减少噪声 → Savitzky-Golay
  │         └─ 灵活性 → UnivariateSpline
  └─ 否 → 使用点线图

详细算法描述

1. PCHIP(分段三次埃尔米特)

数学基础:具有连续一阶导数的分段三次多项式

特性

  • 保形(保持单调性)
  • 点之间无过冲
  • 局部支持(改变一个点仅影响附近段)

何时使用

  • 具有单调段的数据
  • 过冲不可接受时
  • 结构测试数据(物理上真实)

2. Akima样条

数学基础:具有局部曲率估计的修正三次样条

特性

  • 比标准三次样条振荡更少
  • 外观更自然的曲线
  • 局部支持

何时使用

  • 具有平缓曲线的数据
  • 想要自然平滑时
  • 避免峰值附近振荡

3. 贝塞尔曲线

数学基础:伯恩斯坦多项式参数曲线

特性

  • 极其平滑
  • 不一定通过所有点
  • 可通过控制点调整

何时使用

  • 演示图形
  • 出版质量图表
  • 美观的平滑度>准确性时

参数

  • 控制点密度(10-100%)
    • 10%:超平滑,可能明显偏离
    • 50%:平衡
    • 100%:更接近原始数据

推荐设置

  • 演示:20-30%
  • 技术报告:40-60%
  • 数据验证:80-100%

4. B样条

数学基础:具有平滑参数的基样条

特性

  • 非常平滑的曲线
  • 控制与点的偏差
  • 可调平滑度

何时使用

  • 需要最大平滑度
  • 可接受偏离精确点
  • 艺术渲染

5. Savitzky-Golay滤波器

数学基础:移动窗口中的最小二乘多项式拟合

特性

  • 保留特征(峰值、谷值)
  • 减少高频噪声
  • 保持峰值位置

何时使用

  • 噪声数据
  • 需要保留峰值位置
  • 信号处理应用

6. UnivariateSpline(单变量样条)

数学基础:具有可调参数的平滑样条

特性

  • 平滑度和拟合之间的平衡
  • 广泛适用
  • 可调权衡

何时使用

  • 通用平滑
  • 想要精细控制时
  • 大多数情况的默认选择

7. CubicSpline(三次样条)

数学基础:具有连续二阶导数的三次多项式

特性

  • 精确通过所有点
  • 平滑过渡
  • 点之间可能振荡

何时使用

  • 需要精确插值
  • 信任所有数据点
  • 想要平滑导数

📊 性能指标

指标类别和定义

1. 位移相关指标

峰值位移(Dmax

定义:试验期间达到的最大绝对位移

$$ D_{max,positive} = max(displacement) $$

$$ D_{max,negative} = min(displacement) $$

残余变形(Dres

定义:卸载后的永久位移

$$ D_{res} = displacement_{\text{最终点}} $$

2. 力学性能

峰值荷载(Fmax

定义:试验期间的最大力

$$ F_{max,positive} = max(Force) $$

$$ F_{max,negative} = min(Force) $$

初始刚度(K0

定义:初始线弹性区域的斜率

$$ K_0 = ΔF / ΔD \text{(数据的前约5-10%)} $$

计算方法

  • 取前5-20个数据点(或数据的前10%)
  • 排除接近零的点(噪声阈值)
  • 线性回归找到斜率
割线刚度(Ksec

定义:从原点到峰值点的斜率

$$ K_{sec} = F_{max} / D_{max} $$

关系

$K_{sec} &lt; K_{0}$(总是如此,由于损伤/屈服)

比值$K_{sec}/K_{0}$表示退化程度

3. 能量指标

总滞回环面积(Etotal

定义:所有滞回环围成的面积之和

公式

$$ E_{total} = \sum_{i=1}^{n} A_i $$

$$ A_i = \oint F , dD \text{(循环}i\text{的线积分)} $$

$$ A_i = \sum_{j=1}^{m-1} \frac{1}{2}(F_j + F_{j+1})(D_{j+1} - D_j) $$

其中,

$E_{total}$ — 总滞回能量;

$A_i$ — 循环$i$的面积;

$n$ — 循环数;

$F$ — 力;

$D$ — 位移;

$m$ — 循环中的数据点数。

累积能量耗散

定义:与总滞回环面积相同

$$ E_{cumulative} = E_{total} $$

平均循环能量(Eavg

定义:每个循环的平均能量

$$ E_{avg} = \frac{E_{total}}{n_{loops}} $$

其中,

$E_{avg}$ — 平均循环能量;

$E_{total}$ — 总滞回能量;

$n_{loops}$ — 循环数。

最大循环能量(Emax

定义:单个最大循环面积

$$ E_{max} = \max(A_i) \text{ 对所有 } i $$

其中,

$E_{max}$ — 最大循环能量;

$A_i$ — 循环$i$的面积。

等效粘滞阻尼系数(ξeq

定义:耗散能量与弹性应变能的比值

$$ \xi_{eq} = \frac{E_{dissipated}}{2\pi \times E_{elastic}} $$

$$ E_{elastic} = \frac{1}{2} D_{max} F_{max} $$

其中,

$\xi_{eq}$ — 等效粘滞阻尼比;

$E_{dissipated}$ — 滞回环面积;

$E_{elastic}$ — 弹性应变能(三角形面积);

$D_{max}$ — 最大位移;

$F_{max}$ — 最大力。

单位:无量纲(通常以%表示)

参考:通常与5%阻尼(常见设计假设)比较

4. 退化指标

强度退化(SD)

定义:承载力下降的百分比

$$ SD_{positive} = \frac{F_{first} - F_{last}}{F_{first}} \times 100% $$

$$ SD_{negative} = \frac{F_{first} - F_{last}}{F_{first}} \times 100% $$

其中,

$SD_{positive}$ — 正向强度退化;

$SD_{negative}$ — 负向强度退化;

$F_{first}$ — 第一个循环的峰值力;

$F_{last}$ — 最后一个循环的峰值力。

刚度退化(KD)

定义:刚度下降的百分比

$$ KD = \frac{K_{initial} - K_{secant}}{K_{initial}} \times 100% $$

其中,

$KD$ — 刚度退化;

$K_{initial}$ — 初始刚度;

$K_{secant}$ — 割线刚度。

解释

  • 更高=更多损伤/屈服
  • 更低=更多弹性行为

注意:对于延性设计,高刚度退化是预期的且可接受的

5. 延性系数(μ)

定义:极限位移与屈服位移的比值

单位:无量纲

方法:见延性方法部分

指标关系

能量耗散 ↔ 等效阻尼
    ↕
延性 ↔ 力降低系数
    ↕
退化 ← 累积损伤

质量指标

良好的抗震性能:

  • ✓ 高延性
  • ✓ 高能量耗散
  • ✓ 高等效阻尼
  • ✓ 适度的强度退化
  • ✓ 可接受的残余变形

较差的性能:

  • ✗ 低延性
  • ✗ 低能量耗散
  • ✗ 严重的强度退化
  • ✗ 大的残余变形
  • ✗ 突然破坏(骨架曲线无平台)

⌨️ 键盘快捷键

快捷键 操作 上下文
Delete 删除选定文件 在列表中选择文件时
Ctrl + Z 撤销上次操作 文件管理操作
Ctrl + A 全选文本 在文本结果面板中
Ctrl + C 复制文本 在文本结果面板中
Ctrl + S 保存图形 图形激活时(matplotlib)
Ctrl + Home 重置图形视图 图形激活时

Matplotlib工具栏快捷键

操作
Home / H 重置原始视图
左箭头 上一个视图
右箭头 下一个视图
P 平移/缩放模式
O 缩放到矩形
S 保存图形
G 切换网格
L 切换对数/线性Y轴
K 切换对数/线性X轴

❓ 常见问题

一般问题

Q1:此工具适合哪些类型的测试?

答:任何产生力-位移数据的循环加载测试:

  • 准静态循环测试
  • 拟动力测试
  • 慢速循环测试(非高速动力测试)
  • 结构构件:梁、柱、墙、连接
  • 材料:混凝土、钢、木材、复合材料
  • 装置:阻尼器、隔震器、能量耗散器

不适合:

  • 高速冲击测试
  • 真正的动力测试(频率相关)
  • 非力学测试

Q2:我可以分析不同单位的力-变形数据吗?

答:可以,但是:

  • 工具假设位移单位为mm,力单位为N
  • 如果使用不同单位:
    • 指标值将以您的输入单位为准
    • 标签仍显示"mm"和"N"(仅外观)
    • 您负责解释结果
  • 推荐:导入前转换为mm和N

Q3:我需要多少个数据点?

答:

  • 最少:总共约50个点,每个循环约10个
  • 推荐:总共200+个点,每个循环30+个
  • 理想:总共500+个点,每个循环50+个

点数越多=曲线越平滑,指标越准确


Q4:我可以分析单调(推覆)测试吗?

答:部分可以:

  • 工具将加载数据并绘图
  • 可以提取骨架曲线
  • 计算峰值荷载和刚度
  • 但是:无滞回环(需要循环加载)
  • 能量指标将为零或不准确
  • 最好使用专门的推覆分析工具

技术问题

Q5:为什么不同的平滑算法给出不同的结果?

答:算法具有不同的数学特性:

  • 有些保留峰值(SG滤波器、PCHIP)
  • 有些优先考虑平滑度(Bézier、B样条)
  • 有些精确通过点(Cubic)
  • 权衡:平滑度↔准确性

用于分析:使用PCHIP或最小平滑 用于演示:使用适度设置的Bézier


Q6:我的延性值与手工计算不同。为什么?

答:常见原因:

  1. 不同的屈服点定义:您的方法vs软件方法
  2. 数据预处理:工具自动过滤接近零的值
  3. 骨架曲线提取:手动vs自动峰值检测
  4. 舍入:显示舍入到2-4位小数

验证:

  • 检查中间值(屈服位移、极限位移)
  • 尝试不同的延性方法

Q7:我可以导出数值数据(不仅仅是图形)吗?

答:目前:

  • 图形:可以(通过工具栏导出PNG、PDF、SVG)
  • 文本报告:从选项卡2和3复制(Ctrl+C)
  • 数值数据:无直接CSV导出

变通方法:

  • 复制文本报告
  • 粘贴到Excel
  • 使用"分列"功能

未来功能:计划直接CSV/Excel导出


Q8:工具是否考虑P-Delta效应?

答:不考虑。工具按原样分析数据。

  • 如果您的测试数据包括P-Delta,结果反映总体行为
  • 如果您想要纯构件响应,请在导入前应用P-Delta修正
  • P-Delta与构件行为的分离是用户的责任

Q9:我可以分析非对称加载的测试吗?

答:可以:

  • 工具独立处理正向和负向
  • 适当时分别计算指标
  • 如需要,使用"方向"设置聚焦一个方向
  • 非对称性在单独的正/负指标中捕获

Q10:如果我的测试从预加载(而非零)开始怎么办?

答:工具自动调整:

  • 检测第一个"加载"点
  • 减去偏移以将位移移至零原点
  • 如适当处理力偏移
  • 在选项卡2报告中检查起始点

如果调整不正确:

  • 导入前手动调整数据
  • 确保第一个点在零或接近零

数据问题

Q11:我的数据文件有3+列。使用哪些列?

答:仅前两列:

  • 第1列:位移
  • 第2列:力
  • 第3+列:忽略

确保文件中列顺序正确


Q12:我可以从ABAQUS/ANSYS/SAP2000导入数据吗?

答:如果导出为CSV/TXT格式,可以:

ABAQUS

1. Results → Field Output → Create XY Data
2. 选择位移和力
3. Save XY Data → ASCII格式

SAP2000

1. Display → Show Tables
2. 选择节点位移和力
3. Export → CSV

ANSYS

1. POST1 → List Results → Nodal Solution
2. Write to file → 位移、力
3. 格式化为空格分隔文本

然后导入导出的文件


Q13:我的测试是英寸和kip。我需要转换吗?

答:推荐:是的,转换为mm和N

如果不转换:

  • 指标将以您的单位(kip、in)为准
  • 标签将显示"N"和"mm"(误导)
  • 无计算错误,只是单位标签不匹配

转换:

1 kip = 4448.22 N
1 inch = 25.4 mm

错误问题

Q14:我得到"平滑插值失败"。怎么办?

答:这意味着算法无法处理您的数据

尝试:

  1. 切换算法:尝试PCHIP或Akima(最稳健)
  2. 减少点数:将插值点降至100
  3. 检查数据:删除重复的x值,确保排序
  4. 禁用平滑:使用点线图

如果仍然存在:您的数据可能具有与该算法不兼容的结构


Q15:为什么没有检测到滞回环?

答:环检测的要求:

  1. 数据必须有"峰值"(局部最大值)
  2. 位移必须反向
  3. 每个环至少3个点
  4. 足够的位移范围(>最大值的0.1%)

检查:

  • 测试是循环的吗?(非单调)
  • 是否有明显的峰值?
  • 位移是否变化?

查看选项卡1图形以直观检查


使用问题

Q16:我可以在论文/出版物中使用此工具吗?

答:可以!这是开源软件

请引用为:

[S. Xiao]. (2025). HysAnalysis. Force-Displacement Hysteresis Curve Analysis Tool. 
GitHub repository: [https://github.com/GarGarfie/HysAnalysis]

还要提及:

  • 软件版本
  • 使用的分析方法
  • 所做的任何自定义

Q17:我可以修改代码吗?

答:可以,它是开源的

常见修改:

  • 添加新的延性方法
  • 自定义指标计算
  • 添加导出格式
  • 与其他工具集成

如果您改进了它,请考虑回馈!


🤝 贡献指南

我们欢迎贡献!

贡献方式

  1. 报告错误

    • 开一个issue并详细描述
    • 如可能包括示例数据
    • 指定Python版本、操作系统
  2. 建议功能

    • 开一个带"功能请求"标签的issue
    • 解释用例
    • 提供示例
  3. 改进文档

    • 修正拼写错误
    • 添加示例
    • 翻译成新语言
  4. 代码贡献

    • Fork仓库
    • 创建功能分支
    • 进行更改
    • 提交拉取请求

📚 引用说明

如果您在研究中使用此工具,请引用:

@software{HysAnalysis,
  author = {[S. Xiao]},
  title = {Force-Displacement Hysteresis Curve Analysis Tool},
  year = {2025},
  publisher = {GitHub},
  url = {[https://github.com/GarGarfie/HysAnalysis]}
}

您也可以使用开源参考文献管理器如Zotero直接从此页面捕获引用。


🙏 致谢

此工具使用以下开源库:

  • NumPy:数值计算
  • Pandas:数据处理
  • PySide6:GUI框架(Python的Qt)
  • Matplotlib:可视化
  • SciPy:科学计算

⬆ 返回顶部


用❤️发电