首页/文章/ 详情

中心差分法解动力学方程

7月前浏览6260

01      

   
算法分析    

将位移按照泰勒公式展开,得到前差分公式:
 

同样可得向后差分公式:

 

以上两式相减和相加分别得到:

 
 

以上两式忽略高阶小量,可得到    时刻速度和加速度表达式:

 
 

为了求解    时刻的位移,将    代入    时刻动力学方程

 

得到

 

其中

 
 

若已经求得    和    时刻的位移    和    ,则可以从    求得    时刻的位移。由    可知,只给定初值    和    不能求出    ,还必须确定    ,即该方法存在如何起步的问题。

在向后差分公式    中取    

 

其中    和    由初值条件给出。而    则由    求得。

中心差分法解动力学方程的算法可归纳为

(一)初始计算

  1. 形成刚度矩阵        ,质量矩阵        和阻尼矩阵        
  2. 由初值        和        求解        和        
  3. 由时间步长        计算
  4. 计算        
  5. 计算有效质量矩阵        
  6. 对        进行分解        

(二) 对每一时间步

  1. 计算        时刻的有效载荷
  2. 解        时刻位移        
  3. 如果需要,按照        计算        时刻的速度和加速度



02      

   
算例    
用中心差分法解运动方程,时间步长

   

 

其中

 

初始条件

 

将初始条件代入方程,解得

 
 
 
 
 
 
 

每个时间步长计算

 

以及

 



03      

   
编程实现    
   


# 中心差分法
# @表示矩阵乘法

import numpy as np
import matplotlib.pyplot as plt
step = 10  #求解步数
data = np.zeros( (2,step) ) # 存储各时间步长的数据
K = np.mat('6,-2;-2,4')
M = np.mat('2,0;0,1')
Q = np.mat('0;10')
a_0  = np.zeros((2,1))
velocity_0 = np.zeros((2,1))

# 求初始加速度
acceleration_0 = np.linalg.inv(M) *(Q - K @ a_0)
dt = 0.28
c0 = 1/(dt**2)
c1 = 0.5 * dt
c2 = 2 * c0
c3 = 1 / c2
a_dt = a_0 - dt * velocity_0 + c3 * acceleration_0

# 有效质量矩阵
MM = c0 * M
invMM = np.linalg.inv(MM)
TMP1 = K - c2*M 
A_t_sub_dt = a_dt
A_t = a_0 
A_t_plus_dt = np.zeros((2,1))

for i in range(step):
    TMP2 = M @ A_t_sub_dt
    QQ = Q - TMP1 @ A_t - c0 * TMP2
    A_t_plus_dt = invMM @ QQ
    data[0:,[i] ] = A_t_plus_dt 
    A_t_sub_dt = A_t
    A_t = A_t_plus_dt

#解线性方程组采用求逆的方法,计算规模大的,可以用LDLT分解.
#

time = np.zeros((step))
for i in range(step):
    t = 0.28 * (i+1)
    time[i] = t

labels =['Δt','2Δt','3Δt','4Δt','5Δt','6Δt','7Δt','8Δt','9Δt','10Δt']

fig, (ax1, ax2) = plt.subplots(21, figsize=(5,12) )
ax1.plot(time, data[0, :], 'r-')
ax1.set_xticks(time, labels)
ax1.set_ylabel('$a_1$',fontsize = 14)


ax2.plot(time, data[1, :], 'b-')
ax2.set_xticks(time, labels)
ax2.set_ylabel('$a_2$',fontsize = 14)

fig.savefig('./f429.png', dpi = 400
plt.show()

来源:数值分析与有限元编程
UM
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-04-03
最近编辑:7月前
太白金星
本科 慢慢来
获赞 5粉丝 13文章 325课程 0
点赞
收藏
作者推荐

振型叠加法解动力学方程

振型叠加法解动力学方程振型叠加法求解动力学方程由两个步骤组成:一是求解结构的固有频率和振型;二是求解结构的动力响应。本文重点讨论第二步。对于结构的运动方程 引入坐标变换 式中, 称为广义位移。此变换的意义是将 看成是 的线性组合。从数学上看,是将位移 从有限元系统的节点位移向量为基向量(物理坐标)的 维空间转换到以 为基向量(振型坐标)的 维空间。将 代入 ,两边同时乘以 ,并考虑到 关于刚度矩阵 和质量矩阵 的正交性,得到结构在以 为基向量的 维空间内的运动方程 其中 称为广义力。在 两端同时左乘 ,并令 ,可将初始条件变换成 由 可知,如果忽略阻尼影响,有限元系统的运动方程可以用相应的振型矩阵 解耦成 个互不耦合的单自由度系统运动方程。由于阻尼矩阵无法得到显式的表达式,只能近似的考虑阻尼的影响。考虑求解的方便,假设阻尼矩阵与振型矩阵正交,即 其中 是第 振型的模态阻尼比。此时 变为 个互不耦合的二阶常微分方程。 中每个方程都相当于一个单自由度系统的运动方程,可以用直接积分法求解,或者用杜哈梅积分求解。算例用振型叠加法解运动方程 其中 初始条件 (1)、由 解得广义特征对 (2)、写出互不耦合的运动方程记 由坐标变换 可得到坐标变换后的运动方程 广义坐标初始值为 , 的精确解为 进一步 ★★★★★ 往期相关 ★★★★★GUYAN缩减法求自振频率Lanczos算法求自振频率子空间迭代法求结构自振频率来源:数值分析与有限元编程

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