“简单实现单质点体系非线性动力时程分析”
半个月前看到SAUSAGE的推送 动力反应数值分析方法新手入门(附源码),小小刺激了下神经,因此也计划着抽空写一期关于动力时程分析的推文。公众号内与时程分析相关的推送也不少,感兴趣的可以看看【工具】激励响应+反应谱计算、【工具】NMDOF[非线性多自由度体系分析程序]。
点击“阅读原文”可下载本文工具THA,公众号主页回复“动力时程分析”可下载源码。
图1 THA基础界面
选用《结构动力学》(刘晶波主编)习题5.2做为本文算例。部分版本教材中质量单位出现错误,质量单位应为t。(本文算例与SAUSAGE推送 动力反应数值分析方法新手入门(附源码)相同)
图2 本文算例
弹性时程分析
基于图2算例进行动力弹性时程分析,不同积分步长下的系统响应时程曲线如图3-图5所示。不同积分步长下的单质点体系最大响应如下表所示。当积分步长为0.01s时,不同积分方法的求解结果基本相同,因此可认为0.0578m为该激励下的最大响应精确解。
利用精确解可求得在0.2s积分步下不同求解方法的相对误差,可得:杜哈梅积分与Newmark线性加速度法的精度较高,Newmark常加速度法虽无条件稳定,但精度明显低于另外两种分析方法。
图3 弹性时程分析(0.01s积分步长)
图4 弹性时程分析(0.2s积分步长)
图5 弹性时程分析(0.01s积分步长)(局部放大)
非线性时程分析
动力反应数值分析方法新手入门(附源码)利用中心差分法进行非线性求解。中心差分法求解非线性反应较为简单,仅需将计算抗力的有关项进行修改即可。当采用Newmark法进行非线性求解时,则需引入增量平衡方程,无法避免的需要将体系割线刚度替代为切向刚度,如图6所示。
图6 非线性动力响应求解简介(来源网络)
切线刚度替代割线刚度将产生误差,因此Newmark法需引入迭代求解方法来降低误差。Newton法及修正的Newton法是常见的数值迭代方法,如图7所示。Newton法采用不断变化的切线刚度,而修正的Newton则在不同的迭代步中保持刚度不变。
Newton法收敛速度快,但需在每次迭代中修改刚度矩阵;修正的Newton法在收敛速度慢,但无需修改刚度矩阵,一定程度上避免刚度退化过度引起的矩阵奇异。
图7 Newton迭代
THA采用Newmark法进行非线性求解,引入了Newton_Raphson迭代法,具体可见源码。当积分步长为0.01s时,非线性求解结果如图7所示,最大响应为0.0824m,与推送 动力反应数值分析方法新手入门(附源码)求解结果相同。
图8 非线性时程分析(0.01s积分步长)
源码简介
THA源码类图如图9所示。MainForm类主要为窗体控件提供必要的方法,包括绘图、读取文件、输出文件等:
-
若对C#绘制曲线图感兴趣,可看Draw_Response函数;
-
读取文件可看Read_File_Button_Click函数:函数采用OpenFileDialog类提供通用对话框,用户可使用对话框来指定一个或多个要打开的文件的文件名;函数采用StreamReader类实现TextReader,通过特定编码从外部文件的字节流中读取字符。
-
输出文件可看Out_Time_History函数,函数采用StreamWriter类实现TextWriter,通过特定编码向流中写入字符。
图9 THP源码类图
Tim_His_Respones是THA的主要求解类,类详细信息如下表所示。类中唯一的公有属性Response_Dict用于储存动力时程响应分析结果,键为时间,值为位移响应;类中唯一的公有方法为类的构造函数Tim_His_Respones,该构造函数包含重载,分别用于弹性时程求解和非线性时程求解。
枚举Sovle_Method是构造函数Tim_His_Respones的传参,用于确定时程分析的求解方法。Tim_His_Respones对象在构造时即完成动力时程分析,可利用对象的公用属性Response_Dict获得时程分析结果。
点击“阅读原文”可下载本文工具THA,公众号主页回复“动力时程分析”可下载源码。
若觉得本文有帮助,欢迎打赏支持作者!
下周推文将介绍如何利用PERFORM-3D、OpenSees进行单/多质点体系的非线性动力时程分析。敬请期待!
精彩回顾:
【YTO】YJK to OpenSees:剪力墙结构算例验证
-
OpenSees
【OpenSees】应力元纤维单元的Localization Issues
【OpenSees】SecAggregator为DispBC赋予剪切刚度乃无用功
-
Perform3D
-
拓扑优化
-
工具
【工具】CC-Constitution [约束混凝土本构计算工具]