美文网首页
「Python与地震工程」单自由度体系求解之频域法(傅里叶变换法

「Python与地震工程」单自由度体系求解之频域法(傅里叶变换法

作者: RODS动力有限元 | 来源:发表于2023-03-25 10:45 被阅读0次
2017 年 9 月墨西哥 7.1 级地震

「Python与地震工程」单自由度体系求解之频域法(傅里叶变换法)

Baron Jean Baptiste Joseph Fourier

原理

频域法(傅里叶变换法)求解体系响应的基本流程

Baron Jean Baptiste Joseph Fourier

图中, p(t)↔P(ω) 为激励的Fourier变换对;u(t)↔U(ω) 为响应的Fourier变换对; H(iω) 为频域响应函数,对于地震作用下的单自由度体系

H\left( i\omega \right) =\frac{1}{\omega _{0}^{2}}\cdot \frac{1}{1-\left( \frac{\omega}{\omega _0} \right) ^2+i\left( 2\zeta \frac{\omega}{\omega _0} \right)}

程序代码

# mdof.py
import numpy as np
from numpy.fft import fft, ifft, fftfreq
import matplotlib.pyplot as plt


plt.style.use("ggplot")
plt.rcParams['font.sans-serif'] = ['Microsoft Yahei']
plt.rcParams['axes.unicode_minus'] = False


next2pow = lambda x: \
    int(round(2**np.ceil(np.log(x)/np.log(2.))))


def draw_response(title, ta, a, t, u):
    plt.figure(title,(12,6))
    plt.subplot(2,1,1)
    plt.plot(ta,a,label=r"输入地震波加速度时程")
    plt.grid(True)
    plt.legend()
    plt.xlim(0,t[-1])
    plt.subplot(2,1,2)
    plt.plot(t,u,label=r"SDOF体系位移响应时程")
    plt.xlabel(r"时间 (s)")
    plt.grid(True)
    plt.legend()
    plt.xlim(0,t[-1])
    plt.show()


def solve_sdof_eqwave_freq(omg, zeta, ag, dt):

    n = len(ag)
    Nfft = next2pow(n)*2 # Fourier变换数据点数取为2的整数次幂并大于等于原始数据点数的2倍 
    af = fft(ag, Nfft) # 快速Fourier变换
    f = fftfreq(Nfft, d=dt) # 离散频率点
    Omg = 2.0*np.pi*f # 离散圆频率点
    H_u = -1.0/(omg**2-Omg**2+2.*zeta*omg*Omg*1.0j) # 频响函数
    u = ifft(af*H_u, Nfft).real # 快速Fourier逆变换并取实部
    v = ifft(af*Omg*H_u, Nfft).real # 快速Fourier逆变换并取实部

    u = u[:n]
    v = v[:n]

    return u, v


if __name__ == '__main__':

    acc0 = np.loadtxt("EQ-S-3.txt") # 读取地震波
    dt = 0.005 # 时间间隔
    n = len(acc0)
    t0 = np.linspace(0.0,dt*(n-1),n)
    
    # 显示地震结束后一段时间内的自由振动衰减情况
    ne = round(n*1.2)
    t = np.linspace(0.0,dt*(ne-1),ne)
    ag = np.zeros(ne)
    ag[:n] = acc0

    omg = 2.0*np.pi # 自振圆频率
    zeta = 0.05 # 固有阻尼比

    u, v = solve_sdof_eqwave_freq(omg, zeta, ag, dt)
    draw_response("Seismic Response -- freq", t0, acc0, t, u) # 绘图

文中所用地震波下载:
EQ-S-3.txt

结果

频域法求解单自由度体系地震响应

转载本文请注明出处。「Python与地震工程」单自由度体系求解之频域法(傅里叶变换法)

本文由mdnice多平台发布

相关文章

  • 2018-09-18

    第四章 系统的频域分析法 系统的频域分析法,是通过傅里叶变换,将信号分解成多个正弦函数的和(或者积分),得到信号频...

  • 打卡~关于几种小波变化的区别

    傅立叶变换 数字图像处理的方法主要分成两种:空域分析法和频域分析法。空域分析法就是对图像矩阵进行处理;频域分析法是...

  • EQX 快速上手指南(一)线性单自由度体系减震分析

    EQX 快速上手 EQX 简介 EQX 是基于Matlab的多自由度体系地震响应求解工具箱。可以很方便地对线性/非...

  • Gabor 滤波器

    1. 傅里叶变换 傅里叶变换是线性系统分析的有力工具,提供了一种把时域信号转换到频域进行分析的途径,时域和频域之间...

  • 动态规划

    动态规划用于求解多阶段决策最优解的问题。 其基本思想与分治法类似,也是将求解问题分解为多个子问题,与分治法不同的是...

  • 图像傅里叶变换

    对图像进行傅里叶变换,分出低频和高频部分。 着重参考->分别使用numpy和pytorch进行图像傅里叶变换和频域...

  • 日更第152天

    1.2 建设工程法律、法规体系 1.2.1 建设工程法律体系 法律体系(也称为部门法体系),是指将一国的全部现行法...

  • 分治策略

    求解递归式方法 最大子数组问题 分治策略 分治法流程 伪代码 C++实现 线性解 流程 代入法求解递归式 递归树法...

  • 迭代思想

    求解一元高次方程的时候 ,用迭代法近似求解这类问题,梯度法,最小二乘法,牛顿迭代法。迭代法 用于 线性非线形方程组...

  • 《安全生产法》框架解读

    今天继续重点记忆一下新修改的《安全生产法》,对安全生产法中的重点进行记忆:安全生产法的框架体系就是总则、生产经营单...

网友评论

      本文标题:「Python与地震工程」单自由度体系求解之频域法(傅里叶变换法

      本文链接:https://www.haomeiwen.com/subject/ijfnrdtx.html