目录
💡 简介:通过动力学基本定律建立基本动力学模型,求解自由振动与受迫振动下的系统响应,结合有限元分析软件,模拟上述工况并对比两种方式的求解结果。
💡 软件:Ansys Workbench 2020 R2
💡 模块:Modal (模态技术)、Harmonic Response (谐响应)、Transient Structural (瞬态动力学)
💡 仓库:https://gitee.com/npc-gitee/simulation 🚀
🔎 如理解有误,望不吝指正,感谢。
一、振动微分方程求解
1.1、物体自由振动的微分方程
图1所示为单自由度弹簧阻尼系统(自由振动),其中物体的质量为 m m m,坐标原点取其质心位置,向上为正,垂直位移为 x x x(若物体位于平衡位置的正方向,位移 x x x为正,若物体位于平衡位置的负方向,位移 x x x为负),弹簧刚度系数为 k k k,阻尼为 c c c,不计弹簧自重。
弹簧力的方向始终与位移
x
x
x 的方向相反:当
x
x
x 为正,即方向为正方向,则
−
k
x
-kx
−kx 为负,即力的方向为负方向,当
x
x
x 为负,即方向为负方向,则
−
k
x
-kx
−kx 为正,即力的方向为正方向;
阻尼力的方向始终与速度 x ˙ \dot{x} x˙ 的方向相反:当 x ˙ \dot{x} x˙ 为正,即方向为正方向,则 − c x ˙ -c\dot{x} −cx˙ 为负,即力的方向为负方向,当 x ˙ \dot{x} x˙ 为负,即方向为负方向,则 − c x ˙ -c\dot{x} −cx˙ 为正,即力的方向为正方向;
由动力学基本定律:
F
=
m
a
F=ma
F=ma,可得:
m
x
¨
=
−
k
x
−
c
x
˙
m\ddot{x}=-kx-c\dot{x}
mx¨=−kx−cx˙
结合初始条件,整理得基本动力学方程: { m x ¨ + c x ˙ + k x = 0 x ( 0 ) = x 0 , x ˙ ( 0 ) = x ˙ 0 (1-1-1) \begin{cases}m\ddot{x}+c\dot{x}+kx=0\\x(0)=x_0,\,\,\,\dot{x}(0)=\dot{x}_0\end{cases}\tag{1-1-1} {mx¨+cx˙+kx=0x(0)=x0,x˙(0)=x˙0(1-1-1)
将方程两端除以
m
m
m,得:
x
¨
+
c
m
x
˙
+
k
m
x
=
0
(1-1-2)
\ddot{x}+\dfrac{c}{m}\dot{x}+\dfrac{k}{m}x=0\tag{1-1-2}
x¨+mcx˙+mkx=0(1-1-2)
式中,令 c m = 2 n \frac{c}{m}=2n mc=2n, n n n 称为阻尼常量,令 k m = ω 0 2 \frac{k}{m}=\omega_0^2 mk=ω02, ω 0 \omega_0 ω0 称为无阻尼固有频率(常量),式(1-1-2)进一步修改为: x ¨ + 2 n x ˙ + ω o 2 x = 0 (1-1-3) \ddot{x}+2n\dot{x}+\omega_o^2x=0\tag{1-1-3} x¨+2nx˙+ωo2x=0(1-1-3)
为什么 ω 0 \omega_0 ω0 称为无阻尼固有频率 ?(见下文) 🚀
式(1-1-3)为二阶常系数齐次线性微分方程。
定理:设 x ( t ) = x 1 ( t ) x(t)=x_1(t) x(t)=x1(t) 及 x ( t ) = x 2 ( t ) x(t)=x_2(t) x(t)=x2(t) 是方程(1)的两个解,那么,对于任何常数 C 1 C_1 C1, C 2 C_2 C2, x ( t ) = C 1 x 1 ( t ) + C 2 x 2 ( t ) x(t)=C_1x_1(t)+C_2x_2(t) x(t)=C1x1(t)+C2x2(t) 仍然是(1)的解。
由此定理可知,如果能找到方程(1-1-3)的两个解
x
1
(
t
)
x_1(t)
x1(t) 及
x
2
(
t
)
x_2(t)
x2(t),且
x
1
(
t
)
/
x
2
(
t
)
x_1(t)/x_2(t)
x1(t)/x2(t) 不恒等于常数,那么:
x
(
t
)
=
C
1
x
1
(
t
)
+
C
2
x
2
(
t
)
x(t)=C_1x_1(t)+C_2x_2(t)
x(t)=C1x1(t)+C2x2(t)
就是含有两个任意常数的解,因而就是方程(1-1-3)的通解。
当 r r r 为常数时,指数函数 x = e r t x=e^{rt} x=ert 满足 x 1 ( t ) x_1(t) x1(t) 和 x 2 ( t ) x_2(t) x2(t),当 r r r取什么数值,使 x = e r t x=e^{rt} x=ert 满足方程(1-1-3)。
{ x ˙ ( t ) = r e r t x ¨ ( t ) = r 2 e r t \begin{cases}\dot{x}(t)=re^{rt}\\\ddot{x}(t)=r^2e^{rt}\end{cases} {x˙(t)=rertx¨(t)=r2ert
代入方程(1-1-3)得:
r
2
e
r
t
+
2
n
r
e
r
t
+
ω
o
2
e
r
t
=
0
→
(
r
2
+
2
n
r
+
ω
o
2
)
e
r
t
=
0
→
r
2
+
2
n
r
+
ω
o
2
=
0
r^2e^{rt}+2nre^{rt}+\omega_o^2e^{rt}=0\to (r^2+2nr+\omega_o^2)e^{rt}=0\to r^2+2nr+\omega_o^2=0
r2ert+2nrert+ωo2ert=0→(r2+2nr+ωo2)ert=0→r2+2nr+ωo2=0
解得:
r
1
,
2
=
−
n
±
n
2
−
ω
o
2
r_{1,2}=-n±\sqrt{n^2-\omega_o^2}
r1,2=−n±n2−ωo2
r r r 存在以下三种情况:
- n 2 − ω o 2 > 0 n^2-\omega_o^2>0 n2−ωo2>0:该情况称为大阻尼,则 x ( t ) = C 1 e r 1 t + C 2 e r 2 t x(t)=C_1e^{r_1t}+C_2e^{r_2t} x(t)=C1er1t+C2er2t
- n 2 − ω o 2 = 0 n^2-\omega_o^2=0 n2−ωo2=0:该情况下,阻尼等于临界阻尼( c = 2 k m c=2\sqrt{km} c=2km),这时只能得到一个特解,设 x 1 ( t ) / x 2 ( t ) x_1(t)/x_2(t) x1(t)/x2(t)不恒等于常数,即 x 2 ( t ) = e r 1 t u ( t ) x_2(t)=e^{r_1t}u(t) x2(t)=er1tu(t),代入微分方程(1-1-3),解得 u ( t ) = C a + C b t u(t)=C_a+C_bt u(t)=Ca+Cbt,不妨选取 u ( t ) = t u(t)=t u(t)=t;从而微分方程(1-1-3)的通解为: x ( t ) = C 1 e r 1 t + C 2 t e r 1 t x(t)=C_1e^{r_1t}+C_2te^{r_1t} x(t)=C1er1t+C2ter1t
-
n
2
−
ω
o
2
<
0
n^2-\omega_o^2<0
n2−ωo2<0:该情况称为小阻尼,得到一对共轭复根
α
±
β
i
\alpha±\beta i
α±βi,利用欧拉公式,得到微分方程(1-1-3)的通解为:
x
(
t
)
=
e
α
t
(
C
1
cos
β
t
+
C
2
sin
β
t
)
x(t)=e^{\alpha t}(C_1\cos\beta t+C_2\sin\beta t)
x(t)=eαt(C1cosβt+C2sinβt)
- α = − n \alpha=-n α=−n, β = ω o 2 − n 2 \beta=\sqrt{\omega_o^2-n^2} β=ωo2−n2
- 依据余弦函数和差公式,得:
x ( t ) = C 1 2 + C 2 2 e − n t cos ( ω o 2 − n 2 t + θ ) (1-1-4) x(t)=\sqrt{C_1^2+C_2^2}e^{-nt}\cos(\sqrt{\omega_o^2-n^2}t+\theta)\tag{1-1-4} x(t)=C12+C22e−ntcos(ωo2−n2t+θ)(1-1-4)
基于上面的公式推导,比较好说明为什么无阻尼的固有频率为 k / m \sqrt{k/m} k/m,以及有阻尼的固有频率是什么?
什么时固有频率?固有频率通常定义为系统(在没有阻尼(或阻尼很小)的情况下)自由振荡的频率。为什么是小阻尼情形下,那临界阻尼和大阻尼情况的呢?
由下文中临界阻尼和大阻尼情形可知,结构的振动不以振荡形式存在,而是以非振荡的形式返回到平衡位置,没有振荡特征,因此,固有频率针对于小阻尼系统。既然这样是不是存在一种结构,阻尼大于结构的临界阻尼,无论负载如何,均不会发生共振? (电流表就是利用临界阻尼特点,使指针快速到平衡位置,倒是不知道电流表会不会共振)
无阻尼是小阻尼的一种特殊情况;
三角函数的周期为 T = 2 π ω T=\frac{2\pi}{\omega} T=ω2π,则频率为 f = ω 2 π f=\frac{\omega}{2\pi} f=2πω
因此,从小阻尼情形下分析,由方程(1-1-4)知,质量块有阻尼自由振动的频率为: f = 1 2 π ω o 2 − n 2 = 1 2 π k m − c 2 4 m 2 = 1 2 π k m 1 − c 2 4 k m = 1 2 π ω o 1 − ζ 2 f=\frac{1}{2\pi}\sqrt{\omega_o^2-n^2}=\frac{1}{2\pi}\sqrt{\dfrac{k}{m}-\dfrac{c^2}{4m^2}}=\frac{1}{2\pi}\sqrt{\dfrac{k}{m}}\sqrt{1-\dfrac{c^2}{4km}}=\frac{1}{2\pi}\omega_o\sqrt{1-\zeta^2} f=2π1ωo2−n2=2π1mk−4m2c2=2π1mk1−4kmc2=2π1ωo1−ζ2
式中, ζ = c 2 k m \zeta=\frac{c}{2\sqrt{km}} ζ=2kmc 称为阻尼比,即阻尼除以临界阻尼;因此,有阻尼固有频率为 1 2 π ω o 1 − ζ 2 \frac{1}{2\pi}\omega_o\sqrt{1-\zeta^2} 2π1ωo1−ζ2;
当无阻尼情形下,即 c = 0 c=0 c=0,则 ζ = 0 \zeta=0 ζ=0,因此,无阻尼固有频率为 1 2 π ω o \frac{1}{2\pi}\omega_o 2π1ωo。
以下分情形进行讨论。
1.1.1、大阻尼情形 n 2 − ω o 2 > 0 n^2-\omega_o^2>0 n2−ωo2>0
该情形下,通解为: x ( t ) = C 1 e ( − n + n 2 − ω o 2 ) t + C 2 e ( − n − n 2 − ω o 2 ) t (1-1-5) x(t)=C_1e^{(-n+\sqrt{n^2-\omega_o^2})t}+C_2e^{(-n-\sqrt{n^2-\omega_o^2})t}\tag{1-1-5} x(t)=C1e(−n+n2−ωo2)t+C2e(−n−n2−ωo2)t(1-1-5)
当
t
=
0
t=0
t=0,
x
(
0
)
=
x
0
x(0)=x_0
x(0)=x0,
x
˙
(
0
)
=
x
˙
0
\dot{x}(0)=\dot{x}_0
x˙(0)=x˙0,代入方程(1-1-5)及其一阶导数方程,得:
{
x
0
=
C
1
+
C
2
x
˙
0
=
C
1
(
−
n
+
n
2
−
ω
o
2
)
+
C
2
(
−
n
−
n
2
−
ω
o
2
)
\begin{cases}x_0=C_1+C_2\\\dot{x}_0=C_1(-n+\sqrt{n^2-\omega_o^2})+C_2(-n-\sqrt{n^2-\omega_o^2})\end{cases}
{x0=C1+C2x˙0=C1(−n+n2−ωo2)+C2(−n−n2−ωo2)
解得:
{
C
1
=
x
˙
0
−
x
0
(
−
n
−
n
2
−
ω
o
2
)
2
n
2
−
ω
o
2
C
2
=
−
x
0
˙
+
x
0
(
−
n
+
n
2
−
ω
o
2
)
2
n
2
−
ω
o
2
\begin{cases}C_1=\dfrac{\dot{x}_0-x_0(-n-\sqrt{n^2-\omega_o^2})}{2\sqrt{n^2-\omega_o^2}}\\\\C_2=\dfrac{-\dot{x_0}+x_0(-n+\sqrt{n^2-\omega_o^2})}{2\sqrt{n^2-\omega_o^2}}\end{cases}
⎩
⎨
⎧C1=2n2−ωo2x˙0−x0(−n−n2−ωo2)C2=2n2−ωo2−x0˙+x0(−n+n2−ωo2)
因此,微分方程的解表示为:
x
(
t
)
=
x
˙
0
−
x
0
(
−
n
−
n
2
−
ω
o
2
)
2
n
2
−
ω
o
2
e
(
−
n
+
n
2
−
ω
o
2
)
t
+
−
x
0
˙
+
x
0
(
−
n
+
n
2
−
ω
o
2
)
2
n
2
−
ω
o
2
e
(
−
n
−
n
2
−
ω
o
2
)
t
x(t)=\dfrac{\dot{x}_0-x_0(-n-\sqrt{n^2-\omega_o^2})}{2\sqrt{n^2-\omega_o^2}}e^{(-n+\sqrt{n^2-\omega_o^2})t}+\dfrac{-\dot{x_0}+x_0(-n+\sqrt{n^2-\omega_o^2})}{2\sqrt{n^2-\omega_o^2}}e^{(-n-\sqrt{n^2-\omega_o^2})t}
x(t)=2n2−ωo2x˙0−x0(−n−n2−ωo2)e(−n+n2−ωo2)t+2n2−ωo2−x0˙+x0(−n+n2−ωo2)e(−n−n2−ωo2)t
设 c = 16 N ⋅ s / m c=16\,N·s/m c=16N⋅s/m, k = 39.48 N / m k=39.48\,N/m k=39.48N/m, m = 1 K g m=1\,Kg m=1Kg,则 n 2 = ( c / ( 2 m ) ) 2 = 64 n^2=(c/(2m))^2=64 n2=(c/(2m))2=64, ω o 2 = k / m = 39.48 \omega_o^2=k/m=39.48 ωo2=k/m=39.48,所以 n 2 − ω 0 2 = 4.952 > 0 n^2-\omega_0^2=4.952>0 n2−ω02=4.952>0。
同时,令 t = 0 t=0 t=0, x ( 0 ) = 1 m x(0)=1m x(0)=1m, x ˙ ( 0 ) = 0 m / s \dot{x}(0)=0m/s x˙(0)=0m/s,方程所对应的图形为:(曲线绘制代码见附录) 🚀
从变化趋势可知,在大阻尼情形下,质量块直接回到并停留在平衡位置。
1.1.2、临界阻尼情形 n 2 − ω o 2 = 0 n^2-\omega_o^2=0 n2−ωo2=0
该情形下,通解为:
x
(
t
)
=
C
1
e
−
n
t
+
C
2
t
e
−
n
t
(1-1-6)
x(t)=C_1e^{-nt}+C_2te^{-nt}\tag{1-1-6}
x(t)=C1e−nt+C2te−nt(1-1-6)
当
t
=
0
t=0
t=0,
x
(
0
)
=
x
0
x(0)=x_0
x(0)=x0,
x
˙
(
0
)
=
x
˙
0
\dot{x}(0)=\dot{x}_0
x˙(0)=x˙0,代入方程(1-1-6)及其一阶导数方程,得:
{
x
0
=
C
1
x
˙
0
=
C
1
(
−
n
)
+
C
2
\begin{cases}x_0=C_1\\\dot{x}_0=C_1(-n)+C_2\end{cases}
{x0=C1x˙0=C1(−n)+C2
解得:
{
C
1
=
x
0
C
2
=
x
˙
0
+
n
x
0
\begin{cases}C_1=x_0\\C_2=\dot{x}_0+nx_0\end{cases}
{C1=x0C2=x˙0+nx0
因此,微分方程的解表示为:
x
(
t
)
=
x
0
e
−
n
t
+
(
x
˙
0
+
n
x
0
)
t
e
−
n
t
x(t)=x_0e^{-nt}+(\dot{x}_0+nx_0)te^{-nt}
x(t)=x0e−nt+(x˙0+nx0)te−nt
设 c = 12.567 N ⋅ s / m c=12.567\,N·s/m c=12.567N⋅s/m, k = 39.48 N / m k=39.48\,N/m k=39.48N/m, m = 1 K g m=1\,Kg m=1Kg,则 n 2 = ( c / ( 2 m ) ) 2 = 39.48 n^2=(c/(2m))^2=39.48 n2=(c/(2m))2=39.48, ω o 2 = k / m = 39.48 \omega_o^2=k/m=39.48 ωo2=k/m=39.48,所以 n 2 − ω o 2 = 0 n^2-\omega_o^2=0 n2−ωo2=0
同时,令 t = 0 t=0 t=0, x ( 0 ) = 1 m x(0)=1m x(0)=1m, x ˙ ( 0 ) = 0 m / s \dot{x}(0)=0m/s x˙(0)=0m/s,方程所对应的图形为:(曲线绘制代码见附录) 🚀
在相同的初始条件下,图中为临界阻尼和大阻尼情形下的系统响应,其中虚线为大阻尼情形下系统响应,实线为临界阻尼情形下系统响应。两种变化趋势较为相似,均表现为质量块直接回到并停留在平衡位置,但是,临界阻尼回到平衡位置时间最短。
1.1.3、小阻尼情形 n 2 − ω o 2 < 0 n^2-\omega_o^2<0 n2−ωo2<0
该情形下,通解为:
x
(
t
)
=
e
−
n
t
(
C
1
cos
(
ω
o
2
−
n
2
t
)
+
C
2
sin
(
ω
o
2
−
n
2
t
)
)
(1-1-7)
x(t)=e^{-n t}(C_1\cos(\sqrt{\omega_o^2-n^2}t)+C_2\sin(\sqrt{\omega_o^2-n^2}t))\tag{1-1-7}
x(t)=e−nt(C1cos(ωo2−n2t)+C2sin(ωo2−n2t))(1-1-7)
当
t
=
0
t=0
t=0,
x
(
0
)
=
x
0
x(0)=x_0
x(0)=x0,
x
˙
(
0
)
=
x
˙
0
\dot{x}(0)=\dot{x}_0
x˙(0)=x˙0,代入方程(1-1-7)及其一阶导数方程,得:
{
x
0
=
C
1
x
˙
0
=
−
n
C
1
+
C
2
ω
o
2
−
n
2
\begin{cases}x_0=C_1\\\dot{x}_0=-nC_1+C_2\sqrt{\omega_o^2-n^2}\end{cases}
{x0=C1x˙0=−nC1+C2ωo2−n2
解得:
{
C
1
=
x
0
C
2
=
x
˙
0
+
n
x
0
ω
o
2
−
n
2
\begin{cases}C_1=x_0\\\\C_2=\dfrac{\dot{x}_0+nx_0}{\sqrt{\omega_o^2-n^2}}\end{cases}
⎩
⎨
⎧C1=x0C2=ωo2−n2x˙0+nx0
因此,微分方程的解表示为:
x
(
t
)
=
e
−
n
t
(
x
0
cos
(
ω
o
2
−
n
2
t
)
+
x
˙
0
+
n
x
0
ω
o
2
−
n
2
sin
(
ω
o
2
−
n
2
t
)
)
x(t)=e^{-nt}(x_0\cos(\sqrt{\omega_o^2-n^2}t)+\dfrac{\dot{x}_0+nx_0}{\sqrt{\omega_o^2-n^2}}\sin(\sqrt{\omega_o^2-n^2}t))
x(t)=e−nt(x0cos(ωo2−n2t)+ωo2−n2x˙0+nx0sin(ωo2−n2t))
设 c = 2 N ⋅ s / m c=2\,N·s/m c=2N⋅s/m, k = 39.48 N / m k=39.48\,N/m k=39.48N/m, m = 1 K g m=1\,Kg m=1Kg,则 n 2 = ( c / ( 2 m ) ) 2 = 1 n^2=(c/(2m))^2=1 n2=(c/(2m))2=1, ω o 2 = k / m = 39.48 \omega_o^2=k/m=39.48 ωo2=k/m=39.48,所以 n 2 − ω o 2 = − 38.48 < 0 n^2-\omega_o^2=-38.48<0 n2−ωo2=−38.48<0。
同时,令 t = 0 t=0 t=0, x ( 0 ) = 1 m x(0)=1m x(0)=1m, x ˙ ( 0 ) = 0 m / s \dot{x}(0)=0m/s x˙(0)=0m/s,方程所对应的图形为:(曲线绘制代码见附录) 🚀
从变化趋势可知,在小阻尼情形下,质量块围绕平衡位置振动,振幅衰减。
1.1.4、无阻尼情形 n = 0 n=0 n=0
n
=
0
n=0
n=0,即
c
=
0
c=0
c=0,则基本动力学方程可写成:
{
m
x
¨
+
k
x
=
0
x
(
0
)
=
x
0
,
x
˙
(
0
)
=
x
˙
0
(1-1-8)
\begin{cases}m\ddot{x}+kx=0\\x(0)=x_0,\,\,\,\dot{x}(0)=\dot{x}_0\end{cases}\tag{1-1-8}
{mx¨+kx=0x(0)=x0,x˙(0)=x˙0(1-1-8)
微分方程(1-1-8)求解可在小阻尼的基础上将
n
=
0
n=0
n=0,得:
x
(
t
)
=
C
1
cos
(
ω
o
t
)
+
C
2
sin
(
ω
o
t
)
(1-1-9)
x(t)=C_1\cos(\omega_ot)+C_2\sin(\omega_ot)\tag{1-1-9}
x(t)=C1cos(ωot)+C2sin(ωot)(1-1-9)
当
t
=
0
t=0
t=0,
x
(
0
)
=
x
0
x(0)=x_0
x(0)=x0,
x
˙
(
0
)
=
x
˙
0
\dot{x}(0)=\dot{x}_0
x˙(0)=x˙0,代入方程(1-1-9)及其一阶导数方程,得:
{
x
0
=
C
1
x
˙
0
=
C
2
ω
o
\begin{cases}x_0=C_1\\\dot{x}_0=C_2\omega_o\end{cases}
{x0=C1x˙0=C2ωo
解得:
{
C
1
=
x
0
C
2
=
x
0
˙
ω
o
\begin{cases}C_1=x_0\\\\C_2=\dfrac{\dot{x_0}}{\omega_o}\end{cases}
⎩
⎨
⎧C1=x0C2=ωox0˙
因此,微分方程的解表示为:
x
(
t
)
=
x
0
cos
(
ω
o
t
)
+
x
˙
0
ω
o
sin
(
ω
o
t
)
x(t)=x_0\cos(\omega_o t)+\dfrac{\dot{x}_0}{\omega_o}\sin(\omega_o t)
x(t)=x0cos(ωot)+ωox˙0sin(ωot)
设 k = 39.48 N / m k=39.48\,N/m k=39.48N/m, m = 1 K g m=1\,Kg m=1Kg,同时,令 x ( 0 ) = 1 m x(0)=1m x(0)=1m, x ˙ ( 0 ) = 0 m / s \dot{x}(0)=0m/s x˙(0)=0m/s,方程所对应的图形为:(曲线绘制代码见附录) 🚀
阻尼是一种能量耗散的机制,由于振动系统中阻尼为0,且没有外部能量输入,所以振动系统的运动位移没有衰减也没有增加。
1.2、物体受迫振动的微分方程
图2所示为单自由度弹簧阻尼系统(受迫振动),其中物体的质量为 m m m,坐标原点取其质心位置,向上为正,垂直位移为 x x x,弹簧刚度系数为 k k k,阻尼为 c c c,不计弹簧自重。
弹簧力始终与位移
x
x
x 方向相反,阻尼力始终与速度
x
˙
\dot{x}
x˙ 方向相反,激励
F
F
F 的方向随时间改变。
由动力学基本定律:
F
=
m
a
F=ma
F=ma,可得:
m
x
¨
=
F
−
k
x
−
c
x
˙
m\ddot{x}=F-kx-c\dot{x}
mx¨=F−kx−cx˙
结合初始条件,整理得基本动力学方程: { m x ¨ + c x ˙ + k x = F 0 sin ω t x ( 0 ) = 0 , x ˙ ( 0 ) = x ˙ (1-2-1) \begin{cases}m\ddot{x}+c\dot{x}+kx=F_0\sin\omega t\\x(0)=0,\,\,\,\dot{x}(0)=\dot{x}\end{cases}\tag{1-2-1} {mx¨+cx˙+kx=F0sinωtx(0)=0,x˙(0)=x˙(1-2-1)
对比自由振动和受迫振动,二者差别不大,多了外部激励,即 F 0 sin ω t F_0\sin\omega t F0sinωt。
方程(1-2-1)中, m x ¨ + c x ˙ + k x = F 0 sin ω t m\ddot{x}+c\dot{x}+kx=F_0\sin\omega t mx¨+cx˙+kx=F0sinωt (①)称为二阶常系数非齐次线性微分方程的一般形式, m x ¨ + c x ˙ + k x = 0 m\ddot{x}+c\dot{x}+kx=0 mx¨+cx˙+kx=0 (②)称为非齐次方程(①)所对应的齐次方程。
1.2.1、求解微分方程通解 x ˉ ( t ) \bar{x}(t) xˉ(t)
定理:设 x = x ∗ ( t ) x=x^{*}(t) x=x∗(t) 是方程(①)的解, x = x ˉ ( t ) x=\bar{x}(t) x=xˉ(t) 是方程(②)的解,那么 x = x ˉ ( t ) + x ∗ ( t ) x=\bar{x}(t)+x^{*}(t) x=xˉ(t)+x∗(t)仍是方程(①)的解。
由此定理可知,需要求解
x
ˉ
(
t
)
\bar{x}(t)
xˉ(t)和
x
∗
(
t
)
x^{*}(t)
x∗(t),
x
ˉ
(
t
)
\bar{x}(t)
xˉ(t)是方程(1-2-1)齐次方程的通解,并且这里考虑小阻尼情形,所以可得:
x
ˉ
(
t
)
=
e
−
n
t
(
C
1
cos
(
ω
o
2
−
n
2
t
)
+
C
2
sin
(
ω
o
2
−
n
2
t
)
)
(1-2-2)
\bar{x}(t)=e^{-nt}(C_1\cos(\sqrt{\omega_o^2-n^2}t)+C_2\sin(\sqrt{\omega_o^2-n^2}t))\tag{1-2-2}
xˉ(t)=e−nt(C1cos(ωo2−n2t)+C2sin(ωo2−n2t))(1-2-2)
阻尼比
ζ
=
c
2
k
m
\zeta=\frac{c}{2\sqrt{km}}
ζ=2kmc,阻尼常量
n
=
c
2
m
n=\frac{c}{2m}
n=2mc,所以
ζ
ω
o
=
c
2
k
m
⋅
k
m
=
c
2
m
=
n
\zeta\omega_o=\frac{c}{2\sqrt{km}}·\sqrt{\frac{k}{m}}=\frac{c}{2m}=n
ζωo=2kmc⋅mk=2mc=n,
ω
o
2
−
n
2
\sqrt{\omega_o^2-n^2}
ωo2−n2 为有阻尼固有频率,记作
ω
d
\omega_d
ωd,方程(1-2-2)整理得:
x
ˉ
(
t
)
=
e
−
ζ
ω
o
t
(
C
1
cos
(
ω
d
t
)
+
C
2
sin
(
ω
d
t
)
)
(1-2-3)
\bar{x}(t)=e^{-\zeta \omega_ot}(C_1\cos(\omega_dt)+C_2\sin(\omega_dt))\tag{1-2-3}
xˉ(t)=e−ζωot(C1cos(ωdt)+C2sin(ωdt))(1-2-3)
1.2.2、求解微分方程特解 x ∗ ( t ) x^{*}(t) x∗(t)
对于形如 f ( x ) = e λ x ( A cos ω r t + B sin ω r t ) f(x)=e^{\lambda x}(A\cos\omega_r t+B\sin\omega_r t) f(x)=eλx(Acosωrt+Bsinωrt),方程具有形如 x ∗ ( t ) = x k e λ x ( a cos ω r x + b sin ω r t ) x^{*}(t)=x^ke^{\lambda x}(a\cos\omega_r x+b\sin \omega_r t) x∗(t)=xkeλx(acosωrx+bsinωrt)的特解,而本方程中 f ( x ) = F 0 sin ( ω t ) f(x)=F_0\sin(\omega t) f(x)=F0sin(ωt)符合函数形式要求,其中 λ = 0 \lambda=0 λ=0, A = 0 A=0 A=0, B = F 0 B=F_0 B=F0, ω r = ω \omega_r=\omega ωr=ω;
k k k 按 λ + i ω r \lambda+i\omega_r λ+iωr 按不是特征方程的根、或是特征方程的根取0或1。
基本动力学方程的特征方程为 m r 2 + c r + k = 0 mr^2+cr+k=0 mr2+cr+k=0,由于 λ + i ω r \lambda+i\omega_r λ+iωr 不是特征根(等式左侧有虚部,等式右侧无虚部),所以应取 k = 0 k=0 k=0,故设特解为: x ∗ ( t ) = a cos ω t + b sin ω t x^{*}(t)=a\cos\omega t+b\sin\omega t x∗(t)=acosωt+bsinωt
求导得:
{
x
∗
(
t
)
′
=
−
a
ω
sin
ω
t
+
b
ω
cos
ω
t
x
∗
(
t
)
′
′
=
−
a
ω
2
cos
ω
t
−
b
ω
2
sin
ω
t
\begin{cases}x^{*}(t)^{'}=-a\omega\sin\omega t+b\omega\cos\omega t\\x^{*}(t)^{''}=-a\omega^2\cos\omega t-b\omega^2\sin\omega t\end{cases}
{x∗(t)′=−aωsinωt+bωcosωtx∗(t)′′=−aω2cosωt−bω2sinωt
代入方程(1-2-1),整理得:
(
−
m
ω
2
a
+
c
ω
b
+
k
a
)
cos
ω
t
+
(
−
m
ω
2
b
−
c
ω
a
+
k
b
)
sin
ω
t
=
F
0
sin
ω
t
(-m\omega^2a+c\omega b+ka)\cos\omega t+(-m\omega^2b-c\omega a+kb) \sin\omega t=F_0\sin\omega t
(−mω2a+cωb+ka)cosωt+(−mω2b−cωa+kb)sinωt=F0sinωt
比较两端同类项系数得:
{
−
m
ω
2
a
+
c
ω
b
+
k
a
=
0
−
m
ω
2
b
−
c
ω
a
+
k
b
=
F
0
\begin{cases}-m\omega^2a+c\omega b+ka=0\\-m\omega^2b-c\omega a+kb=F_0\end{cases}
{−mω2a+cωb+ka=0−mω2b−cωa+kb=F0
由此解的:
{
a
=
−
F
0
c
ω
(
k
−
m
ω
2
)
2
+
c
2
ω
2
b
=
F
0
(
k
−
m
ω
2
)
(
k
−
m
ω
2
)
2
+
c
2
ω
2
(1-2-4)
\begin{cases}a=-\dfrac{F_0c\omega}{(k-m\omega^2)^2+c^2\omega^2}\\\\b=\dfrac{F_0(k-m\omega^2)}{(k-m\omega^2)^2+c^2\omega^2}\end{cases}\tag{1-2-4}
⎩
⎨
⎧a=−(k−mω2)2+c2ω2F0cωb=(k−mω2)2+c2ω2F0(k−mω2)(1-2-4)
由前面知道
ζ
ω
0
=
c
2
m
\zeta \omega_0=\frac{c}{2m}
ζω0=2mc,则
c
=
2
ζ
ω
o
m
c=2\zeta\omega_om
c=2ζωom,所以
c
2
ω
2
/
k
2
=
4
ζ
2
ω
o
2
m
2
ω
2
/
k
2
=
4
ζ
2
ω
o
2
ω
2
/
ω
o
4
=
(
2
ζ
s
)
2
c^2\omega^2/k^2=4\zeta^2\omega_o^2m^2\omega^2/k^2=4\zeta^2\omega_o^2\omega^2/\omega_o^4=(2\zeta s)^2
c2ω2/k2=4ζ2ωo2m2ω2/k2=4ζ2ωo2ω2/ωo4=(2ζs)2,其中
s
=
ω
/
ω
o
s=\omega/\omega_o
s=ω/ωo;因此,将方程(1-2-4)分母提取
k
2
k^2
k2,整理得:
{
a
=
−
(
F
0
/
k
)
2
ζ
s
(
1
−
s
2
)
2
+
(
2
ζ
s
)
2
b
=
(
F
0
/
k
)
(
1
−
s
2
)
(
1
−
s
2
)
2
+
(
2
ζ
s
)
2
\begin{cases}a=-\dfrac{(F_0/k)2\zeta s}{(1-s^2)^2+(2\zeta s)^2}\\\\b=\dfrac{(F_0/k)(1-s^2)}{(1-s^2)^2+(2\zeta s)^2}\end{cases}
⎩
⎨
⎧a=−(1−s2)2+(2ζs)2(F0/k)2ζsb=(1−s2)2+(2ζs)2(F0/k)(1−s2)
因此,方程为:
x
∗
(
t
)
=
(
F
0
/
k
)
(
1
−
s
2
)
(
1
−
s
2
)
2
+
(
2
ζ
s
)
2
sin
ω
t
−
(
F
0
/
k
)
2
ζ
s
(
1
−
s
2
)
2
+
(
2
ζ
s
)
2
cos
ω
t
(1-2-5)
x^{*}(t)=\dfrac{(F_0/k)(1-s^2)}{(1-s^2)^2+(2\zeta s)^2}\sin\omega t-\dfrac{(F_0/k)2\zeta s}{(1-s^2)^2+(2\zeta s)^2}\cos\omega t\tag{1-2-5}
x∗(t)=(1−s2)2+(2ζs)2(F0/k)(1−s2)sinωt−(1−s2)2+(2ζs)2(F0/k)2ζscosωt(1-2-5)
对于方程 x p ( t ) = C 1 sin ω t + C 2 cos ω t x_p(t)=C_1\sin\omega t+C_2\cos\omega t xp(t)=C1sinωt+C2cosωt,利用正弦函数和差公式可得:
x p ( t ) = C 1 2 + C 2 2 sin ( ω t + θ o ) x_p(t)=\sqrt{C_1^2+C_2^2}\sin(\omega t+\theta_o) xp(t)=C12+C22sin(ωt+θo)
- 当 C 1 > 0 C_1>0 C1>0,则 θ o = arctan C 2 C 1 \theta_o=\arctan\dfrac{C_2}{C_1} θo=arctanC1C2;
- 当 C 1 < 0 C_1<0 C1<0, C 2 > 0 C_2>0 C2>0, 则 θ o = arctan C 2 C 1 + π \theta_o=\arctan\dfrac{C_2}{C_1}+\pi θo=arctanC1C2+π;
- 当 C 1 < 0 C_1<0 C1<0, C 2 < 0 C_2<0 C2<0,则 θ o = arctan C 2 C 1 − π \theta_o=\arctan\dfrac{C_2}{C_1}-\pi θo=arctanC1C2−π;
经计算:
- a 2 + b 2 = F 0 / k ( 1 − s 2 ) 2 + ( 2 ζ s ) 2 = F 0 k β \sqrt{a^2+b^2}=\frac{F_0/k}{\sqrt{(1-s^2)^2+(2\zeta s)^2}}=\frac{F_0}{k}\beta a2+b2=(1−s2)2+(2ζs)2F0/k=kF0β,其中 β = 1 ( 1 − s 2 ) 2 + ( 2 ζ s ) 2 \beta=\frac{1}{\sqrt{(1-s^2)^2+(2\zeta s)^2}} β=(1−s2)2+(2ζs)21 称为振幅放大因子;
- 当 b > 0 b>0 b>0,则 θ o = arctan a b = − arctan 2 ζ s 1 − s 2 \theta_o=\arctan\frac{a}{b}=-\arctan\frac{2\zeta s}{1-s^2} θo=arctanba=−arctan1−s22ζs,记 θ o = − θ \theta_o=-\theta θo=−θ;
- 当 b < 0 b<0 b<0,则 θ o = arctan a b − π = − arctan 2 ζ s 1 − s 2 − π \theta_o=\arctan\frac{a}{b}-\pi=-\arctan\frac{2\zeta s}{1-s^2}-\pi θo=arctanba−π=−arctan1−s22ζs−π,记 θ o = − θ \theta_o=-\theta θo=−θ;( a a a肯定小于0)
方程(1-2-5)整理得:
x
∗
(
t
)
=
F
0
k
β
sin
(
ω
t
−
θ
)
(1-2-6)
x^{*}(t)=\dfrac{F_0}{k}\beta\sin(\omega t-\theta)\tag{1-2-6}
x∗(t)=kF0βsin(ωt−θ)(1-2-6)
1.2.3、利用初始条件,求解系数 C 1 C_1 C1 和 C 2 C_2 C2
联立方程(1-2-3)和方程(1-2-6)得方程(1-2-1)的通解:
x
(
t
)
=
x
ˉ
(
t
)
+
x
∗
(
t
)
=
e
−
ζ
ω
o
t
(
C
1
cos
(
ω
d
t
)
+
C
2
sin
(
ω
d
t
)
)
+
F
0
k
β
sin
(
ω
t
−
θ
)
(1-2-7)
x(t)=\bar{x}(t)+x^{*}(t)=e^{-\zeta \omega_ot}(C_1\cos(\omega_dt)+C_2\sin(\omega_dt))+\dfrac{F_0}{k}\beta\sin(\omega t-\theta)\tag{1-2-7}
x(t)=xˉ(t)+x∗(t)=e−ζωot(C1cos(ωdt)+C2sin(ωdt))+kF0βsin(ωt−θ)(1-2-7)
将方程(1-2-1)可知, x ( 0 ) = x 0 x(0)=x_0 x(0)=x0, x ˙ ( 0 ) = x ˙ 0 \dot{x}(0)=\dot{x}_0 x˙(0)=x˙0,代入方程(1-2-7)得:
x 0 = C 1 − F 0 k β sin θ → C 1 = x 0 + F 0 k β sin θ x_0=C_1-\dfrac{F_0}{k}\beta\sin\theta\to C_1=x_0+\dfrac{F_0}{k}\beta\sin\theta x0=C1−kF0βsinθ→C1=x0+kF0βsinθ
x ˙ ( t ) = ( − ζ ω o ) e − ζ ω o t ( C 1 cos ω d t + C 2 sin ω d t ) + e − ζ ω o t ( − C 1 ω d sin ω d t + C 2 ω d cos ω d t ) + F 0 k β ω cos ( ω t − θ ) \dot{x}(t)=(-\zeta\omega_o)e^{-\zeta\omega_o t}(C_1\cos\omega_d t+C_2\sin\omega_d t)+e^{-\zeta \omega_o t}(-C_1\omega_d\sin\omega_d t+C_2\omega_d\cos\omega_d t)+\dfrac{F_0}{k}\beta\omega\cos(\omega t-\theta) x˙(t)=(−ζωo)e−ζωot(C1cosωdt+C2sinωdt)+e−ζωot(−C1ωdsinωdt+C2ωdcosωdt)+kF0βωcos(ωt−θ)
x ˙ 0 = − ζ ω o C 1 + C 2 ω d + F 0 k β ω cos θ \dot{x}_0=-\zeta\omega_o C_1+C_2\omega_d+\dfrac{F_0}{k}\beta\omega\cos\theta x˙0=−ζωoC1+C2ωd+kF0βωcosθ
代入
C
1
C_1
C1,得:
x
˙
0
=
−
ζ
ω
o
(
x
0
+
F
0
k
β
sin
θ
)
+
C
2
ω
d
+
F
0
k
β
ω
cos
θ
\dot{x}_0=-\zeta\omega_o (x_0+\dfrac{F_0}{k}\beta\sin\theta)+C_2\omega_d+\dfrac{F_0}{k}\beta\omega\cos\theta
x˙0=−ζωo(x0+kF0βsinθ)+C2ωd+kF0βωcosθ
解得
C
2
C_2
C2:
C
2
=
x
˙
0
ω
d
+
ζ
ω
o
ω
d
x
0
+
F
0
k
β
(
ζ
ω
o
ω
d
sin
θ
−
ω
ω
d
cos
θ
)
C_2=\dfrac{\dot{x}_0}{\omega_d}+\zeta\dfrac{\omega_o}{\omega_d}x_0+\dfrac{F_0}{k}\beta(\zeta\dfrac{\omega_o}{\omega_d}\sin\theta-\dfrac{\omega}{\omega_d}\cos\theta)
C2=ωdx˙0+ζωdωox0+kF0β(ζωdωosinθ−ωdωcosθ)
将 C 1 C_1 C1 和 C 2 C_2 C2 代入方程(1-2-7),得:
x
(
t
)
=
e
−
ζ
ω
o
t
(
x
0
cos
ω
d
t
+
x
˙
0
+
ζ
ω
o
x
0
ω
d
sin
ω
d
t
)
⏞
初始响应条件
+
F
0
k
β
e
−
ζ
ω
o
t
(
sin
θ
cos
ω
d
t
+
ω
o
ω
d
(
ζ
sin
θ
−
s
cos
θ
)
sin
ω
d
t
)
⏞
自由伴随振动
+
F
0
k
β
sin
(
ω
t
−
θ
)
⏞
受迫振动响应
x(t)=\overbrace{e^{-\zeta\omega_o t}(x_0\cos\omega_d t+\dfrac{\dot{x}_0+\zeta\omega_o x_0}{\omega_d}\sin\omega_d t)}^{初始响应条件}+\overbrace{\dfrac{F_0}{k}\beta e^{-\zeta\omega_o t}(\sin\theta\cos\omega_d t+\dfrac{\omega_o}{\omega_d}(\zeta\sin\theta-s\cos\theta)\sin\omega_d t)}^{自由伴随振动}+\overbrace{\dfrac{F_0}{k}\beta\sin(\omega t-\theta)}^{受迫振动响应}
x(t)=e−ζωot(x0cosωdt+ωdx˙0+ζωox0sinωdt)
初始响应条件+kF0βe−ζωot(sinθcosωdt+ωdωo(ζsinθ−scosθ)sinωdt)
自由伴随振动+kF0βsin(ωt−θ)
受迫振动响应
其中,(虽然前面有提到,这里汇总一下)
- ω o = k / m \omega_o=\sqrt{k/m} ωo=k/m 为无阻尼的固有频率;
- s = ω / ω o s=\omega/\omega_o s=ω/ωo;
- ζ = c / ( 2 k m ) \zeta=c/(2\sqrt{km}) ζ=c/(2km) 为阻尼比;
- ω d = ω o 1 − ζ 2 \omega_d=\omega_o\sqrt{1-\zeta^2} ωd=ωo1−ζ2 为带阻尼的固有频率;
- β = 1 ( 1 − s 2 ) 2 + ( 2 ζ s ) 2 \beta=\dfrac{1}{\sqrt{(1-s^2)^2+(2\zeta s)^2}} β=(1−s2)2+(2ζs)21 为振幅放大因子;
- θ \theta θ 为相位角;
绘制全响应曲线前需要明确,以某种参数单位输入,输出的 x ( t ) x(t) x(t)是什么单位?m? mm?
方程(1-2-1): m x ¨ + c x ˙ + k x = F 0 sin ω t m\ddot{x}+c\dot{x}+kx=F_0\sin\omega t mx¨+cx˙+kx=F0sinωt
- m m m 的单位为 K g Kg Kg;
- c c c 的单位为 N ⋅ s / m N·s/m N⋅s/m
- k k k 的单位为 N / m N/m N/m;
- F 0 F_0 F0 的单位为 N N N;
- 假设 x x x 的单位为 m m m;
- 假设 x ˙ \dot{x} x˙ 的单位为 m / s m/s m/s;
- 假设 x ¨ \ddot{x} x¨ 的单位为 m / s 2 m/s^2 m/s2;
将这些单位代入方程中: K g ⋅ m s 2 + N ⋅ s m ⋅ m s + N m ⋅ m = N + N + N = N Kg·\frac{m}{s^2}+\frac{N·s}{m}·\frac{m}{s}+\frac{N}{m}·m=N+N+N=N Kg⋅s2m+mN⋅s⋅sm+mN⋅m=N+N+N=N;符合左右两边单位相同要求。
所以, k k k、 c c c、 m m m(质量)以上述单位输入,输出单位为 m m m(米)。
全响应 x ( t ) x(t) x(t) 🚀 由三部分组成,第一部分为初始响应条件,第二部分为自由伴随振动,第三部分为受迫振动响应,前两项主要由两部分乘积组成,分别为指数函数 e − ζ ω o t e^{-\zeta\omega_o t} e−ζωot (单调递减)和三角函数(在-1~1之间变化),因此随着时间的推移,这两项振动将逐渐消失,最后形成稳定的正弦曲线形式的受迫振动(方程最后一项),如图3所示。
谐响应正是研究时间与位移关系中后面段的稳定受迫振动。
绘制全响应曲线:(曲线绘制代码见附录) 🚀
图3中,
x
(
t
)
−
1
x(t)-1
x(t)−1 为初始响应条件;
x
(
t
)
−
2
x(t)-2
x(t)−2 为自由伴随振动;
x
(
t
)
−
3
x(t)-3
x(t)−3 为为受迫振动响应,其中初始响应条件与自由振动下的小阻尼振动响应 🚀是相同。
图4中, x ( t ) x(t) x(t) 为全响应变化曲线。
1.3、 为什么激励频率与结构固有频率相近会发生振幅显著增加(共振)?
共振是一个物理学概念,指的是在特定条件下,一个系统在外部力的作用下,其振动幅度可能显著增加的现象。
随着时间的推移前两项逐渐消失,所以共振分析主要集中在受迫振动响应上:
x ∗ ( t ) = F 0 k β sin ( ω t − θ ) = F 0 k ⋅ 1 ( 1 − ω 2 ω o 2 ) 2 + ( 2 ζ ω ω o ) 2 ⋅ sin ( ω t − θ ) x^{*}(t)=\dfrac{F_0}{k}\beta\sin(\omega t-\theta)=\dfrac{F_0}{k}·\dfrac{1}{\sqrt{(1-\dfrac{\omega^2}{\omega_o^2})^2+(2\zeta \dfrac{\omega}{\omega_o})^2}}·\sin(\omega t-\theta) x∗(t)=kF0βsin(ωt−θ)=kF0⋅(1−ωo2ω2)2+(2ζωoω)21⋅sin(ωt−θ)
当系统确定后,其 k k k、 c c c、 m m m 将保持不变,进而固有频率 ω o \omega_o ωo 和阻尼比 ζ \zeta ζ 也保持不变,与外界载荷无关,因此固有频率和阻尼比是系统的固有属性。对于方程而言,当外载荷以什么形式输入, x ∗ ( t ) x^{*}(t) x∗(t)振幅显著增加?
由于 k k k、 ω o \omega_o ωo、 ζ \zeta ζ 均为常量,
- 当施加较大的 F 0 F_0 F0,则 x ∗ ( t ) x^{*}(t) x∗(t) 将变大;
- 当系统的阻尼比较小时候,外部载荷 ω \omega ω 和固有频率 ω o \omega_o ωo 相等,此时 ( 1 − ω 2 ω o 2 ) 2 + ( 2 ζ ω ω o 2 ) \sqrt{(1-\frac{\omega^2}{\omega_o^2})^2+(2\zeta\frac{\omega}{\omega_o^2})} (1−ωo2ω2)2+(2ζωo2ω) 趋近于0,那么 x ∗ ( t ) x^{*}(t) x∗(t) 将趋于无穷大,这也解释了为什么外部激励频率与固有频率相近导致振幅显著增加。
频率不是发生共振的唯一条件,激励方向也是一个重要的因素。
二、有限元模态计算验证
模态计算是用来计算线性结构的动力学特性。
动力学特性:
- 结构的固有频率;
- 结构的模态振型;(模态分析得到的变形量不是真实变形,而是比例值,谐响应和瞬态动力学是真实变形量)
- 振型参与系数;
- 有效质量;
这里通过模态计算获得结构的固有频率与前文计算所得进行比较。
由前文叙述,无阻尼的固有频率为 ω o = k m \omega_o=\sqrt{\frac{k}{m}} ωo=mk,有阻尼的固有频率为 ω d = ω o 1 − ζ 2 \omega_d = \omega_o\sqrt{1-\zeta^2} ωd=ωo1−ζ2。
令密度为 1000 K g / m 3 1000Kg/m^3 1000Kg/m3,体积为 0.001 m 3 0.001m^3 0.001m3,则质量为 1 K g 1Kg 1Kg;弹簧系数为 39.48 N / m 39.48N/m 39.48N/m,阻尼为 2 N ⋅ s / m 2N·s/m 2N⋅s/m。
计算所得:
- 无阻尼固有频率: f o = 1 2 π ω o = 1 2 π 39.48 N / m 1 K g = 1 H z f_o=\frac{1}{2\pi}\omega_o=\frac{1}{2\pi}\sqrt{\frac{39.48 N/m}{1Kg}}=1Hz fo=2π1ωo=2π11Kg39.48N/m=1Hz
- 有阻尼固有频率: f d = 1 2 π ω o 1 − ζ 2 = 1 2 π 39.48 N / m 1 K g 1 − ( 2 N ⋅ s / m 2 39.48 N / m × 1 K g ) 2 = 0.987 H z f_d=\frac{1}{2\pi}\omega_o\sqrt{1-\zeta^2}=\frac{1}{2\pi}\sqrt{\frac{39.48 N/m}{1Kg}}\sqrt{1-(\frac{2N·s/m}{2\sqrt{39.48N/m×1Kg}})^2}=0.987Hz fd=2π1ωo1−ζ2=2π11Kg39.48N/m1−(239.48N/m×1Kg2N⋅s/m)2=0.987Hz
选用模块:Modal
参考视频:例10-2 二自由度弹簧振子模态分析 🚀
2.1、无阻尼
模态计算主要步骤如下:
① 双击模块【Modal】;
② 双击Engineering Data,将密度修改为 1000 K g / m 3 1000Kg/m^3 1000Kg/m3;
③ 右键Geometry => Replace Geometry => 选择对应模型,将三维模型添加到模块下;
④ 双击Model,进入Mechanical界面,点击Solid选择材料,选择完成后物体的质量为1Kg,设置为Rigid (刚体);
⑤ Model => 右键Inset => Connections;
⑥ 选择Connection => 右键Inset => Spring =>
- 设置 Longitudinal Striffness 为 39.48 N/m(注意单位);
- 设置 Scope 为 Body-Ground;
- 设置弹簧接地端的坐标,目的使弹簧朝向与连接的物体垂直;
- 设置 Face 为物体的某一个面,之后仅这个面的垂直方向平移自由度为 free,其它5个自由度均为约束;
- 设置 Behavior 为 Rigid
⑦ 选择Connection => 右键Inset => Joint => 设置约束;(另一种约束方式:见下文 🚀)
⑧ 点击 Mesh => 右键 Generate Mesh;
⑨ 点击 Modal => 右键 Solve;
⑩ 计算完成之后,点击 Solution 查看固有频率;
有限元计算得到的模态频率与公式计算结果一致。
由于只有一个自由度,所以只有一阶固有频率。
当 Joint => Type中没有 General 选项,可以选用该种约束:
点击 Modal(A5)=> 右键 Insert => Remote Displacement =>
- 选择质量块的一个面;
- 除了Y方向平移为Free,其余均为0;
- Behavior:Rigid;
2.2、有阻尼
① 在无阻尼的设置下,输入阻尼 2 N ⋅ s / m 2N·s/m 2N⋅s/m;
② 在Analysis Settings => Solver Controls => Damped 选择 Yes;
③ 点击Modal => 右键 Solve,待计算完成,点击Solution查看固有频率 ;
有限元计算得到的模态频率与公式计算结果一致。
PS:没设置阻尼的时候,弹簧还是弹簧形状,设置阻尼后,弹簧就变成了圆柱。
三、有限元谐响应验证
什么是谐响应分析? 确定一个结构在已知频率的正弦(简谐)载荷作用下结构响应的技术。
如果载荷为非正弦类的周期载荷,谐响应做不了,需要在瞬态动力学模块中去完成。
激励输入:
- 已知大小和频率的谐波载荷(力、压力和强迫位移);
- 可以输入多种类型的载荷,作用位置、先后顺序(相位)、作用类型等均可不同,但是激励频率必需相等。
谐响应载荷输入参数要求:
- 载荷的幅值 F m a x F_{max} Fmax;
- 载荷的相位角 θ \theta θ;
- 相位角表示两个或更多载荷之间的相位移动;
- 如果只定义一个载荷,不需要定义相位角,即采用默认值0。
- 载荷的激励频率范围 f m i n < f < f m a x f_{min}<f<f_{max} fmin<f<fmax;(参考模态分析前几阶的频率,确定激励频率范围)
则输入激励为:
F i = F m a x sin ( 2 π f t + θ ) F_i = F_{max}\sin(2\pi f t+\theta) Fi=Fmaxsin(2πft+θ)
响应输出:
- 结构输出的响应的频率和激励频率相同,比如输入载荷激励频率为1Hz,输出响应的频率也是1Hz。
- 正如前文所述,该响应为受迫振动响应,不含初始响应条件和自由伴随振动。 由 全响应 x ( t ) x(t) x(t) 🚀 可知,受迫振动响应的频率正好就是激励频率。
- 对于任何结构阻尼,共振点相位角为±90°。
谐响应的输出可以得到幅频曲线图(关于振幅 z z z 和激励频率点的图)和相频曲线图(关于相位 ψ \psi ψ 和激励频率点的图)。则某个激励下输出响应为: x ( t ) = z sin ( 2 π f t + ψ ) x(t)=z\sin(2\pi ft+\psi) x(t)=zsin(2πft+ψ)
ANSYS Workbench 提供了完全法和模态叠加法(振型叠加法)两种求解方法:
- 速度较慢,求解激励频率点间隔均匀,精度不依赖于模态分析中模态求解阶数;
- 速度较快,支持共振点附近激励频率点非均匀分布求解,精度依赖于模态分析中模态求解阶数(可通过有效质量判断模态阶数是否充足);
本实例中两种方法均进行了尝试,大差不差,毕竟只有一个自由度,也就只有一阶固有频率。
3.1、基于完全法的谐响应计算
主要步骤如下:
① 模块:Harmonic Response,这个模块既可以用完全法去计算,也可以用模态叠加法去求解。
② 材料属性:同模态计算一样,将密度设置为 1000 K g / m 3 1000Kg/m^3 1000Kg/m3。
③ 模型导入:同模态计算一样,导入模型,进入Mechanical界面,选择材料,谐响应需要施加激励,而刚体无法施加,所以这里设置为柔性体。
④ 连接:同模态计算设置一样,添加 Spring (设置弹簧系数 39.48 N / m 39.48N/m 39.48N/m 和阻尼 2 N ⋅ s / m 2N·s/m 2N⋅s/m) 和 Joint。
⑤ 网格划分:为了尽可能模拟刚体效果,这里在网格划分的时候,将所有的边设置的段数为1,这样最后只有一个单元,然后一键Mesh。
⑥ 分析设置:设置激励范围、间隔点、求解方式、结构阻尼常量系数。
- Range Minimum:激励范围最小值;
- Range Maximum:激励范围最大值;
- Solution Intervals:间隔点,比如激励范围10Hz,间隔10,就是在这个频率范围内,均匀取10个激励频率点;
- Solution Method:Full,完全法;
- Constant Structural Damping Coefficient:结构阻尼常量系数
C
C
C;
- C = 2 ζ ω o m C=2\zeta\omega_o m C=2ζωom,其中 ζ \zeta ζ 为阻尼比, ω o \omega_o ωo 为固有频率, m m m 为质量,计算所得 C = 2 × 0.16 × 1 × 1 = 0.32 C=2×0.16×1×1=0.32 C=2×0.16×1×1=0.32
- 前面弹簧处设置了阻尼,这里也设置了阻尼,系统怎么处理?
- 如果只是设置1处,均能得到正确结果;
- 如果两处均设置,且输入的阻尼正确,则结果错误,振幅更小,有点两处阻尼叠加效果;
⑦ 添加载荷:输入一个Force,设置Force的作用面以及力的大小,之后就可以开始计算。
⑧ 后处理:查看Bode图和振动云图。
- Solution => Insert => Frequency Response => Stress/Strain/Deformation… 查看应力/应变/变形…的幅频曲线和相频曲线(幅频图+相频图=Bode图)
- Solution => Insert => Deformation => Total,设置查看的频率,查看模型的变形云图。
图中所示为不同激励频率下的响应,从中可以知道,在1Hz的时候振幅最大,即在1Hz的激励频率下,结构的振幅存在显著增加,结构发生共振,共振的响应为:(
2
π
∗
1
t
=
6.283
t
2\pi*1t=6.283t
2π∗1t=6.283t,
89.993
°
89.993°
89.993°约等于
π
2
=
1.571
\frac{\pi}{2}=1.571
2π=1.571)
x
(
t
)
=
79.154
sin
(
6.283
t
−
1.571
)
x(t)=79.154\sin(6.283t-1.571)
x(t)=79.154sin(6.283t−1.571)
将参数代入 全响应
x
(
t
)
x(t)
x(t) 🚀 中的受迫振动响应中,得到:
x
(
t
)
=
79.578
sin
(
6.283
t
−
1.571
)
x(t)=79.578\sin(6.283t-1.571)
x(t)=79.578sin(6.283t−1.571)
有限元计算得到的受迫振动响应与公式计算结果一致。
3.2、基于模态叠加法的谐响应计算
模态叠加法同完全法的步骤基本一致,主要步骤如下:
① 模块:Modal 和 Harmonic Response,建立二者数据关联。
② 材料属性:同完全法一样。
③ 模型导入:同完全法一样。
④ 连接:同完全法一样。
⑤ 网格划分:同完全法一样。
⑥ 模态计算:直接求解模态。
⑦ 分析设置:基本操作同完全法一样,除了:
- Solution Method,系统自动设置为 Mode Superposition 。
- Cluster Number:采用共振点附近激励频率点非均匀分布求解;
⑧ 添加载荷:同完全法一样。
⑨ 后处理:同完全法一样。
Modal 模块下的
Analysis Setting => Solver Controls => Damped:Yes
会报错:MSUP Harmonic and MSUP Transient analysis doesn't support Full Damped or Unsymmetric solver type selection of the upstream Modal analysis.
所以选No
.
同完全法不同的是,在弹簧处设置阻尼,分析设置中也设置阻尼,无论设置一处还是设置两处,计算结果一样。
图中所示为不同激励频率下的响应,从中可以知道,在1Hz的时候振幅较大(最大的在其附近,可能是模态叠加法误差导致),即在1Hz的激励频率下,结构的振幅存在显著增加,结构发生共振,共振的响应为:(
2
π
∗
1
t
=
6.283
t
2\pi*1t=6.283t
2π∗1t=6.283t,
90
°
90°
90°等于
π
2
=
1.571
\frac{\pi}{2}=1.571
2π=1.571)
x
(
t
)
=
79.154
sin
(
6.283
t
−
1.571
)
x(t)=79.154\sin(6.283t-1.571)
x(t)=79.154sin(6.283t−1.571)
同完全法的计算结果一致,同理论解同样一致。
四、有限元瞬态动力学验证
什么是瞬态动力学分析? 它是确定随时间变化载荷作用下结构响应的技术,全过程模拟结构在初始条件和外界载荷作用下的响应,不同于谐响应,瞬态动力学的响应是全响应。
瞬态动力学同样提供了两种方法:模态叠加法和完全法,基本的操作类似,参考视频中采用模态叠加法,由于模态叠加法计算的初始条件只能是速度和位移都为0,所以本示例采用完全法。
参考视频:例11-2 二自由度弹簧振子谐响应分析 🚀
主要步骤如下:
① 模块:Transient Structural。
② 材料属性:同谐响应计算一样。
③ 模型导入:同谐响应计算一样。
④ 连接:同谐响应计算一样。
⑤ 网格划分:同谐响应计算一样。
⑥ 创建 Named Selections:选择一个Node => 右键 Create Name Selection… => 命名 => OK。
⑦ 载荷步设置:为了设置初始条件非零,需要分两个载荷步,
- 第一个载荷步:
0s~0.001s
,添加节点位移(Nodal Displacement),本示例设置为1m,在【Tabular Data 】中,点击0.001s~11s
栏 => 右键 Activate/Deactivate at this step,则该栏变成灰色,表示该位移设置在第二个载荷步不起作用; - 第二个载荷步:
0.001s~11s
,添加外力载荷 sin ( 360 ∗ ( t i m e − 0.001 ) ) \sin(360*(time-0.001)) sin(360∗(time−0.001))(Y方向),在【Tabular Data 】中,点击0s~0.001s
栏 => 右键 Activate/Deactivate at this step,则该栏变成灰色,表示该载荷在第一个载荷步不起作用;
初始条件设置:
从图中黄色框框中,将0s中Y方向的位移设置为0,那么从0s到0.001s的位移为1000mm,所需时间为0.001s,所以在0.001s时刻的速度为1000m/s。最后初始条件就是:位移1m,速度为1000m/s。
若将0s中Y方向的位移设置为1000mm,那么从0s到0.001s的位移为0mm,所以在0.001s时刻的速度为0m/s。最后初始条件就是:位移1m,速度为0m/s。
外力载荷设置:
外力载荷大小为1N,频率为1Hz,考虑只有一个外力,所以相位为0,加上第一个载荷步0.001s,因此为 sin ( 2 π ( t i m e − 0.001 ) ) \sin(2\pi (time-0.001)) sin(2π(time−0.001)),由于软件中对于三角函数的计算采用的不是弧度,所以需要变成角度,即 sin ( 360 ∗ ( t i m e − 0.001 ) ) \sin(360*(time-0.001)) sin(360∗(time−0.001))。
弹簧一端连着质量块,一端连着地,其中连接地的点是固定不动的定点,当弹簧的长度小于振幅,质量块将会沿着定点左右运动,这个情形会导致计算存在误差,所以需要将弹簧长度设置的最大振幅大。
弹簧长度设置:修改连接地处的坐标。
⑧ 分析设置:设置载荷步结束时间、初始时间步、最小时间步、最大时间步、时间积分。注意,第一个载荷步 Time Integration 设置成 off,第二个载荷步 Time Integration 设置成on。
⑨ 计算求解与后处理:同谐响应一样。
软件中对于系统的响应在幅值上不区分正负,因此这里将数据导出做一下处理,由于理论解和仿真解高度吻合,所以将理论解向上平移30mm,方便查看二者的区别。
瞬态动力学随着初始响应条件和自由伴随振动逐渐衰减,仅剩下受迫振动响应,即为谐响应计算结果,对比两者的仿真结果,在频率和幅值上,二者计算结果吻合。(虽然存在一定的误差,但随着计算时间的推移,计算结果应该会逐渐逼近)
五、附录
5.1、大阻尼情形响应曲线绘图
import numpy as np
import matplotlib.pyplot as plt
# Define the constants given in the equation
k = 39.48 # Spring constant, unit: N/m
c = 16.0 # Damping constant, unit: N·s/m
m = 1.0 # Quality, unit: Kg
# Intermediate variable
omega_0 = np.sqrt(k/m) # Natural frequency
n = c/m*0.5
# Initial conditions
x_0 = 1.0 # The displacement at time 0, unit: m
x_dot_0 = 0.0 # The velocity at time 0, unit: m/s
# Define time array
t = np.linspace(0, 12, 1000)
# Define the function x(t)
C_1 = (x_dot_0-x_0*(-n - np.sqrt(n * n - omega_0 * omega_0))) / (2 * np.sqrt(n * n - omega_0 * omega_0))
r_1 = np.exp((-n + np.sqrt(n * n - omega_0 * omega_0)) * t)
C_2 = (-x_dot_0 + x_0*(-n + np.sqrt(n * n - omega_0 * omega_0))) / (2 * np.sqrt(n * n - omega_0 * omega_0))
r_2 = np.exp((-n - np.sqrt(n * n - omega_0 * omega_0)) * t)
x_t = C_1*r_1 + C_2*r_2
# Plotting the curve
plt.figure(figsize=(10, 6))
plt.xlim(0, 6)
plt.ylim(-1.05, 1.05)
plt.plot(t, x_t, label=r'$x(t)$', linestyle='-', linewidth=1.5)
plt.title('Free vibration response')
plt.xlabel('Time / s')
plt.ylabel('Amplitude / m')
plt.grid(True)
plt.legend()
plt.savefig('sin_curve.png', dpi=300) # 保存图像为文件
np.savetxt('curve_data.csv', np.column_stack((t, x_t)), delimiter=',', header='x,y', comments='') # 保存曲线数据为CSV文件
plt.show()
5.2、临界阻尼情形响应曲线绘图
import numpy as np
import matplotlib.pyplot as plt
# Define the constants given in the equation
k = 39.48 # Spring constant, unit: N/m
c1 = 16
c2 = 12.567 # Damping constant, unit: N·s/m
m = 1.0 # Quality, unit: Kg
# Intermediate variable
omega_0 = np.sqrt(k/m) # Natural frequency
n1 = c1/m*0.5
n2 = c2/m*0.5
# Initial conditions
x_0 = 1.0 # The displacement at time 0, unit: m
x_dot_0 = 0.0 # The velocity at time 0, unit: m/s
# Define time array
t = np.linspace(0, 12, 1000)
# Define the function x(t)
C_1 = (x_dot_0-x_0*(-n1 - np.sqrt(n1 * n1 - omega_0 * omega_0))) / (2 * np.sqrt(n1 * n1 - omega_0 * omega_0))
r_1 = np.exp((-n1 + np.sqrt(n1 * n1 - omega_0 * omega_0)) * t)
C_2 = (-x_dot_0 + x_0*(-n1 + np.sqrt(n1 * n1 - omega_0 * omega_0))) / (2 * np.sqrt(n1 * n1 - omega_0 * omega_0))
r_2 = np.exp((-n1 - np.sqrt(n1 * n1 - omega_0 * omega_0)) * t)
x_t1 = C_1*r_1 + C_2*r_2
x_t2 = x_0*np.exp(-n2*t)+(x_dot_0+n2*x_0)*t*np.exp(-n2*t)
# Plotting the curve
plt.figure(figsize=(10, 6))
plt.xlim(0, 6)
plt.ylim(-1.05, 1.05)
plt.plot(t, x_t1, label=r'$x(t)$ Large damping', color='Gray', linestyle=':', linewidth=1.5)
plt.plot(t, x_t2, label=r'$x(t)$ Critical damping', linestyle='-', linewidth=1.5)
plt.title('Free vibration response')
plt.xlabel('Time / s')
plt.ylabel('Amplitude / m')
plt.grid(True)
plt.legend()
plt.savefig('sin_curve.png', dpi=300) # 保存图像为文件
np.savetxt('curve1_data.csv', np.column_stack((t, x_t1)), delimiter=',', header='x,y', comments='') # 保存曲线数据为CSV文件
np.savetxt('curve2_data.csv', np.column_stack((t, x_t2)), delimiter=',', header='x,y', comments='') # 保存曲线数据为CSV文件
plt.show()
5.3、小阻尼情形响应曲线绘图
import numpy as np
import matplotlib.pyplot as plt
# Define the constants given in the equation
k = 39.48 # Spring constant, unit: N/m
c = 2 # Damping constant, unit: N·s/m
m = 1.0 # Quality, unit: Kg
# Intermediate variable
omega_0 = np.sqrt(k/m) # Natural frequency
n = c/m*0.5
omega_d = np.sqrt(omega_0*omega_0 - n*n)
# Initial conditions
x_0 = 1.0 # The displacement at time 0, unit: m
x_dot_0 = 0.0 # The velocity at time 0, unit: m/s
# Define time array
t = np.linspace(0, 12, 1000)
# Define the function x(t)
x_t = np.exp(-n*t)*(x_0*np.cos(omega_d*t)+((x_dot_0+n*x_0)/omega_d)*np.sin(omega_d*t))
# Plotting the curve
plt.figure(figsize=(10, 6))
plt.xlim(0, 6)
plt.ylim(-1.05, 1.05)
plt.plot(t, x_t, label=r'$x(t)$', linestyle='-', linewidth=1.5)
plt.title('Free vibration response')
plt.xlabel('Time / s')
plt.ylabel('Amplitude / m')
plt.grid(True)
plt.legend()
plt.savefig('sin_curve.png', dpi=300) # 保存图像为文件
np.savetxt('curve1_data.csv', np.column_stack((t, x_t)), delimiter=',', header='x,y', comments='') # 保存曲线数据为CSV文件
plt.show()
5.4、无阻尼情形响应曲线绘图
import numpy as np
import matplotlib.pyplot as plt
# Define the constants given in the equation
k = 39.48 # Spring constant, unit: N/m
c = 0 # Damping constant, unit: N·s/m
m = 1.0 # Quality, unit: Kg
# Intermediate variable
omega_0 = np.sqrt(k/m) # Natural frequency
n = c/m*0.5
# Initial conditions
x_0 = 1.0 # The displacement at time 0, unit: m
x_dot_0 = 0.0 # The velocity at time 0, unit: m/s
# Define time array
t = np.linspace(0, 12, 1000)
# Define the function x(t)
x_t = x_0*np.cos(omega_0*t)+(x_dot_0/omega_0)*np.sin(omega_0*t)
# Plotting the curve
plt.figure(figsize=(10, 6))
plt.xlim(0, 6)
plt.ylim(-1.05, 1.05)
plt.plot(t, x_t, label=r'$x(t)$', linestyle='-', linewidth=1.5)
plt.title('Free vibration response')
plt.xlabel('Time / s')
plt.ylabel('Amplitude / m')
plt.grid(True)
plt.legend()
plt.savefig('sin_curve.png', dpi=300) # 保存图像为文件
np.savetxt('curve1_data.csv', np.column_stack((t, x_t)), delimiter=',', header='x,y', comments='') # 保存曲线数据为CSV文件
plt.show()
5.5、方程各项响应曲线与全响应曲线绘图
import numpy as np
import matplotlib.pyplot as plt
# Define the constants
k = 39.48 # Spring constant, unit: N/m
c = 2.0 # Damping constant, unit: N·s/m
omega = 2*np.pi # Excitation angular frequency
m = 1.0 # Quality, unit: Kg
F_0 = 1.0 # External force amplitude, unit: N
# Intermediate variable
zeta = c/np.sqrt(k*m)*0.5 # Damping ratio
omega_0 = np.sqrt(k/m) # Natural frequency
omega_d = omega_0*np.sqrt(1-np.square(zeta)) # Damped natural frequency
s = omega/omega_0
beta = 1.0/np.sqrt(np.square(1-np.square(s))+np.square(2*zeta*s)) # Amplitude amplification factor
b = ((F_0/k)*(1-s*s))/(np.square(1-s*s)+np.square(2*zeta*s))
if b > 0:
theta = np.arctan((2*zeta*s)/(1-s*s)) # Phase angle
else:
theta = np.arctan((2 * zeta * s) / (1 - s * s))+np.pi # Phase angle
# Initial conditions
x_0 = 1.0 # The displacement at time 0, unit: m
x_dot_0 = 0.0 # The velocity at time 0, unit: m/s
# Define time array
t = np.linspace(0, 12, 1000)
# function x(t) = x_t1 + x_t2 + x_t3
x_t1 = np.exp(-zeta * omega_0 * t) * (x_0 * np.cos(omega_d * t) + (x_dot_0 + zeta * omega_0 * x_0) / omega_d * np.sin(omega_d * t))
x_t2 = F_0 / k * beta * np.exp(-zeta * omega_0 * t) * \
(np.sin(theta) * np.cos(omega_d * t) + omega_0 / omega_d * (zeta * np.sin(theta) - np.cos(theta)) * np.sin(omega_d * t))
x_t3 = (F_0 / k) * beta * np.sin(omega_0 * t - theta)
x_t = x_t1 + x_t2 + x_t3
# Plotting the curve
plt.figure(figsize=(10, 6))
plt.xlim(0, 12)
plt.ylim(-0.65, 1.05)
# plt.plot(t, x_t1, label=r'$x(t)-1$', color='blue', linestyle='--', linewidth=1.5)
# plt.plot(t, x_t2, label=r'$x(t)-2$', color='green', linestyle=':', linewidth=1.5)
# plt.plot(t, x_t3, label=r'$x(t)-3$', color='gray', linestyle='-', linewidth=1.5)
plt.plot(t, x_t, label=r'$x(t)$', linestyle='-', linewidth=1.5)
# plt.title('Response curves of different parts')
plt.title('Full response curve')
plt.xlabel('Time / s')
plt.ylabel('Amplitude / m')
plt.grid(True)
plt.legend()
plt.savefig('sin_curve.png', dpi=300) # 保存图像为文件
np.savetxt('curve_data.csv', np.column_stack((t, x_t)), delimiter=',', header='x,y', comments='') # 保存曲线数据为CSV文件
plt.show()