项目说明文件
项目简介
本项目是一个基于MATLAB开发的抗震工程模拟程序,主要用于对三层剪切型框架结构进行非线性动力时程分析。项目核心参考了《Matlab语言在抗震工程中的应用》相关理论,实现了一个具有刚度退化特性的三线型恢复力模型(Degrading Tri-linear Model)。
该程序能够模拟钢筋混凝土结构在地震作用下的复杂弹塑性行为,包括结构从弹性阶段到开裂、再到屈服及屈服后的刚度变化,以及在循环荷载作用下指向最大变形点的刚度退化现象。通过数值积分求解各层非线性运动方程,程序可输出结构完整的地震响应数据及滞回曲线。
功能特性
- 多自由度非线性分析:针对三层剪切型框架模型,考虑层间非线性恢复力特性。
- 退化三线型恢复力模型:
* 精确定义了骨架曲线的三个阶段:弹性段(原点至开裂点)、硬化段(开裂点至屈服点)和强化段(屈服以后)。
* 实现了基于历史最大变形的刚度退化机制,能够模拟卸载和反向加载过程中的刚度损伤。
* 支持自定义各层的开裂荷载、屈服荷载、屈服后刚度比及退化指数。
- 瑞利阻尼模型:基于初始刚度矩阵进行模态分析,利用前两阶自振频率计算质量比例和刚度比例阻尼系数(Rayleigh Damping)。
- Newmark-Beta 逐步积分:采用平均加速度法($gamma=0.5, beta=0.25$)进行时域积分,结合切线刚度更新策略解决非线性方程。
- 地震波模拟:内置地震加速度时程生成功能,使用包络函数调制的随机波模拟地震动输入。
- 可视化输出:自动绘制地震波时程、各层位移响应以及层间剪力-层间位移滞回曲线。
系统要求
- MATLAB R2016a 或更高版本。
- 无需额外的工具箱(Toolbox),仅依赖MATLAB基础数学库。
使用方法
- 确保代码文件在MATLAB路径中。
- 直接运行主程序脚本。
- 程序将依次执行以下步骤:
* 定义模型参数(质量、刚度、恢复力特征参数)。
* 生成模拟地震波数据。
* 执行Newmark-Beta时间步进循环,计算每一时刻的结构响应。
* 弹出图形窗口,展示分析结果。
详细功能与算法分析
该项目的核心逻辑实现在主程序中,主要包含以下几个关键部分:
1. 模型初始化与参数定义
程序首先定义了三层结构的物理参数。质量矩阵为对角矩阵,初始弹性刚度用于后续的特征值分析以确定瑞利阻尼系数。
- 恢复力参数计算:对于每一层,设定了开裂荷载(Force Crack)和屈服荷载(Force Yield)。
* *算法细节*:程序根据初始刚度反推开裂位移,并强制设定屈服位移为开裂位移的3倍,进而动态计算开裂后至屈服前的中间刚度($K_{cy}$),确保骨架曲线的连续性。
2. 时程分析求解器 (Newmark-Beta)
程序采用无条件稳定的Newmark-Beta法进行非线性动力方程求解。
- 切线刚度更新(Tangent Stiffness Method):与传统的完全牛顿-拉夫逊迭代不同,本实现采用了增量步长内的切线刚度法。在每一个时间步开始时,程序根据上一时刻各层恢复力模型反馈的切线刚度(Tangent Stiffness),重新组装全局刚度矩阵。
- 等效荷载计算:计算包含地震惯性力、阻尼力修正项以及质量惯性力修正项的等效荷载增量。
- 运动状态更新:求解位移增量后,依据Newmark假定更新速度和加速度向量。
3. 退化三线型恢复力模型逻辑
这是本项目的核心算法模块,负责计算每一层在当前位移下的恢复力和瞬时刚度。
* 第一段:原点 -> 开裂点(初始弹性刚度 $K_c$)。
* 第二段:开裂点 -> 屈服点(刚度 $K_{cy}$)。
* 第三段:屈服点以后(刚度 $K_y = K_c times alpha_{post}$)。
* 程序利用结构体记录每一层的历史状态,包括历史最大正向位移($d_{max}$)、最大负向位移($d_{min}$)、上一以步的力和位移等。
*
加载判定:判断当前是处于骨架曲线上(这也是更新最大历史变形的时刻),还是处于骨架曲线内部的卸载/再加载循环中。
*
刚度退化:虽然代码片段在具体退化路径处截断,但根据参数定义和逻辑结构,模型旨在实现“指向最大变形点”的退化规则。即当发生卸载或反向加载时,刚度不再是初始弹性刚度,而是指向历史上达到的最大变形点(开裂或屈服后)的割线刚度,从而体现混凝土结构的刚度退化特性。
4. 辅助功能
- 刚度矩阵组装:提供了一个通用的函数,将各层层间刚度组装成全局剪切型刚度矩阵。
- 历史状态初始化:建立数据结构以跟踪每一层的非线性状态变量(如是否屈服、当前切线刚度、历史极值点)。
- 结果绘图:最后统一对计算得到的时间序列数据(加速度、位移)和状态数据(滞回环)进行可视化处理。