写在前面

  这里是“Python 力学”专栏,属于“力学”大类。它记录我用 Python 亲手实现力学算法的过程——重点不在“调用现成的库”,而在把求解器从零写出来。

  我一直认为,自己写一遍求解器,和调用一次库函数,学到的东西完全是两个量级。调用的时候,你只需要知道参数填什么;自己写的时候,你必须清楚单元刚度矩阵是怎么组装成整体刚度矩阵的、边界条件是怎么施加进方程组的、为什么解出来的位移需要再做一次后处理才能得到应力。这些环节只要有一处理解含糊,代码就会跑不通——它不会像软件那样替你把错的地方遮住。

  目前收录的内容从最基础的一步开始:用 Python 自编四结点单元,求解悬臂梁平面问题。程序不长,但把有限元的整条链路走通了——从网格与单元定义、刚度矩阵组装、边界条件处理,到求解与应力回代,每一步都对应着教材上的一个公式。我特意没有用任何有限元库,就是为了让这中间没有任何“黑箱”。

  之后会沿着这条线往下写:更复杂的单元、更一般的问题,以及和商业软件结果的对比验证。如果某个环节你觉得讲得太快,那是我的问题——欢迎来信指出(联系方式见“关于作者”)。