有限元分析
参考教程 现代设计方法实用教程 孙新民等编著
单元与节点
有限元分析中将结构划分为一系列单元与节点
单元与节点的特性
节点具有位移与受力
- 节点上各方向的位移与受力均使用 n×1 的向量表示, 其中 n 为节点的自由度 (不是维度)
- 通常节点即表示物体上的一个实际点 (三维) 或连杆之间的铰链 (平面刚架)
- 对于固定支座, 可视为一个无法位移的节点
- 注意, 节点只是一个依附在物体上的几何点
单元即系统种分析的最小结构, 具有形状, 弹性模量等物理系数
- 单元之间通过节点连接, 一般一个单元上的节点数固定
- 认为单元仅接收来自节点的反力与变形, 除此之外单元没有受到其他外界作用
- 通常单元即表示物体上的一个微小物体 (三维) 或具有弹性的连杆 (平面刚架)
- 单元具有方向性与单元坐标系, 需要在划分单元时注意
单元与节点的编码
- 单元一般使用字母编码
- 一般在上标加上括号使用单元编码, 可用于表示单元的物理性质如 A(e) 等
- 在矩阵中使用时, 可在矩阵的上标标上 (e), 表示矩阵中所有元素都具有此上标
- 节点一般使用数字编码, 且具有两种编码方式
- 局部码, 表示该节点为单元 a 中的第 i 各节点, 则有编码 i(a), 对于杆单元, 一般认为杆单元的方向为节点 1(a) 指向 2(a)
- 全局码, 使用一个数字 i 唯一表示该节点在物体上的编码
- 因此一个节点可能具有多个局部码, 但仅有一个全局码, 且一般默认使用全局码表示节点
- 一般在下标中使用节点编码
有关符号约定汇总
- 对于单元刚度矩阵
- 使用 [k](e) 表示单元 e 在单元坐标系下的刚度矩阵
- 使用 K(e) 表示单元 e 在全局坐标系下的刚度矩阵
- 对于刚度系数 (对于多维情况一般为矩阵, 其中节点编号使用全局码)
- 使用 [k]ij(e) 表示单元 e 下, 以单元坐标观察的节点 i 到 j 方向的刚度系数
- 使用 Kij(e) 表示单元 e 下, 以全局坐标观察的节点 i 到 j 方向的刚度系数
- 当 i=j 刚度矩阵表示当节点 i 移动单位距离时, 节点 j 受到的外力
- 当 i=j 则表示其他节点固定, 驱动节点 i 移动单位距离所需的外力
- 对于节点参数 (一般为 n×1 的向量, 其中节点编号使用全局码)
- 使用 fi(e) 表示节点 i 在单元坐标系下的节点受力参数, 即单元间的内力
- 使用 Fi 表示的是全局坐标系下节点 i 上的外载荷
- 使用 Φi 表示节点 i 在全局坐标系下的位移参数, 在单元坐标下则为 ϕi(e)
- 对于多个节点参数堆叠而成的参数, 使用多下标表示, 如节点 i,j 的位移参数为 ϕi,j(e)=[ϕi,jTϕi,jT](e)T
- 对于全局刚度矩阵
- 使用 K 表示全局刚度矩阵
- 使用 Kij 表示节点 i 到 j 方向的全局刚度系数
- 使用 T(e) 表示全局坐标系映射到单元坐标系的坐标转换矩阵
一维杆件
单元与节点特性
一维杆件的单元
- 一维杆件的单元通常为具有弹性的一维杆, 或着一维弹簧
- 单元具有刚度属性 k(e), 对于一维杆则有 k(e)=L(e)E(e)A(e)
- 一个一维杆单元与两个节点连接
- 单元的坐标系只有一个方向, 且通常与世界坐标系平行
此时所有节点的坐标系同向, 因此不区分单元坐标系与世界坐标系
一维杆件的节点
- 一维杆件的节点通常为两个杆的连接处, 或者单平动自由度的质点如小车
- 一维杆件的节点具有 x 方向的一个自由度
- 节点的受力参数为标量 Fi, 位移参数为标量 Φi, 以节点坐标系正方向为正
- 与单元关联的力参数向量写为 Fi,j=[FiFj]T
- 与单元关联的位移参数向量写为 Φi,j=[ΦiΦj]T
刚度矩阵的导出
一维杆单元刚度矩阵
对于单元 e , 以及与单元相连的两个节点 i,j
假设杆件在节点 i 或 j 处发生了单位位移, 包括另一节点在内的其他节点固定, 其他杆件视为刚体, 根据受力平衡杆件受到如图所示的外力 (图中的力以单元坐标系为参考方向)
将以上情况带入单元平衡方程中可得
fi,j(e)=[k−k](e)=[k](e)[10](e),fi,j(e)=[−kk](e)=[k](e)[01](e)
因此可得到杆单元的单元刚度矩阵满足
[k](e)=[k−k−kk](e)=L(e)E(e)A(e)[1−1−11]
观察单元刚度矩阵可得, 单元刚度矩阵的各个元素反映了单元 e 内节点 i,j 之间的关系有
[k](e)=[ki,iki,jkj,ikj,j](e)
节点间的刚度矩阵
其中的 ki,j(e) 即节点间的刚度矩阵 (系数), 满足
- 认为节点 i 的一个方向发生了单位位移, 除此外的其他节点固定, 除 e 外的其他单元为刚体, 且以单元坐标系为位移与受力参数的观察坐标系
- 当 i=j 表示在以上约束下驱动节点 i 移动单位距离所需的外力
- 当 i=j 表示此时单元在节点 j 受到的约束反力
- 对于包含多个方向的位移参数, 方向 m 的单位位移产生的反力代表了矩阵 [k]ij(e) 的第 m 列 (该条用于具有多个位移参数的情况, 对于一维杆件不需要)
上述讨论的为单元坐标系下的节点间的刚度矩阵 [k]i,j(e)
在全局坐标系下有 Ki,j(e), 性质相同
一维杆件的总体刚度矩阵
由于没有坐标系转换, 因此 [k](e)=K(e)
与单元坐标系下的单元刚度矩阵的集成类似, 全局坐标系下的单元刚度矩阵也可进行分解, 有
[k](e)=K(e)=[Ki,iKi,jKj,iKj,j](e)
根据叠加法, 假设其他单元均为刚体, 则此时的全局刚度矩阵除 (i,i),(i,j),(j,i),(j,j) 处的元素与对应的节点间单元刚度外, 均为 0, 由此可通过单元刚度矩阵进行集成得到全局刚度矩阵
首先定义节点 i 到节点 j 的刚度矩阵 (系数)满足
Ki,j=单元∑Ki,j(e)
最后将各个全局坐标系下的所有 m 个节点间刚度矩阵进行集成, 即等效为将所有单元单独作用的刚度矩阵进行叠加, 可得到全局刚度矩阵满足
K=K1,1⋮Km,1…⋱…K1,m⋮Km,m
求解处理
最终求解即通过全局位移平衡方程, 求出系统各个节点的受力与位移
KΦ=F
根据受力平衡易得单元刚度矩阵 [k](e) 与总体刚度矩阵 K 必定为不可逆的对称矩阵 (该性质对任何单元均成立)
因此仅当有至少一个节点被约束时, 才能求解方程
单元划分方法
- 通常将杆件中具有相同属性的部分划分为一个单元
- 当杆件的属性连续变化时, 则只能划分有限个单元进行离散化, 划分的越密精度越高
- 对于系统的约束点, 受载点通常也作为一个节点, 如果位于杆件中间时则将以此为界划分单元
约束与载荷的处理
- 对于外载荷 F
- 当节点没有受力也没有受约束时, 对应的外载荷 Fi=0
- 当节点没有受约束但具有外载荷 P 作用时, 对应的外载荷 Fi=P
(注意外载荷正方向是否与全局坐标系相同) - 当节点受约束时, 节点的外载荷未知
- 对于被约束的节点
- 节点被约束自由度下的位移参数为约束变形 Φi=u, 对于固定端约束 u=0
- 约束位移参数对应的外载荷未知
- 通常使用以下方法处理
- 假设被约束的全局位移参数为第 m 个参数
- 令平衡方程中的刚度矩阵 K 的第 m 行与第 m 列整列设为 0, 但 (m,m) 元素为 1
- 令对应第 m 个全局外载荷参数为 u (即约束量)
- 解出位移参数 Φ 后代回刚度矩阵 K 得到约束反力
- 相当于去除约束参数的影响, 通过删除特定行与列再补充等式可得到相同效果
例题演示
以如上图所示的系统
将阶梯杆划分为两个单元 a,b, 将杆的两端以及相连处分为三个节点 1,2,3
两个单元分别有单元刚度矩阵
K(a)=L(a)E(a)A(a)[1−1−11]=[K1,1K1,2K2,1K2,2](a)K(b)=L(b)E(b)A(b)[1−1−11]=[K2,2K2,3K3,2K3,3](b)
整合可得全局刚度矩阵
K=L(a)E(a)A(a)−L(a)E(a)A(a)0−L(a)E(a)A(a)L(a)E(a)A(a)+L(b)E(b)A(b)−L(b)E(b)A(b)0−L(b)E(b)A(b)L(b)E(b)A(b)
带入固定约束 Φ1=0 与外载荷 F3=−F 有位移平衡方程
1000L(a)E(a)A(a)+L(b)E(b)A(b)−L(b)E(b)A(b)0−L(b)E(b)A(b)L(b)E(b)A(b)Φ1Φ2Φ3=00−F
平面刚架
用于由可视为一维直线的杆件 (单个杆内截面, 材料性质不变) 之间, 使用固连约束 (刚架) 或铰链约束 (桁架) 链接为的平面结构
平面刚架单元与节点特性
平面刚架的单元
- 平面刚架单元通常为具有弹性的一维梁, 因此也称为梁单元
- 单元具有属性: 弹性模量 E(e), 面积 A(e), 长度 L(e), 截面矩 J(e)
- 一个梁单元在两端与两个节点连接
- 平面刚架单元的坐标系具有 x,y 方向与一个平面旋转, 具体见平面刚架单元的坐标系介绍
- 同样世界坐标系也具有 x,y 方向, 但不一定与单元坐标平行
- 通常所有坐标系均以逆时针旋转为旋转的正方向, 因此不做区分
平面刚架的节点
- 平面刚架的节点通常为梁之间的固连约束 (不是铰链)
- 平面刚架的节点具有 x,y 方向与平面旋转共三个自由度
- 节点的力参数为向量
- 力参数包含 x,y 方向的力以及平面力矩
- 全局坐标系下的力参数写为 Fi=[FxiFyiMi]
- 单元坐标系下的力参数写为 fi(e)=[TiQiMi](e) (字母分别代表拉力, 剪力与弯矩)
- 与单元关联的力参数向量写为 fi,j(e)=[fiTfjT](e)T
- 节点位移参数为标量
- 位移参数包含 x,y 方向的平动以及平面转动
- 全局坐标系下的力参数写为 Φi=[uiviθi]
- 单元坐标系下的力参数写为 ϕi(e)=[Δifiθi](e) (字母分别代表拉伸, 挠度与转角)
- 与单元关联的位移参数向量写为 ϕi,j(e)=[ϕiTϕjT](e)T
平面刚架单元的坐标系
对于梁单元, 其单元坐标系与全局坐标系具有如图所示的联系
使用如下方法确定单元坐标系
- 通常以梁单元中编号较小的节点作为单元坐标系原点
- 将原点指向另一节点的方向作为坐标系的 x 轴方向
- 将 x 轴正方向逆时针旋转 90∘ 得到 y 轴方向
- 根据坐标系的定义可得, 沿 x 方向的力即压力, 沿 y 方向的力即剪力
- 记世界坐标系 x 轴与单元坐标系 x(e) 轴夹角为 φ(e), 以全局坐标系的 x 轴逆时针旋转到单元坐标系 x(e) 轴为正
平面刚架刚度矩阵的导出
梁单元刚度矩阵
对于单元 e , 以及与单元相连的两个节点 i,j
与一维杆件单元刚度矩阵的求解类似, 分别假设节点 i 与节点 j 在单元坐标系的 x,y 与 θ 方向发生了单位位移, 计算节点的主动力与另一节的约束反力, 组合即可得到单元刚度矩阵
具体可参考材料力学进行推导, 推导可得到梁单元的单元刚度矩阵满足 (下式中未给出的部分可通过单元刚度矩阵的对称性得到)
[k](e)=LEA0L312EJ0L26EJL4EJ−LEA00LEA0−L312EJ−L26EJ0L312EJ0L26EJL2EJ0−L26EJL4EJ(e)
刚度矩阵的坐标变换
根据平面刚架单元的坐标系的特点可得, 通过平面旋转矩阵可以确定两个坐标系间 x,y 轴的关系, 而两个坐标系的旋转正方向总是相同
对于梁单元内的两个节点 i,j 定义坐标转换矩阵 T(e)
Φi,j=[ΦiΦj]=T(e)ϕi,j(e)=T(e)[ϕi(e)ϕj(e)]
根据两坐标系关系可得坐标转换矩阵 T(e) 满足下式, 注意 ϕi,j(e),Φi,j 包含了两个位置参数
R(φ(e)) 相当于全局坐标系观察下, 旋转 φ(e) 得到节点坐标系的变换矩阵 (e)WR
T(e)=R(φ(e))1R(φ(e))1,R(φ(e))=[cos(φ)sin(φ)−sin(φ)cos(φ)](e)
对于节点的力参数类似有
Fi,j=T(e)fi,j(e)
易得矩阵 T(e) 同样为正交矩阵, 具有性质 T(e)−1=T(e)T
将该性质用于单元平衡方程时有
[k](e)ϕi,j(e)[k](e)T(e)TΦi,j(e)K(e)Φi,j(e)=fi,j(e)=T(e)TFi,j(e)=Fi,j(e)
因此, 单元坐标系下的单位刚度矩阵与全局坐标系下的单元刚度矩阵之间满足关系
K(e)=T(e)[k](e)T(e)T
平面刚架的总体刚度矩阵
参考节点间的刚度矩阵, 单元刚度矩阵也可以分解为四个 3×3 的节点间的刚度矩阵满足
K(e)=[Ki,iKi,jKj,iKj,j](e)
与一维杆件的总体刚度矩阵的求取相同
首先对单元下节点间的刚度矩阵使用叠加法进行组合, 得到总体的节点间刚度矩阵
Ki,j=单元∑Ki,j(e)
最后集成节点间刚度矩阵, 得到总体的刚度矩阵
K=K1,1⋮Km,1…⋱…K1,m⋮Km,m
平面刚架问题求解
平面刚架求解步骤
- 对结构进行离散化, 通常以刚架结构中的杆件为梁单元, 杆件间的固连约束为节点
- 对离散化的单元与节点进行编号, 同时确定各单元坐标系, 以及全局坐标系到单元坐标系的转角 φ(e)
- 根据单元属性确定 [k](e), 根据转角确定 T(e), 最后得到全局单元刚度矩阵 K(e)=T(e)[k](e)TT(e)
- 集成节点间刚度矩阵, 得到总体刚度矩阵 K(e)
- 列写位移平衡方程, 得到节点的位移与载荷, 关于约束与载荷的处理可参考
平面桁架问题分析
在平面桁架问题中, 杆件之间通过铰链连接, 因此无法传递转矩, 节点只有 x,y 方向的两个自由度
因此平面桁架问题与平面刚架问题基本相同, 仅需认为弯矩 M 与转角 θ 为 0
弹性平面
用于具有相等厚度的, 且厚度远小于平面尺寸, 仅承受平行于平面载荷的弹性平面
弹性平面单元与节点特性
弹性平面的单元
- 在弹性平面问题中使用三角形平面单元, 通常为整个平面的一部分
- 单元具有属性
- 弹性模量 E(e) 与泊松比 μ(e), 具体见平面三角单元刚度矩阵
- 单元三个节点在单元坐标系的坐标 (x1,y1)(e),(x2,y2)(e),(x3,y3)(e) (使用局部码, 具体见位移模式与形状矩阵)
- 一个三角形平面单元与三个节点连接, 并且与其他单元公用边
- 三角形平面单元具有 x,y 方向的坐标系
- 通常以编号最小单元指向编号第二小单元方向为 x 轴正方向
- 以逆时针旋转 90∘ 为 y 轴正方向
弹性平面的节点
- 弹性平面的节点通常为三角形单元之间的公共顶点
- 弹性平面的节点具有 x,y 方向的两个自由度
- 节点的力参数为向量
- 力参数包含 x,y 方向的力
- 全局坐标系下的力参数写为 Fi=[FxiFyi]
- 单元坐标系下的力参数写为 fi(e)=[fxifxi](e)
- 与单元关联的力参数向量写为 fi,j,k(e)=[fiTfjTfkT](e)T
- 节点的位移参数为向量
- 位移参数包含 x,y 方向的位移
- 全局坐标系下的位移参数写为 Φi=[UiVi]
- 单元坐标系下的位移参数写为 ϕi(e)=[uivi](e)
- 与单元关联的位移参数向量写为 ϕi,j,k(e)=[ϕiTϕjTϕkT](e)T
弹性平面刚度矩阵的导出
节点位移与单元应变
在以下推导中, 使用局部编码确定节点, 并且按逆时针方向从小到大确定局部编码
为了确定三角形单元三个节点与单元应变之间的关系, 首先要找出节点位移与单元内任意一点 (x,y)(e) 的位移 ϕ(e)(x,y) 之间的关系
根据几何知识, 可以认为单元内任意一点位移可使用以下一阶公式近似表达 (阶数越高越准确)
ϕ(e)(x,y)≈N(e)(x,y)ϕi,j,k(e)
其中矩阵 N(e)(x,y) 称为形状矩阵, 为一个与单元三个节点坐标 (即三角形顶点) 有关的 2×6 矩阵, 满足
N(e)(x,y)=[N1(x,y)00N1(x,y)N2(x,y)00N2(x,y)N3(x,y)00N3(x,y)](e)
矩阵中的 N1,N2,N3 称为形状函数, 满足 (其中 xij 表示 xi−xj, 其他类似)
⎩⎨⎧N1(e)(x,y)=(a1+y23x+x32y)/2ΔN2(e)(x,y)=(a2+y31x+x13y)/2ΔN3(e)(x,y)=(a3+y12x+x21y)/2Δ⎩⎨⎧a1=x2y3−x3y2a2=x3y1−x1y3a3=x1y2−x2y12Δ=x32y12−x21y23(两倍三角形面积)
对于推导得到的形状函数有特点
- Ni(e)(xi,yi)=1,Nj(e)(xi,yi)=0,(i=j)
- N1(e)(x,y)+N2(e)(x,y)+N3(e)(x,y)=1
通过以上的形状矩阵, 即可确定单元应变 ε(e)=[εxεyγxy](e)T 与节点位移 ϕi,j,k(e) 之间的关系
ε(e)=B(e)ϕi,j,k(e)
上式中的 3×6 的矩阵 B(e) 称为几何矩阵具体推导略, 其满足
B(e)=2Δ1y230x320x32y23y310x130x13y31y120x210x21y12
平面三角单元刚度矩阵
根据平面弹性力学可得, 三角形单元的应力 σ(e)=[σxσyτxy](e) 与应变 ε(e) 之间满足
σ(e)=D(e)ε(e)
其中矩阵 D(e) 为一个与单元的物理属性有关的平面弹性矩阵, 满足
D(e)=(1−μ)E1μ0μ100021−μ
如果给定的是剪切模量 G, 可通过此公式得到其他物理属性 G=2(1+μ)E
最后使用虚位移法, 结合平面弹性矩阵 D(e) 与几何矩阵 B(e) 可以得出三角形单元的单元刚度矩阵
[k](e)=tΔBTDB
其中 t 为弹性平面的厚度, Δ 为三角形单元的面积
弹性平面的总体刚度矩阵
类似平面桁架, 三角形单元有坐标转换矩阵 T(e) 满足 (注意一个单元上有三个节点)
T(e)=R(φ(e))R(φ(e))R(φ(e)),R(φ(e))=[cos(φ)sin(φ)−sin(φ)cos(φ)](e)
其中根据三角形单元坐标系可知 φ(e)=Arctan(y21,x21)
并且单元坐标系下的单位刚度矩阵与全局坐标系下的单元刚度矩阵之间同样满足关系
K(e)=T(e)[k](e)T(e)T
由于一个单元上有三个节点, 因此全局刚度矩阵分解为节点间的刚度矩阵时有
K(e)=Ki,iKi,jKi,kKj,iKj,jKj,kKk,iKk,jKk,k(e)
最后总体刚度矩阵的集成与平面刚架的总体刚度矩阵相同
弹性平面问题求解
非节点载荷的等效
对于作用在单元上的载荷, 由于单元不能承受载荷, 因此需要使用虚功原理将单元载荷移动到单元节点上, 等效为作用在节点上的载荷
以下为两种常见情况的等效方法 (对于 y 方向结论类似)
- 作用在单元一边上任意点的 x 方向集中力 Q 可等效为
Fix=li+ljljQ,Fjx=li+ljliQ - 作用在单元一边上的 x 方向的均匀分布力 q 可等效为
Fix=Fjx=2qlt (l 为边长, t 为板厚)
有限元分析相关问题
总体刚度矩阵的存储
对于任何有限元系统, 总体刚度矩阵具有对称性, 稀疏性, 奇异性
为此, 可使用特定方法存储刚度矩阵, 以减小内存空间的消耗
根据节点间刚度矩阵可知, 仅当两个节点 i,j 在至少同一个单元上 (相邻) 时, 节点间刚度矩阵 Ki,j=0
定义全局刚度矩阵上半部分的所有非零元素都将位于一个宽度为 NB 的对角区域内, 称为半带宽, 满足
NB=(相邻节点编码最大差值+1)×节点自由度
因此可以使用如图所示的方法存储总体刚度矩阵, 将 n×n 总体刚度矩阵 K(e) 的非零元素区域整合为 n×NB 的矩形矩阵 K(e)∗
使用此方法存储总体刚度矩阵时, 确定节点编号时应保证同一单元内的节点编号相差尽量小