首页/文章/ 详情

精细积分法的算例

3小时前浏览1

 

对于一个单自由度的体系,质量  ,刚度  ,阻尼比为  。初始状态下 体系的处于静止状态,当  时刻作用一个大小为  的简谐荷载,作用时间为  ,求体系的位移时程,并将结果与采用  解析积分法作比较。

 积分的基本原理是将任意载荷视为一系列脉冲激励的叠加,系统的响应可以表示成对这些脉冲激励的响应函数的叠加。在单自由度系统中,  积分的形式为:

 

其中,  是系统在时间  的位移响应,  是外载荷函数,   是质量,   是无阻尼自然频率,  为有阻尼时结构的频率,  是阻尼比‌.

  
import scipy.integrate as integrate
import matplotlib.pyplot as plt
import numpy as np


defcompute_t(n, H, eta):
    ## 计算矩阵T
    N = 20
    tau = eta/(2**N)
    H_tau1 = H*tau
    H_tau2 = H @ H_tau1 *tau
    H_tau3 = H @ H_tau2 *tau
    H_tau4 = H @ H_tau3 *tau
    T_a = H_tau1 + H_tau2/2.0 + H_tau3/6.0 + H_tau4/24.0
    for i inrange(N):
        T_a = 2.0*T_a + T_a @ T_a

    T = np.eye(n) + T_a  

    return T 

defprecise_integration_solver( H,F,ug,step,dt):
    # 精细积分法
    invH = np.linalg.inv(H)
    T = compute_t(2, H, dt)

    x  = np.zeros((step, 2))
    xi = np.zeros(2)

    for i inrange(step-1):
        r0 = -F*(-ug[i])
        r1 = -F*(-ug[i+1]+ug[i]) / dt

        xi = T.dot(xi+invH.dot(r0+invH.dot(r1))) - invH.dot(r0+invH.dot(r1)+dt*r1)
        x[i,:] = xi

    u = x[:,0]
    return u


# 杜哈梅积分函数
deffunc(tau):   
    return np.sin(tau) * np.exp( -zeta*omg*(t-tau) ) * np.sin(omg*(t- tau ) )

if __name__ == "__main__":
    plt.style.use("ggplot")
    plt.rcParams['font.sans-serif'] = ['MiSans']    # 这个字体能够支持中英文字符
    plt.rcParams['axes.unicode_minus'] = False      # 正常显示负号

    omg = 1.0          # 自振频率
    zeta = 0.05          # 固有阻尼比

      
    dt = 0.005          # 时间间隔
    t0 = np.arange(0.040.0, dt)
    step = len(t0)
    dpm = np.zeros( step )

    ug = np.sin(t0)   # 简谐荷载
    

    
    H = np.array( [ [0.0,1.0], [-omg*omg,  -2.0*zeta*omg] ] )
    F = np.array([0.01.0])

    u = precise_integration_solver( H,F,ug,step,dt)

    for i inrange(step):
        t = t0[i]
        res = integrate.quad(func,0,t)[0# 调用scipy计算杜哈梅积分

        dpm[i] = 1 / omg * res

    fig, (ax0,ax1) = plt.subplots(nrows=2, ncols=1, sharex=True, )
    
    ax0.plot(t0, ug)
    ax0.set( title= '简谐荷载')
    ax0.grid()

    ax1.plot(t0, u, label='精细积分法')
    ax1.plot(t0, dpm, linestyle='--', color='#1661ab',label='杜哈梅积分法')
    ax1.set( title= '位移时程')
    ax1.grid()
    ax1.legend(frameon=True,         # 启用边框
        framealpha=0.8,             # 设置透明度
        fancybox=False,             # 边框圆角与否
        shadow=True,                # 是否启用阴影
        facecolor='lightgrey',      # 背景颜色
        edgecolor='dimgrey',       # 边框颜色
        loc= 'upper left'

    fig.savefig("11.png",dpi=300)
    plt.show()
    

 

来源:数值分析与有限元编程
UGUMNVH
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-05-05
最近编辑:3小时前
太白金星
本科 慢慢来
获赞 12粉丝 23文章 340课程 0
点赞
收藏
作者推荐

力学概念| 推导挠度曲线的微分方程

细长梁的纯弯曲变形基于两个假设:(1)位于中性面内的纵轴的长度不变;(2)在变形过程中,梁的所有横截面保持平面并垂直于纵轴(图1)。 ▲图1 根据上述假设,现在考虑弯矩如何使沿梁长度方向一个微段 的变形,如图2所示。变形前距离中性轴为 的位置长度为 (红色位置),变形后为 。根据应变的定义 ▲图2 变形后 两端法线的交点即为曲率中心,由此确定了曲率半径 。由几何关系(2)代入(1)得即由胡克定律这表明,任意纵向纤维的正应力与它到中性层的距离成正比。在横截面上,任意点的正应力与该点到中性轴的距离成正比。亦即沿截面高度,正应力按直线规律变化,且在中性层处等于零,如图3所示。 ▲图3 绕 轴的力矩之和为式中积分式(5)可以写成式中 是梁轴线变形后的曲率。 ▲图4 讨论弯曲变形时,以变形前的梁轴线为 轴,垂直向上的轴为 轴(图4), 平面为梁的纵向对称面。在对称弯曲的情况下,变形后梁的轴线将成为 平面内的一条曲线。挠曲线上横坐标为 的任意点的纵坐标用 来表示,它代表坐标为 的横截面的形心沿 方向的位移,称为挠度。这样,挠曲线的方程式可以写成习惯上,把梁下侧受弯曲时的弯矩为正,挠曲线向下凸出,如图5所示。 ▲图5 在我们选定的坐标系中( 轴向上为正),随着弧长 的增加, 也是增加的(逆时针转动),即正增量 对应的 也是正的。根据平截面假设,弯曲变形前垂直于轴线( 轴)的横截面,变形后仍垂直于挠曲线。所以,截面转角 就是 轴与挠曲线法线的夹角。它应等于挠曲线的倾角,即等于 轴与挠曲线切线的夹角。故有 ▲图6类似的关系还有在工程问题中,梁的挠度一般都远小于跨度,因此小变形情况下,转角 也是一个非常小的角度,因此即代入(7) 有又因此由(7) 和(11)得 来源:数值分析与有限元编程

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈