固体力学中的数值方法_Newmark算法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Newmark 算法程序计算报告
1.Newmark 算法理论基础
在~t t t +∆的时间区域内,Newmark 积分方法采用下列的假设,即
()2112t t t t t t t t
t t t t t t t t
δδαα+∆+∆+∆+∆=+-+∆⎡⎤⎣⎦⎡⎤⎛⎫
=+∆+-+∆ ⎪⎢⎥⎝⎭⎣⎦
a a a a a a a a a (1.1) 其中α和δ是按积分精度和稳定性要求决定的参数。另一方面,α和δ取不同的值则代表了不同的数值积分方案。当1/6,1/2αδ==时,(1.1)式相应于线性加速度法,因为这时他们可以由下式得到
()/ (0)t t t t t t t t ττ+∆+∆=+-∆≤≤∆a a a a (1.2)
当1/4,1/2αδ==时,Newmark 算法相应于常平均加速度法这样一种无条件稳定的积分方案。此时,t ∆内的加速度为
()1
2
t t t t t +∆+∆=
+a a a (1.3) 因此,将(1.1)式可以得到
()2
11112t t t t t t t t t ααα+∆+∆⎛⎫
=
---- ⎪∆∆⎝⎭
a a a a a (1.4) 代入到动力学平衡方程中可以得到
2
2111112 112t t t t t t t t t t t t t t t t δαααααδδδααα+∆+∆⎡⎤
⎛⎫⎛⎫++=+++-+ ⎪ ⎪⎢⎥∆∆∆∆⎝⎭⎝⎭⎣⎦⎡⎤⎛⎫⎛⎫+-+-∆ ⎪ ⎪⎢⎥
∆⎝⎭⎝⎭⎣⎦
K M C a Q M a a a C a a a (1.5)
2.Newmark 算法计算步骤
(1)形成刚度矩阵 K 、质量矩阵M 、阻尼矩阵 C 。 (2)给定0 a ,0a ,和0a
(3)选择时间步长t ∆及参数α和δ,并计算积分常数。 这里要求:()2
0.5,0.250.5δαδ≥≥+
()01232
4567111,,,121,2,1
,2c c c c t t t t c c c t c t δαααα
δδδδαα=
===-∆∆∆∆⎛⎫=-=-=∆-=∆ ⎪⎝⎭
(4)形成有效刚度矩阵01ˆˆc c + K :K =K +M C (5)三角分解ˆˆT
K
:K =LDL 对于每一个时间步长
(1)计算时间t t +∆的有效载荷
()()023145ˆt t t t t t t t t t c c c C c c c +∆+∆=++++++Q Q M a a a a a a
(2)求解时间t t +∆的位移
ˆT t t t t
+∆+∆=LDL a Q (3)计算时间t t +∆的加速度和速度
()02367t t t t t t t t t t t t t
c c c c c +∆+∆+∆+∆=---=++a a a a a a a a a
3.程序设计思路
(1) 读入质量矩阵、刚度矩阵、阻尼矩阵、载荷列向量;读入初始状态值,如初始位移、初始速度、初始加速度;读入控制变量,如时间步长、时间步; (2) 计算8个积分常数;
(3) 计算有效刚度矩阵ˆK
并对有效刚度矩阵ˆK 进行LU 分解; (4) 求解时间t t +∆的有效载荷向量ˆt t
+∆Q ; (5) 求解时间t t +∆的位移t t +∆a ;
(6) 求解时间t t +∆的的加速度t t +∆a 和速度t t +∆a (7)计算下一时刻的有效载荷向量并循环。
4.问题描述与计算结果
4.1 问题描述
一个三自由度系统。它的运动方程是
100210003014200010226-⎡⎤⎡⎤⎛⎫ ⎪⎢⎥⎢⎥-- ⎪⎢⎥⎢⎥
⎪⎢⎥⎢⎥-⎣⎦⎣⎦⎝⎭
a +a =
初始条件:当0t =时,000,0==a a 。
已知此系统的固有频率是
:
123ωωω=
==。相应的振动周期是:12310.89, 4.44, 3.628T T T ===.
4.2 计算结果
取时间步长为3/100.363t T ∆==计算得到 时间
t ∆
2t ∆
3t ∆
4t ∆
5t ∆
1a 0.0002 0.0027 0.0155 0.0589 0.1701 2a 0.0078 0.0594 0.2275 0.5997 1.2402 3a
0.3714
1.3973
2.8413
4.3935
5.7660
时间
6t ∆
7t ∆
8t ∆
9t ∆
10t ∆
1a 0.4012 0.8066 1.4227 2.2454 3.2137 2a 2.1579 3.2934 4.5282 5.7147 6.7165 3a
6.7784
7.4035
7.7604
8.0568
8.5045
附件:
DIMENSION M(3,3),C(3,3),K(3,3),CC(8) !定义质量,阻尼比,刚度,积分参数数组
DIMENSION A0(3),A1(3),A2(3),A0T(3),A1T(3),A2T(3),Q(3),P(3) !定义位移,速度,加速度,力向量DIMENSION EQK(3,3),EQQ(3) !定义有效刚度矩阵和有效载荷矩阵
DIMENSION EQC1(3),EQC2(3) !定义参数向量
PARAMETER(AA=0.25,DERTA=0.50)
DO I=1,3
A0(I)=0
A1(I)=0
A2(I)=0
END DO
A2(3)=6 !设置初始位移,初始速度,初始加速度
OPEN(5,FILE='INPUT.dat',STATUS='OLD')
OPEN(6,FILE='OUTPUT.DAT')
READ(5,*) DT !读入时间步长
READ(5,*) NUM !读入时间步数
WRITE(6,100)
100FORMAT(/2X,'dt=')
WRITE(6,110)(DT)
110FORMAT(4X,F7.4)
READ(5,*)(M(I,1),M(I,2),M(I,3),I=1,3) !读入质量矩阵
WRITE(6,120)
120FORMAT(/2X,'MASS=')
WRITE(6,130)((M(I,J),J=1,3),I=1,3)
130FORMAT(4X,3I4)
READ(5,*)(C(I,1),C(I,2),C(I,3),I=1,3) !读入阻尼矩阵
WRITE(6,140)
140FORMAT(/2X,'C=')
WRITE(6,130)((C(I,J),J=1,3),I=1,3)
READ(5,*)(K(I,1),K(I,2),K(I,3),I=1,3) !读入刚度矩阵
WRITE(6,150)
150FORMAT(/2X,'K=')
WRITE(6,130)((K(I,J),J=1,3),I=1,3)
CC(1)=1/(AA*DT*DT)
CC(2)=DERTA/(AA*DT)
CC(3)=1/(AA*DT)
CC(4)=1/(2*AA)-1
CC(5)=DERTA/AA-1
CC(6)=DT/2*(DERTA/AA-2)
CC(7)=DT*(1-DERTA)
CC(8)=DERTA*DT !计算积分常数