弹性动力学平面应力问题
关键词: 瞬态 线性 弹性力学 平面应力 惯性力 Newmark法
本节以二维弹性动力学平面应力问题为例,讲解如何使用 FEtch 系统对线性二阶双曲型方程进行求解。
控制方程
微分形式
对于二维直角坐标系,弹性动力学问题的未知量服从如下偏微分方程
平衡方程 \(\rho\frac{\partial^2 u}{\partial t^2}+\mu\frac{\partial u}{\partial t}-\frac{\partial \sigma_{x x}}{\partial x}-\frac{\partial \sigma_{x y}}{\partial y}-f_{x} = 0 \ \left(\text{in } \Omega\right)\) \(\rho\frac{\partial^2 v}{\partial t^2}+\mu\frac{\partial v}{\partial t}-\frac{\partial \sigma_{x y}}{\partial x}-\frac{\partial \sigma_{y y}}{\partial y}-f_{y} = 0 \ \left(\text{in } \Omega\right)\) 几何方程 \(\varepsilon_{x x}=\frac{\partial u}{\partial x}, \quad \varepsilon_{y y}=\frac{\partial v}{\partial y}, \quad \varepsilon_{x y}=\frac{\partial u}{\partial y}+\frac{\partial v}{\partial x}\) 本构方程(平面应力) \(\left(\begin{array}{c}\sigma_{x x} \\ \sigma_{y y} \\ \sigma_{x y} \end{array}\right)=\frac{E}{(1+\nu)(1-\nu)}\left(\begin{array}{ccc} 1 & \nu & 0 \\ \nu & 1 & 0 \\ 0 & 0 & (1-\nu) / 2 \end{array}\right)\left(\begin{array}{l} \varepsilon_{x x} \\ \varepsilon_{y y} \\ \varepsilon_{x y} \end{array}\right)\) 以上式子可以简记为 \(\nabla\boldsymbol{\cdot \sigma}+\boldsymbol{f}=\boldsymbol{0}\) \(\boldsymbol{\varepsilon}=\left(\nabla \boldsymbol{u}+\nabla^{T} \boldsymbol{u}\right) / 2\) \(\boldsymbol{\sigma}=\mathbf{D} \boldsymbol{\varepsilon}\) 其中, $u$、$v$ 为位移 $\boldsymbol{u}$ 的分量,$\varepsilon_{x x}$、$\varepsilon_{y y}$ 、 $\varepsilon_{x y}$ 为应变 $\boldsymbol{\varepsilon}$ 的分量,$\sigma_{x x}$ 、$\sigma_{y y}$ 、$\sigma_{x y}$ 为应力 $\boldsymbol{\sigma}$ 的分量,$f_{x}$ 、$f_{y}$ 为体力 $\boldsymbol{f}$ 的分量。$\nabla$ 为梯度算子,$\mathbf{D}$ 为刚度矩阵。参数 $E$ 为弹性模量, $\nu$ 为泊松比。 $x$、$y$ 为直角坐标系下的坐标分量,$t$ 为时间。
初始条件
初始位移 \(u=u_0,\ v=v_0 \ \left(\text{in } \Omega\right)\) 初始速度 \(\dot{u}=\dot{u_0},\ \dot{v}=\dot{v_0} \ \left(\text{in } \Omega\right)\)
初始加速度 \(\ddot{u}=\ddot{u_0},\ \ddot{v}=\ddot{v_0}\ \left(\text{in } \Omega\right)\)
这里 $\dot{}$ 和 $\ddot{}$ 表示对时间的一阶和二阶导数。
边界条件
考虑两类边界条件:
第一类边界条件,给定位移 \(u=\bar{u},\ v=\bar{v}\ \left(\text{on } \Gamma_1\right)\)
第二类边界条件,给定外力 \(T_{x}=\left(\sigma_{x x},\sigma_{x y}\right)\cdot \mathbf{n}=t_x,\ T_{y}=\left(\sigma_{x y},\sigma_{y y}\right)\cdot \mathbf{n}=t_y\ \left(\text{on } \Gamma_2\right)\)
其中,$\bar{u}$ 、$\bar{v}$ 为边界上的位移,$T_{x}$、$T_{y}$ 分别为边界力在 $x$ 和 $y$ 方向的分量。$\mathbf{n}$ 为边界上的单位外法向量。
弱形式
PDE 文件的编写依赖于待解偏微分方程的弱解方程。根据虚位移原理,对平衡方程两边分别乘以位移的变分并在求解区域内积分,得到其等效积分形式 \(\int_{\Omega}\left(\rho\frac{\partial^2 u}{\partial t^2}+\mu\frac{\partial u}{\partial t}-\frac{\partial \sigma_{x x}}{\partial x}-\frac{\partial \sigma_{x y}}{\partial y}+f_{x}\right) \delta ud\Omega\\+\int_{\Omega}\left(\rho\frac{\partial^2 v}{\partial t^2}+\mu\frac{\partial v}{\partial t}-\frac{\partial \sigma_{x y}}{\partial x}-\frac{\partial \sigma_{y y}}{\partial y}+f_{y}\right) \delta v d\Omega=0\) 对上式进行分部积分,得到弱形式 \(\int_{\Omega}\rho\left(\frac{\partial^2 u}{\partial t^2}\delta u+\frac{\partial^2 v}{\partial t^2}\delta v\right)d\Omega+\int_{\Omega}\mu\left(\frac{\partial u}{\partial t}\delta u+\frac{\partial v}{\partial t}\delta v\right)d\Omega\\+\int_{\Omega}\left(\sigma_{x x} \delta \varepsilon_{x x}+\sigma_{y y} \delta \varepsilon_{y y}+\sigma_{x y} \delta \varepsilon_{x y}\right) d\Omega \\=\int_{\Omega}\left(f_{x} \delta u+f_{y} \delta v\right) d\Omega+\int_{\Gamma_2}\left(T_{x} \delta u+T_{y} \delta v\right) d\Gamma \tag{1}\label{eq1}\)
将本构方程代入上式,即可得到以位移为基本未知量的弱形式。于是,相关有限元模型的质量矩阵、阻尼矩阵和矩阵刚度矩阵分别由上式左端的体积分部分的 1、2、3 项形成,而载荷向量则包含上式右端的体积分和边界积分两部分的贡献。
在求得了位移之后,可以应用最小二乘法,继续求取应力 $\boldsymbol{\sigma}$ 。这里主要介绍位移场的求解,对应力场求解感有兴趣的用户可以参考弹性静力学章节的有关介绍。
脚本编写
求解策略
对于式 $\eqref{eq1}$,以位移作为基本未知量,位移场的有限元模型可以写成以下矩阵形式 \(M\ddot{U}+C\dot{U}+KU=F\) 其中,$M$ 为系统的质量矩阵,$C$ 为阻尼矩阵,$K$ 为刚度矩阵,$F$ 为载荷向量,$U$、$\dot{U}$ 和 $\ddot{U}$ 分别为为节点位移、速度和加速度向量。该式即为需要求解的半离散的线性方程组。对于时域积分,有多种方法可以选择,这里使用最常用的 Newmark 法。
一个具体问题的有限元语言表述,通常需要包含 5 种类型的文件:PDE、FBC、MDI、GCN 和 NFE。下面依次给出详细介绍。
PDE 和 FBC 文件
基于有限元语言语法,将式 $\eqref{eq1}$ 的体积分部分,编写成了 disp.pde 文件,具体内容如下。
disp.pde | 说明 |
---|---|
defi disp u v coor x y func exx eyy exy shap %1 %2 gaus %3 mass %1 rho damp %1 emu mate rho emu pe pv fu fv \ 1.0e3;0.5e3;1.0e10;0.3;0;0; $c6 fact = pe/(1.+pv)/(1.-pv) $c6 shear = (1.-pv)/2 func exx = +[u/x] eyy = +[v/y] exy = +[u/y]+[v/x] stif dist = +[exx;exx]*fact +[exx;eyy]*pv*fact +[eyy;exx]*pv*fact +[eyy;eyy]*fact +[exy;exy]*shear*fact load = +[u]*fu+[v]*fv end |
系统段落关键字(信息定义) 定义未知量 定义坐标分量 定义函数用于表达应变 定义采用的形函数 定义采用的积分方式 质量矩阵,对应式 $\eqref{eq1}$ 左侧第 1 项 阻尼矩阵,对应式 $\eqref{eq1}$ 左侧第 2 项 定义用到的材料参数(续行) 材料参数默认值 参数计算 参数计算 (空行) 系统段落关键字(函数定义) $\varepsilon_{x x}$ (空行) $\varepsilon_{y y}$ (空行) $\varepsilon_{x y}$ (空行) 系统段落关键字(单元刚度矩阵表达式定义) 刚度矩阵项,对应式 $\eqref{eq1}$ 左侧第 3 项 (空行) 荷载向量项,对应式 $\eqref{eq1}$ 右侧第 1 项 (空行) 系统关键字(文件结束) |
这里将 shap 行和 gaus 行的参数设为待定,参数值 %1、%2 和 %3 将从 MDI 文件中取得。
对于单元载荷向量中的边界积分部分,用 FBC 文件来描述(FBC 的命名习惯上常取对应 PDE 的文件名,disp.fbc)。将方程 $\eqref{eq1}$ 的边界积分项写入 FBC 文件如下。
disp.fbc | 说明 |
---|---|
defi disp u v coor x shap %1 %2 gaus %3 mate fu omegau fv omegav 100;0;0;0 $c6 pi=3.1415926 $c6 fx=fu*dsin(omegau*2*pi*time) $c6 fy=fv*dsin(omegav*2*pi*time) stif dist = +[u;u]*0.0 load=+[u]*fx+[v]*fy end |
系统段落关键字(信息定义) 定义未知量 定义坐标分量 定义采用的形函数 定义采用的积分方式 定义用到的材料参数和参数值 切向正弦荷载 法向正弦荷载 (空行) 系统段落关键字(单元刚度矩阵表达式定义) 刚度矩阵项,为零矩阵 (空行) 荷载向量项,对应式 $\eqref{eq1}$ 右侧第 2 项 (空行) 系统关键字(文件结束) |
MDI 文件
MDI 文件负责组织不同场的 PDE 和 FBC 文件,声明程序具体使用的坐标系统、单元类型和积分方法。这里文件命名为 dyn.mdi,具体内容如下。
dyn.mdi | 说明 |
---|---|
2dxy #a 3 2 u v pde disp q4g2 fbc disp l2g2 # |
在二维直角坐标系下求解 a 场,3个初值,2 个自由度,自由度名称为 u、v 调用 disp.pde,4 节点四边形单元,2点高斯积分 调用 disp.fbc,2 节点线单元,2点高斯积分 |
注意,同一个场的 PDE 和 FBC 的单元类型和积分方法需要保证匹配,否则会导致计算精度降低,甚至计算失败的情况发生。
对于弹性力学问题,理论上四边形单元的计算精度要明显好于三角形单元。因此,这里配合 2 点高斯积分,采用了四边形单元。
MDI 文件声明的单元类型和积分方式将以参数的形式传递给 PDE 和 FBC 文件中的的 %1、%2 和 %3。如果后续想要使用其他的单元类型或者积分方法,只需修改 MDI 文件即可。
GCN 文件
在这个例子中,有位移场和应力场两个场。除了对应的 PDE 和 FBC 文件,还要给出每个场使用的算法文件和计算的命令流程,这些信息由 GCN 文件给出。系统要求 GCN 与 MDI 文件同名,具体内容如下。
dyn.gcn | 说明 |
---|---|
defi a newmark open(1,file='time.dat') read(1,*) dt,tmax close(1) #startsin a time = 0.0 do while (time <= tmax-1d-8) time = time + dt if (time > tmax) then dt = dt-(time-tmax) time = tmax endif #solvsin a enddo |
系统关键字 a 场,采用算法模板文件为 newmark.nfe (空一行) 从 time.dat 文件读取时间步参数 初始化 a 场 初始值 循环开始 更新 time 越界修正 求解 a 场 循环结束 |
NFE 文件
位移场使用了 newmark 算法,系统会基于模板文件自动生成以下的 dyna.nfe 文件。如果用户有其他需要,可以在此基础上进一步地修改。
dyna.nfe | 说明 |
---|---|
defi stif s mass m damp c load f equation vect u1,v1,w1,um,uc read(s,unod) u1,v1,w1 [um]=[u1]*a0+[v1]*a2+[w1]*a3 [uc]=[u1]*a1+[v1]*a4+[w1]*a5 matrix = [s]+[m]*a0+[c]*a1 forc = [f]+[m*um]+[c*uc] solution u vect v,w [w]=([u]-[u1])*a0-[v1]*a2-[w1]*a3 [v]=[v1]+[w]*a7+[w1]*a6 write(s,unod) u,v,w gidpost('u v',time) u(1),u(2) gidpost('u v',time) v(1),v(2) gidpost('u v',time) w(1),w(2) end fort @begin o=0.5 aa=0.25*(.5+o)*(.5+o) a0=1.0/(dt*dt*aa) a1=o/(aa*dt) a2=1.0/(aa*dt) a3=1.0/(2*aa)-1.0 a4=o/aa-1.0 a5=dt/2*(o/aa-2.0) a6=dt*(1.-o) a7=dt*o |
DEFI段 定义刚度矩阵名为 s 定义质量矩阵名为 m 定义阻尼矩阵名为 c 定义载荷向量名为 f (空行) EQUATION段 定义场向量 读入上一时间步的场向量值 临时场向量计算 临时场向量计算 方程组左端矩阵 方程组右端向量 (空行) SOLUTION段 定义求解的位移场向量 定义其他场向量 加速度场向量计算 速度场向量计算 临时存储当前的结果,供下一时间步读取 将计算结果写入 GiD 后处理文件 (空行) 系统关键字(文件结束) (空行) FORT段 插入位置声明 Newmark 法相关参数计算 |
算例1
如图所示,边长为 $1.0\ \mathrm{m}\times0.1\ \mathrm{m}$ 的梁结构,左侧的位移完全约束,右侧和两侧边可自由移动,右侧施加均布的法向压力荷载 $F_N$,不计材料重力影响,求梁的位移的演化过程。具体参数值为 $E=1.0×10^{3}\ \mathrm{Pa}$,$\nu = 0.3$ ,$f_{x} = 0$, $f_{y} = 0$,$F_N = 10\sin(2\pi t)\ \mathrm{N/m}$。
前处理
填写材料参数文件
系统自动生成了 dyn.mat 文件,用于设置材料参数。参数初始值全部为 PDE 和 FBC 文件给出的默认值。可根据具体问题进行修改。对于本算例,修改完成后的文件内容如下。由于应力场计算直接使用了位移场的数据作为输入数据,所以没有相关的单元和参数选项。
dyn.mat | 说明 |
---|---|
1 7 aeq4g2 num rho emu pe pv fu fv 1 1.0e3 0.0 1.0e3 0.3 0 0 # 1 5 all2g2 num fu omegau fv omegav 1 0 0 10.0 1.0 # |
4 节点四边形面单元 材料参数 参数值 分隔符 2 节点线形边界单元 材料参数 参数值 分隔符 |
填写时间步长文件
由 dyn.gcn 文件可知,用户自定义了时间步长文件 time.dat,给出时间步长和终止时间。文件内容如下:
0.02 2
可知,时间步长为 0.02 s,计算终止时间为 2 s。
赋单元材料号
材料以面单元的形式赋值
赋初始条件
初始位移
初始速度
初始加速度
施加固定边界
梁左侧端点 $u$ 和 $v$ 全部约束
其中:
u-I 为边界类型,-1 表示约束,1 表示自由
u-D 为相应的约束值或施加节点力
施加荷载
梁右侧的荷载以线单元的形式施加
网格剖分
根据所开发程序的计算要求,采用四边形线性单元进行网格剖分。共使用了 40 个单元,82 个节点。
计算结果
位移分布
以下为位移分布图,依次表示 $u$ 和 $v$。
速度分布
以下为速度分布图,依次表示 $u$ 和 $v$。
算例2
模型和具体参数值同算例 1。右侧施加分布荷载改为切向力 $F_T= 10\sin(2\pi t)\ \mathrm{N/m}$。求梁的位移的演化过程。
前处理
填写材料参数文件
因材料与算例 1 相同,只需修改与荷载相关的线形边界单元的参数值。修改后的 dyn.mat 文件内容如下。
dyn.mat | 说明 |
---|---|
1 7 aeq4g2 num rho emu pe pv fu fv 1 1.0e3 0.0 1.0e3 0.3 0 0 # 1 5 all2g2 num fu omegau fv omegav 1 10.0 1.0 0 0 # |
4 节点四边形面单元 材料参数 参数值 分隔符 2 节点线形边界单元 材料参数 参数值 分隔符 |
其他处理
时间步长文件不变,赋单元材料号、赋初始条件、施加固定边界、施加荷载、网格剖分的操作过程均与算例1完全一样,不再赘述。
计算结果
位移分布
以下为位移分布图,依次表示 $u$ 和 $v$。
速度分布
以下为速度分布图,依次表示 $u$ 和 $v$。