单元刚性矩阵 模拟器 返回
有限元法

单元刚性矩阵 模拟器 — 1D杆单元

有限元法(FEM)最基础的工具,用于体验1D杆(桁架)单元的刚性矩阵 [k]=(EA/L)[[1,-1],[-1,1]]。改变弹性模量、截面积、单元长度、轴力,单元刚性、整体刚性、节点位移、轴应力会实时更新,直观地学习如何求解 {F}=[k]{u}。

参数设置
弹性模量 E
GPa
材料的硬度。钢约为 200 GPa
截面积 A
mm²
单元长度 L
mm
每个单元的长度
施加在节点上的轴力 F
kN
正值为拉伸,负值为压缩
模型构成
使用1个单元还是2个串联单元
计算结果
单元刚性 k (N/mm)
整体刚性 (N/mm)
自由端位移 u (mm)
轴应力 σ (MPa)
应变 ε (×10⁻³)
轴力 (kN)
杆单元模型 — 变形动画

左端固定支座。单元在轴力作用下伸长(或缩短),节点发生位移。条形的颜色表示应力大小(绿→橙→红),点线表示变形前的位置。

力-位移 线图(F vs u)
单元刚性 k vs 单元长度 L
理论·主要公式

$$[k]=\frac{EA}{L}\begin{bmatrix}1&-1\\-1&1\end{bmatrix}$$

1D杆单元的刚性矩阵。E:弹性模量,A:截面积,L:单元长度。EA/L 是单元的轴向弹簧常数,表示单元的轴向硬度,行、列分别对应节点1、节点2的自由度。

$$\{F\}=[k]\{u\},\quad u=\frac{F}{k},\quad \sigma=E\varepsilon=\frac{F}{A}$$

节点力 {F} 与节点位移 {u} 的关系。使用边界条件缩约后的刚性 k,位移为 u=F/k,轴应力为 σ=F/A,应变为 ε=σ/E。

单元刚性矩阵是什么

🙋
打开有限元法的教科书,立刻就出现"单元刚性矩阵"。它到底是什么东西呢?
🎓
简单地说,就是"用矩阵表示弹簧的硬度"。我们来看最简单的1D杆单元。两端各有一个节点,只在轴向上伸缩。这个单元的硬度由 EA/L 决定,也就是弹性模量×截面积÷长度。你可以把它看作弹簧常数 k。单元刚性矩阵是 [k]=(EA/L)[[1,-1],[-1,1]],它是连接两个节点的力和位移的"对应表"。
🙋
为什么是2×2的矩阵呢?弹簧常数一个数字就够了啊……
🎓
因为有两个节点。节点1受到的力和节点2受到的力,都会受"节点1的位移"和"节点2的位移"两者的影响。所以需要2行2列。看矩阵的内容,对角线上是 +EA/L,非对角线上是 −EA/L。这表示"自己移动时,自己受到回复力;对方移动时,对方受到相反的拉力"。你调节左边 E、A、L 的滑块,会看到这个 EA/L 的值变化。
🙋
我明白了。但书里也说"这个矩阵是奇异的,没有逆矩阵",我就卡在这儿了。
🎓
很好的问题。矩阵 [[1,-1],[-1,1]] 的行列式是 1×1−(−1)×(−1)=0。所以没有逆矩阵。从物理角度讲,"单元漂浮在空间里"。即使两个节点同时向右移动相同的距离,单元也不会伸长,也不会产生力——允许刚体运动。所以 {F}=[k]{u} 不能直接对 u 求解。这时候你需要加上"节点1固定在墙上"这样的边界条件。固定掉某些自由度后,矩阵被缩约,终于就有了逆矩阵,可以求解了。左边的构成选择"1单元"时,就是节点1固定的状态。
🙋
把构成改成"2单元串联"后,整体刚性变成了一半。这是怎么回事?
🎓
和弹簧的串联一样。在实际的有限元法中,多个单元的刚性矩阵被按节点编号加到一个大的"整体刚性矩阵"里。这叫做组装。2个相同单元串联时,共享节点的对角项会加上 EA/L 两次,但从自由端看的硬度就变成 k/2。所以自由端的位移翻倍。但轴力在整个截面上保持不变,所以轴应力 σ=F/A 和单元情况一样。实际的结构分析,就是把这个操作做几万倍罢了。
🙋
那也就是说,只要理解了单元刚性矩阵,再大的有限元模型原理也是一样的?
🎓
完全正确。梁单元、四面体单元、壳单元,类型增加了,但"为每个单元作刚性矩阵 → 整体加起来 → 边界条件缩约 → 求解线性方程组 → 从位移算应力"这个流程一点没变。这个1D杆单元就是这个过程最小的样本。如果能用手计算这个,就能看清楚商用求解器背后在干什么。

常见问题

两端有节点的1D杆(桁架)单元的刚性矩阵是 [k]=(EA/L)[[1,-1],[-1,1]]。E 是弹性模量,A 是截面积,L 是单元长度。EA/L 相当于"弹簧常数",表示单元在轴向的硬度。矩阵的行和列分别对应节点1、节点2的自由度,用关系式 {F}=[k]{u} 将节点力和节点位移联系起来。本工具通过改变 E、A、L 来计算这个 EA/L。
单个杆单元的刚性矩阵 [k]=(EA/L)[[1,-1],[-1,1]] 行列式为 0,不存在逆矩阵。这是因为单元"浮动"在空间中,允许刚体运动(整体平移)。即使两个节点同时移动相同的距离,单元也不会伸长,也不会产生内力。实际求解时,必须施加至少1个节点的边界条件以固定该节点,然后对刚性矩阵进行缩约,才能消除奇异性。
相同截面的单元串联时,就像弹簧的串联连接,整体刚性会降低。当每个单元的刚性为 k 时,2个相同单元串联的整体刚性为 k/2。本工具的"2单元串联"中,整体刚性是单元刚性的一半,导致自由端的位移是单元情况下的2倍。另一方面,轴力在整个长度上保持不变,因此轴应力 σ=F/A 也保持不变。
如果已知施加在节点上的力 F 和整体刚性 k_tot,则节点位移为 u=F/k_tot。这是求解 {F}=[k]{u} 的结果,在有限元法中对应于求解矩阵线性方程组的过程。轴应力是截面内的轴力除以截面积,即 σ=F/A,应变为 ε=σ/E。对于1D杆单元,轴力沿整个长度保持不变,因此应力也保持不变。

实际应用

桁架结构分析:桥梁、铁塔、屋顶桁架就是多个1D杆单元的集合体。每条杆件建模为1个杆单元,各单元的刚性矩阵按节点编号相加形成整体刚性矩阵。本工具讨论的 EA/L 和 {F}=[k]{u} 的关系正是实际桁架分析的核心。斜杆只需加上坐标变换,本质完全相同。

有限元法教学·求解器验证:大学有限元法课程必定从这个1D杆单元开始手工计算。刚性矩阵的组装、总体矩阵的组装、边界条件的缩约——这一整套流程在矩阵还很小的时候就要在脑子里学透。商用求解器的用户在验证新的单元类型或分析条件时,也总是先拿这个简单模型确认一下答案。

机械零件的轴向刚性评估:螺栓连接、拉杆、系杆、悬架连杆等受轴向力的零件,可以用1D杆单元快速估算刚性。评估螺栓连接体的刚性分配(螺栓和被连接件的弹簧常数之比)时,EA/L 的弹簧模型可以直接用于设计决策。

多自由度系统·振动分析的基础:刚性矩阵不仅用于静力分析,也是特征值分析([K]−ω²[M]=0)的出发点。与质量矩阵结合,就可以求出杆的纵向振动的固有频率。正确组装单元刚性矩阵是动分析、屈曲分析、非线性分析的前提条件。

常见误区和注意事项

最常见的错误是"直接对单个单元的刚性矩阵求逆来求解"。[k]=(EA/L)[[1,-1],[-1,1]] 的行列式为 0,没有逆矩阵。这不是程序缺陷,而是单元允许刚体运动(整体平移)这一物理特性的正确体现。必须用边界条件固定至少一个节点的自由度,对刚性矩阵进行缩约后才能求解。拘束不足的模型会在求解器中显示"奇异"或"主元为零"的错误。这是拘束不够的信号。

其次,常有人误以为"细分单元就能得到正确的杆内应力"。1D杆单元假定轴力在单元内恒定,所以对于等截面、轴力恒定的问题,1个单元的结果就和精确解一致。反过来说,当问题有分布荷载(如自重)或截面变化时,1个单元不足以表现应力分布,必须网格细化。重点不是"增加单元数就变好",而是"该单元的假设是否适用于这个问题"。

最后,"单位不一致"也常常造成计算错误。计算 EA/L 时,E、A、L 的单位如果混用(E 用 GPa、A 用 mm²、L 用 mm),数值会出错。本工具内部把 E 转换为 MPa(GPa×1000),A 统一为 mm²,L 统一为 mm,力统一为 N,这样输出的刚性单位就是 N/mm。手工验算时,也必须把单位系统统一。缺省参数(E=200 GPa、A=100 mm²、L=500 mm、F=10 kN)时,单元刚性为 40000 N/mm,自由端位移 0.25 mm,轴应力 100 MPa。这个已知解用来检验计算的正确性。

使用指南

  1. 用滑块设置弹性模量E(GPa)、截面积A(mm²)、单元长度L(mm)
  2. 输入轴力F(kN),单元刚性矩阵 k=(EA/L) 自动计算
  3. 自由端位移u=F/k、轴应力σ=F/A、应变ε=σ/E 实时更新
  4. 多个单元串联时,整体刚性用倒数和法则组合

具体计算示例

SS400钢(E=200 GPa)、截面积A=100 mm²、单元长度L=1000 mm、轴力F=50 kN的情况:单元刚性k=(200×10³ N/mm² × 100 mm²)/1000 mm = 20,000 N/mm;自由端位移u=50,000 N / 20,000 N/mm = 2.5 mm;轴应力σ=50,000 N / 100 mm² = 500 MPa;应变ε=500 MPa / 200,000 MPa = 2.5×10⁻³。

工程实践中的注意