写在前面
博主为有限元学习相关技术学习小白,以下内容是博主近期课程思考的总结,如有错误还请海涵QAQ.
有限元模型建立
物理模型建立
首先约定以下假设:
假设1:结构为矩形薄板,则问题划为平面应力问题;
假设2:重力沿Z轴方向,认为平板XY方向无重力分量,题目不考虑重力体力;
假设3:为满足题目“离开边界较远处”要求,约定矩阵最短边长度的一半大于10倍的圆半径,即
l
min
2
≥
10
a
\frac{{{l_{\min }}}}{2} \ge 10a
2lmin≥10a
假设4:为满足薄板要求,板厚满足 0.01 < t l min < 0.2 0.01 < \frac{t}{{{l_{\min }}}} < 0.2 0.01<lmint<0.2
分析问题,由于薄板受力与结构的对称性,取板的1/4建立有限元模型。其位移边界条件为:
x
=
0
x = 0
x=0 边界上,
u
=
0
u = 0
u=0
边界上
y
=
0
y = 0
y=0,
v
=
0
v = 0
v=0
基于以上分析,对问题相关参数赋值,用于后续计算。1/4矩形薄板长边
l
o
n
1
=
12
c
m
lon1 = 12cm
lon1=12cm ,短边
l
o
n
2
=
11
c
m
lon2 = 11cm
lon2=11cm,长边沿x轴,短边沿y轴。圆孔半径
r
=
1
c
m
r = 1cm
r=1cm,板厚
t
=
0.2
c
m
t = 0.2cm
t=0.2cm 。X向均布载荷集度
q
1
=
20
M
p
a
{q_1} = 20Mpa
q1=20Mpa,y向均布载荷集度
q
2
=
10
M
p
a
{q_2} = 10Mpa
q2=10Mpa 。材料常数弹性模量
E
=
2.0
×
1
0
5
M
p
a
E = 2.0 \times {10^5}Mpa
E=2.0×105Mpa,泊松比
v
=
0.3
v = 0.3
v=0.3。图1为矩形薄板部分数据。
网格化及结点总体编号
选择三节点三角形单元作为划分矩形薄板的基本单元,为简化圆孔附近的单元划分难度,需对圆孔边界进行一定简化。参考圆弧插值的基本思路,将四分之一圆弧简化为一系列短直线的组合,插值思路如下:
从圆弧起始点
(
x
0
,
y
0
)
({x_0},{y_0})
(x0,y0) 向圆弧终止点
(
x
1
,
y
1
)
({x_1},{y_1})
(x1,y1) 以步长
(
d
x
,
d
y
)
(dx,dy)
(dx,dy)进行逆时针插值,当插值点
(
x
i
,
y
i
)
({x_i},{y_i})
(xi,yi) 在圆内,则
y
i
+
1
=
y
i
+
d
y
{y_{i + 1}} = {y_i} + dy
yi+1=yi+dy否则
x
i
+
1
=
x
i
−
d
x
{x_{i + 1}} = {x_i} - dx
xi+1=xi−dx直到
x
i
=
x
1
,
y
i
=
y
1
{x_i} = {x_1},{y_i} = {y_1}
xi=x1,yi=y1插值停止。
经过插值,总能在有限步内将圆弧转化为一系列短直线的集合。将圆弧转化为一系列段直线后,问题图形可使用一系列排列整齐的小矩形组成,极大的简化了网格划分的难度。
总体上将图形划分为四个部分,区域1
x
∈
[
0
,
4
a
]
,
y
∈
(
0
,
4
a
)
x \in [0,4a],y \in (0,4a)
x∈[0,4a],y∈(0,4a) 区域2
x
∈
(
4
a
,
l
o
n
1
]
,
y
∈
(
0
,
4
a
)
x \in (4a,lon1],y \in (0,4a)
x∈(4a,lon1],y∈(0,4a)区域3
x
∈
[
0
,
4
a
]
,
y
∈
[
4
a
,
l
o
n
2
]
x \in [0,4a],y \in [4a,lon2]
x∈[0,4a],y∈[4a,lon2]区域4
x
∈
(
4
a
,
l
o
n
1
]
,
y
∈
[
4
a
,
l
o
n
2
]
x \in (4a,lon1],y \in [4a,lon2]
x∈(4a,lon1],y∈[4a,lon2]各区域内小矩形边长不同,其边长可根据精度要求进行调整。
各小矩形在整体中可使用 i 行, j 列来表示其位置,则小矩形位置唯一。将小矩形沿对角线分为两个三节点三角形单元,记为上三角形a,下三角形b。由于小矩形位置唯一由(i,j) 表示,则三角形单元各节点坐标可使用(i,j) 计算,且对应关系唯一,记对应关系为
[
x
i
y
i
x
j
y
j
x
m
y
m
]
=
f
(
i
,
j
)
\left[ {\begin{array}{ccccccccccccccc}{{x_i}}&{{y_i}}\\{{x_j}}&{y{}_j}\\{{x_m}}&{{y_m}}\end{array}} \right] = f(i,j)
xixjxmyiyjym
=f(i,j)
将各结点顺序编号(就是贪吃蛇或者从左到右),则各结点总体编号与 (i,j) 对应。
[
n
u
m
i
n
u
m
j
n
u
m
m
]
=
g
(
i
,
j
)
\left[ {\begin{array}{ccccccccccccccc}{nu{m_i}}\\{nu{m_j}}\\{nu{m_m}}\end{array}} \right] = g(i,j)
numinumjnumm
=g(i,j)
利用上述对应关系,能够建立节点坐标与结点总体编号的对应关系。在单元刚度矩阵的相关计算中,直接总体刚度矩阵进行赋值操作,省去存储节点位移和结点总体编号的过程,同时也免去总体刚度矩阵赋值中不断搜索对应的过程,简化计算。(当然如果你喜欢,建议直接暴力存矩阵,遍历对应即可)
刚度矩阵计算
根据网格化结果,矩形薄板均由三节点三角形单元组成,选择线性位移模式,三角形单元位移插值函数为
u
=
N
i
u
i
+
N
j
u
j
+
N
m
u
m
v
=
N
i
v
i
+
N
j
v
j
+
N
m
v
m
\begin{array}{l}u = {N_i}{u_i} + {N_j}{u_j} + {N_m}{u_m}\\v = {N_i}{v_i} + {N_j}{v_j} + {N_m}{v_m}\end{array}
u=Niui+Njuj+Nmumv=Nivi+Njvj+Nmvm
其中
N
i
=
1
2
A
(
a
i
+
b
i
x
+
c
i
y
)
(
i
,
j
,
m
)
{N_i} = \frac{1}{{2A}}({a_i} + {b_i}x + {c_i}y)\begin{array}{ccccccccccccccc}{}&{(i,j,m)}\end{array}
Ni=2A1(ai+bix+ciy)(i,j,m)
三角形单元位移为
u
=
[
N
i
N
j
N
m
]
a
e
=
N
a
e
u = \left[ {\begin{array}{ccccccccccccccc}{{N_i}}&{{N_j}}&{{N_m}}\end{array}} \right]{a^e} = N{a^e}
u=[NiNjNm]ae=Nae
三角形单元应变为
ε
=
L
[
N
i
N
j
N
m
]
a
e
=
[
B
i
B
j
B
m
]
a
e
=
B
a
e
\varepsilon = L\left[ {\begin{array}{ccccccccccccccc}{{N_i}}&{{N_j}}&{{N_m}}\end{array}} \right]{a^e} = \left[ {\begin{array}{ccccccccccccccc}{{B_i}}&{{B_j}}&{{B_m}}\end{array}} \right]{a^e} = B{a^e}
ε=L[NiNjNm]ae=[BiBjBm]ae=Bae
其中
B
=
[
B
i
B
j
B
m
]
=
1
2
A
[
b
i
0
b
j
0
b
m
0
0
c
i
0
c
j
0
c
m
c
i
b
i
c
j
b
j
c
m
b
m
]
B = \left[ {\begin{array}{ccccccccccccccc}{{B_i}}&{{B_j}}&{{B_m}}\end{array}} \right] = \frac{1}{{2A}}\left[ {\begin{array}{ccccccccccccccc}{{b_i}}&0&{{b_j}}&0&{{b_m}}&0\\0&{{c_i}}&0&{{c_j}}&0&{{c_m}}\\{{c_i}}&{{b_i}}&{{c_j}}&{{b_j}}&{{c_m}}&{{b_m}}\end{array}} \right]
B=[BiBjBm]=2A1
bi0ci0cibibj0cj0cjbjbm0cm0cmbm
单元应力为
σ
=
(
σ
x
σ
y
τ
x
y
)
=
D
ε
=
D
B
a
e
=
S
a
e
\sigma = \left( {\begin{array}{ccccccccccccccc}{{\sigma _x}}\\{{\sigma _y}}\\{{\tau _{xy}}}\end{array}} \right) = D\varepsilon = DB{a^e} = S{a^e}
σ=
σxσyτxy
=Dε=DBae=Sae
其中弹性矩阵 为
D
=
E
0
1
−
ν
0
2
[
1
v
0
0
v
0
1
0
0
0
1
−
v
0
2
]
D = \frac{{{E_0}}}{{1 - \nu _0^2}}\left[ {\begin{array}{ccccccccccccccc}1&{{v_0}}&0\\{{v_0}}&1&0\\0&0&{\frac{{1 - {v_0}}}{2}}\end{array}} \right]
D=1−ν02E0
1v00v0100021−v0
对于平面应力问题
E
0
=
E
,
ν
0
=
ν
{E_0} = E,{\nu _0} = \nu
E0=E,ν0=ν
最后,三节点三角形单元的单元刚度矩阵为
K
e
=
∫
Ω
e
B
T
D
B
t
d
x
d
y
=
B
T
D
B
t
A
{K^e} = \int_{{\Omega ^e}} {{B^T}DBtdxdy = } {B^T}DBtA
Ke=∫ΩeBTDBtdxdy=BTDBtA
其中,A为三节点三角形单元面积。
利用结点总体编号规则,将单元刚度矩阵的元素“对号入座”,叠加到结构矩阵中,得到总体刚度矩阵 K。
外部载荷计算
根据题目假设,在不考虑重力作用下,矩形薄板受到的外力仅有分别作用在x向边界的x向均布载荷集度 和作用在y边界y向均布载荷集度 。则单元等效结点载荷为
P
e
=
P
S
e
=
∫
S
σ
e
N
T
T
t
d
S
{P^e} = P_S^e = \int_{S_\sigma ^e} {{N^T}TtdS}
Pe=PSe=∫SσeNTTtdS
边界 处单元受力情况一致,取其中一个单元进行分析,设x向载荷作用于 边,以 边建立局部坐标系 ,沿 边插值函数可写作
N
i
=
1
−
s
l
N
j
=
s
l
N
m
=
0
{N_i} = 1 - \frac{s}{l}\begin{array}{ccccccccccccccc}{}&{}\end{array}{N_j} = \frac{s}{l}\begin{array}{ccccccccccccccc}{}&{}\end{array}{N_m} = 0
Ni=1−lsNj=lsNm=0
边界上的面积力为
T
=
[
q
1
0
]
T
T = {\left[ {\begin{array}{ccccccccccccccc}{{q_1}}&0\end{array}} \right]^T}
T=[q10]T
单元等效结点载荷为
P
e
=
1
2
q
1
l
t
[
1
0
1
0
0
0
]
T
{P^e} = \frac{1}{2}{q_1}lt{[\begin{array}{ccccccccccccccc}1&0&1&0&0&0\end{array}]^T}
Pe=21q1lt[101000]T
同理,取边界 处单元,可得其等效结点载荷为
P
e
=
1
2
q
2
l
t
[
0
1
0
1
0
0
]
T
{P^e} = \frac{1}{2}{q_2}lt{[\begin{array}{ccccccccccccccc}0&1&0&1&0&0\end{array}]^T}
Pe=21q2lt[010100]T
由于网格划为四个部分,上式中 需根据区域变化。
将边界各结点受力,按总体编号叠加,得到总体外力向量 P。
位移边界条件
在求解位移场问题时,需要提出足以约束刚体位移的几何边界条件,以消除结构刚度矩阵的奇异性。根据模型简化假设,其位移边界要求为: x = 0 , u = 0 x = 0,u = 0 x=0,u=0 y = 0 , v = 0 y = 0,v = 0 y=0,v=0 求解方程时,采用直接带入法修正方程。将已知的结点位移所对应的总体刚度矩阵 对应的行列消去,同时将其对应的外力向量 对应的列也消去,重新组合方程。消去过程保留原有结点的顺序。方程求解完成后,根据消去规则,将代求结点位移重新对号入座,再结合已知结点位移,得到系统总体位移向量a 。
应力计算
在求得结点位移 后,根据公式求得的单元应变和应力,由于导数运算的结果,在单元交界面上应力不连续,力的边界条件也不能精确满足,因而需要对它作必要的处理。此次计算选用单元平均的方法处理以上问题。在三节点三角形单元中,应力解在单元内是常数。由于应力近似解总是在精确解上下振荡,可取相邻单元应力的平均值作为此两个单元合成的较大四边形单元形心处的应力。精确面积加权平均公式如下。
参考网格划分的特点,选取同一小矩形下的上三角形a和下三角形b作为应力平均四边形,简化编程难度。
模型求解及误差分析
依据建立的有限元模型,依托MATLAB进行编程计算,计算结果如下。图2为网格划分结果,图3为位移云图,图4为有限元解应力云图,图5为精确解应力云图,图6为有限元解相对于精确解的误差。
写在最后
关于代码,博主暂时不想挂上来,等博主课程混完再说。 (可留言,但不一定回复,谢谢理解)