有限元基础编程——杆单元(附Matlab源码)

引言
”有限的单元,无限的能力“这句话来自清华大学有限元分析公开课曾攀老师的开课语。想要学好有限元这门课,不光要理解理论公式的由来及简单手酸,更要结合实际应用。本栏目将带着大家Step-By-Step基于Matlab语言实现有限元的基础操作,课程代码来自《有限元分析基础教程》——曾攀,并附赠ANSYS命令流文件进行验证Matlab代码正确性。
有限元“流水线套路”:
• 求解单元刚度
• 组装整体刚度
• 未知位移求解
• 本质是线性方程组求解,求解方法有很多,基于Fortran编写的可以采用JCG开源程序包,基于Matlab编写的可以采用
\
,默认高斯消去法,也可以使用**PCG(预处理共轭梯度法)**等等,总之求解线性方程组的方法很多,我们初学者可以先使用最简单的\
,进行求解。• 对于位移边界的处理,有限元有很多方法:直接消去法、置1法、拉格朗日乘子法、罚函数法等,对于初学者可以先概念最简单的直接消去法入手,等熟悉了有限元基本过程再使用更加进阶的操作。
• 节点力、应力、应变等求解
1D杆单元
这大概是最简单的有限元分析吧,简直每本有限元教材里面都会将之作为入门案例,操作虽然简单,但也是包含了有限元分析的基础步骤。
案例

函数
主程序
结果所得位移与手算结果一致,可自行验证。
2D杆单元
坐标变换
2D杆单元在编写的时候涉及到由局部坐标系向整体坐标系变换的过程。坐标转换矩阵$T$为:
刚度矩阵、节点位移由局部坐标系、
转换到整体坐标系
、
:
进行应力、节点力计算时,位移也应该由局部坐标系转换到整体坐标系中,由弹性力学中的物理方程,有 1D 问题的应力:
案例

函数
主程序
ANSYS命令流