一个有趣结构动力学算法问题: SPECTR中的Newmark-Beta法计算反应谱发散?

实干、实践、积累、思考、创新。 一个遗留了好几年的问题,起因是一位网友找了条十分特殊的自己合成波测试 SPECTR 2015 (当时搞选波工具,SPECTR是仿Seismosignal的界面做的),结果发现Newmark法计算的反应谱结果是发散的,之所以说“特殊”,是因为其他波都没出现这个问题(其他波不同方法计算都是重合的),由于一般波测试没问题,而且默认用的逐步精确法,十分稳健,当时没太在意,就去研究其他东西去了,但是问题倒是记录到了word,一直放在硬盘的某个角落,电脑换了几轮,但记录的这个word每次都舍不得删掉,虽然极其碍眼,今天又整理硬盘,又看到了这个word,这次决定把这个word删掉,一次性解决问题,于是打开以前的代码,果然看回好几年前写的代码,写得的确丑,还有点乱,但仔细检查公式倒是没问题,那问题到底出在哪?最后灵机一动,发现问题在加速度的递推公式上,当时采用了增量法的NEWMARK递推公式,各step的加速度均通过上一步的加速度加上加速度增量逐步累加得到,而可能对于这条波,恰好出现了浮点数精度丢失。于是把加速度改为平衡方程反推,果然问题解决了!!!改天更新SPECTR 2022!!! PS:浮点数精度丢失,整型数溢出是编程中很难发现的bug,隐藏最深。Floating point precision lost and integer overflow is a hard-to-find bug in programming. 相关话题 ( Related Topics) [01]. [Tool] SPECTR – A program for Response …

SDOF-System

[地震工程] Earthquake Response Spectra [地震反应谱]

 反应谱的基本概念(Introduction to Response Spectra) 地震动反应谱:单自由度弹性系统对于某个实际地震加速度的最大反应(可以是加速度、速度和位移)和体系的自振特征(自振周期或频率和阻尼比)之间的函数关系。工程中常用到反应谱的概念,如,我们目前采用的是基于反应谱的抗震设计方法、在静力弹塑性分析的时候我们还需要用到反应谱、在动力时程分析选择地震波的时候,我们还常需要以规范的设计反应谱为参考,要求选择的地震波的反应谱和设计反应谱相比不能偏差过大。 反应谱的理论公式(Basic Equations of Response Spectra)  单自由度地震作用下的动力方程: 从公式(2-5)可知,结构的地震动响应只和 3 个变量有关:地面加速度()、结构的阻尼比(ξ)和无阻尼结构体系的圆频率(ω)。因此对于一个给定的地震动,结构的位移响应ur 是圆频率(ω)和阻尼比(ξ)的函数。根据反应谱的概念,对于特定的地震波,只要选定阻尼比ξ,结构的最大响应(包括,速度、位移和加速度)是结构频率ω的函数,对一条特定的地震波,圆频率(ω)取不同的值进行动力时程分析,将获得响应最大值作为纵坐标,圆频率(ω)为横坐标绘图,就得到反应谱曲线。 常用的地震反应谱(Commonly used Response Spectra) (1)反应谱(Response Spectra) 当最大响应分别取相对位移、相对速度、绝对加速度时,我们可获得以下反应谱: 相对位移反应谱: 相对速度反应谱: 绝对加速度反应谱: (2)伪反应谱(Pseudo-Response Spectra) 另外,工程中还常用到伪反应谱。所谓伪反应谱是指,当我们获得相对位移位移反应谱后,通过以下公式获得伪相对速度反应谱、伪绝对加速度反应谱: 伪相对速度反应谱: 伪绝对加速度反应谱: …