
很多人在学习有限元时,最先接触到的是网格、单元、节点、刚度矩阵和求解器。于是有限元很容易被理解成一种“把结构切成很多小块,然后交给计算机求解”的数值技术。这个理解并没有错,但它只是有限元的表层。如果继续追问:为什么把结构切成单元以后就可以求解?为什么节点位移可以代表整个结构的连续变形?为什么单元刚度矩阵能够组装成总体刚度矩阵?为什么有限元不直接求解微分方程,而要建立积分方程?这些问题最终都会指向同一个核心:有限元真正的数学基础,并不是“网格”,而是虚功原理、格林公式和弱形式。
从工程直觉上看,虚功原理告诉我们结构平衡应该如何表达;从数学操作上看,格林公式把微分方程中的高阶导数转移到试函数或虚位移上;从数值求解角度看,弱形式则把原本对连续解要求很高的强形式问题,转化为适合有限维近似的积分问题。三者共同构成了有限元方法的理论骨架。没有虚功原理,就很难把力学平衡写成能量意义下的整体表达;没有格林公式,就无法自然降低微分方程的导数阶次并引入边界条件;没有弱形式,有限元的形函数近似就很难真正成立。
因此,有限元的本质并不是简单地“划网格”,而是把一个连续体力学问题,通过虚功原理和数学变换,转化为一个可以由有限个自由度近似求解的代数方程组。这个过程才是有限元最深层的核心。
如果从经典力学出发,一个结构是否平衡,最直观的表达方式是微分方程。对于小变形线弹性静力问题,连续体内部的平衡方程可以写成:
其中, 是应力张量, 是体力,例如重力或惯性等效体力。这个方程表达的是一个局部平衡条件,也就是说,结构内部任意一个微小体积单元都必须满足力的平衡。
如果再结合几何方程和本构方程:
就可以得到关于位移场 的控制方程。这个方程通常包含位移的二阶导数,因此要求位移场具有较高的光滑性。换句话说,如果想在经典意义下直接求解这个微分方程,解函数不仅要连续,还要有足够连续的导数。
这种直接用微分方程表达的形式,通常称为强形式(Strong Form)。所谓“强”,并不是说它更高级,而是说它对解的要求更强。它要求平衡方程在每一个点上都严格成立,也要求边界条件在边界点上严格满足。
但真实工程问题往往并不适合直接求解强形式。复杂几何、材料突变、接触边界、局部载荷、裂纹尖端、尖角、不同单元连接等问题都会使位移和应力场不再足够光滑。对于计算机而言,直接求解强形式也非常困难,因为计算机只能处理有限维近似,而不能直接处理无限维连续函数空间。
有限元方法之所以能够处理复杂工程结构,正是因为它并不直接求解强形式,而是把强形式转化为弱形式。
虚功原理是有限元最重要的力学基础之一。它的核心思想并不复杂:如果一个结构处于平衡状态,那么对于任意满足位移边界条件的虚位移,外力所做的虚功应当等于内力所做的虚功。
用数学语言表示,就是:
其中, 是内力虚功, 是外力虚功。
对于连续体问题,内力虚功可以写成:
外力虚功则可以写成:
其中, 表示结构域, 表示力边界, 是边界面力, 是虚位移, 是虚应变。
因此,虚功原理可以写成:
这就是有限元中最核心的方程之一。
这个表达式非常重要,因为它不再要求每一个点上的微分方程都以强形式严格成立,而是要求结构在整体虚功意义下满足平衡。也就是说,平衡不再只是一个点态概念,而变成了一个积分意义下的整体概念。
这正是有限元能够处理复杂问题的关键。有限元并不是在每个点上严格满足微分方程,而是在单元和整体结构范围内,通过加权积分意义满足平衡。这样的表达更适合数值近似,也更适合用形函数构造离散方程。
如果说虚功原理提供了力学意义,那么格林公式提供的就是数学转换工具。有限元中所谓的弱形式,本质上离不开分部积分,而多维情况下的分部积分就是格林公式或散度定理。
以一个简单的一维问题为例。假设有控制方程:
这里, 是位移, 是弹性模量, 是截面积, 是分布载荷。这个方程是强形式,它包含位移的二阶导数。
为了得到弱形式,我们引入一个虚位移或试函数 ,并将方程两边乘以 后在区域内积分:
接下来进行分部积分:
这个变换的意义极其重大。原方程中出现的是 的二阶导数,而经过分部积分以后,只需要 的一阶导数即可。也就是说,格林公式把导数从未知函数的一部分转移到了试函数上,从而降低了对未知位移场光滑性的要求。
在三维连续体中,这个过程可以理解为:
其中, 是边界外法向量。这个公式把体内的散度项转化为边界项和域内梯度项。边界项自然对应外力边界条件,域内项则对应内力虚功。
这就是为什么说格林公式是强形式到弱形式之间的桥梁。没有这个数学操作,有限元就无法自然地把微分方程变成积分方程,也无法自然地把力边界条件纳入整体平衡表达中。
弱形式是有限元方法真正求解的数学对象。所谓弱形式,并不是说它不准确,也不是说它比强形式低级,而是说它对解函数的光滑性要求更弱。
强形式要求微分方程在每一个点上成立,而弱形式要求方程在积分意义下成立。对于弹性力学问题,弱形式通常可以写成:
这里, 是满足位移边界条件的试函数空间, 是满足齐次位移边界条件的虚位移空间。
这段表达看起来比强形式抽象,但它对有限元而言非常自然。因为有限元本质上就是选择一个有限维函数空间,用形函数来近似真实位移场。换句话说,有限元并不在无限维空间中寻找精确解,而是在由形函数张成的有限维空间中寻找近似解。
可以写成:
其中, 是形函数, 是节点自由度, 是有限元近似位移场。
虚位移同样可以写成:
将这些近似代入弱形式,就可以得到有限元的离散方程。
这一步非常关键。有限元不是凭空得到刚度矩阵的,而是把形函数近似代入虚功原理或弱形式后自然产生的。也就是说,刚度矩阵不是人为拼出来的,而是弱形式离散化的结果。
很多工程师使用有限元软件时,最熟悉的方程是:
但这个方程并不是有限元的起点,而是有限元离散化之后的结果。真正的起点是虚功原理或弱形式。
在线弹性问题中,应变与节点位移之间可以写成:
其中, 是应变—位移矩阵,本质上由形函数导数构成。
本构关系为:
将其代入内力虚功:
可以得到:
于是单元刚度矩阵自然出现:
外力项也可以通过虚功形式得到:
最终才得到熟悉的有限元方程:
因此,有限元中的刚度矩阵并不是一种经验构造,而是虚功原理、弱形式和形函数近似共同作用的结果。每一个单元刚度矩阵,实际上都是在问:当节点产生一个虚位移时,单元内部应变能如何变化,外力又做了多少虚功。
这就是有限元方程背后的力学意义。
弱形式适合有限元,不仅是因为它能够推导出刚度矩阵,更重要的是它降低了对近似函数的要求。
在强形式中,如果控制方程包含二阶导数,那么位移函数必须至少具有足够连续的二阶导数。这对有限元形函数非常不友好。因为普通有限元单元之间通常只保证位移连续,而不保证位移导数连续。
例如常见的位移型有限元中,单元之间通常满足:
连续,也就是位移连续。但应变作为位移的一阶导数,在单元边界处可以不连续。对于很多工程问题,这并不会妨碍有限元得到合理结果,因为弱形式只要求一阶导数在积分意义下存在。
这就是弱形式的巨大优势。
它允许我们使用相对简单的形函数,例如线性形函数、二次形函数、四边形单元、六面体单元、四面体单元等,去构造可计算的近似解。如果坚持强形式,普通有限元形函数根本无法满足足够高的连续性要求,有限元方法也就很难成为今天这样通用的工程工具。
换句话说,弱形式把问题从“每一点都必须严格满足微分方程”,转化为“在整体加权平均意义下满足平衡”。这使有限元能够容忍局部近似误差,并通过网格加密和高阶形函数逐步提高整体精度。
从工程角度看,力平衡似乎已经足够直观。一个结构处于静止状态,不就是合力为零、合矩为零吗?为什么还需要虚功原理?
原因在于,对于连续体结构,逐点写力平衡会得到微分方程,而有限元并不擅长直接处理这种局部微分表达。虚功原理则从一开始就把平衡写成整体积分形式,这与有限元的单元积分和整体组装天然匹配。
更重要的是,虚功原理不只适用于简单线弹性问题。对于几何非线性、材料非线性、接触问题和大变形问题,虚功原理仍然可以作为统一的出发点。
例如在非线性有限元中,平衡方程常写成残差形式:
其中,内力向量来自:
这个表达仍然是虚功原理的离散结果。材料可以是非线性的,几何可以是大变形的,接触状态可以不断变化,但整体思想仍然是:虚位移作用下,内力虚功与外力虚功必须平衡。
这也是为什么商业有限元软件无论处理线性静力、非线性静力、动力学还是接触问题,其理论基础都离不开虚功原理。
有限元中有两类边界条件非常重要:一类是位移边界条件,通常称为本质边界条件;另一类是力边界条件,通常称为自然边界条件。
在强形式中,这两类边界条件往往需要分别给出。位移边界条件可以写成:
力边界条件可以写成:
其中, 是位移边界, 是力边界。
经过格林公式转换后,边界面力项会自然出现在弱形式中:
这意味着力边界条件不需要像位移边界条件那样强制施加,而是作为外力虚功的一部分自然进入方程。因此,力边界条件又被称为自然边界条件。
这个特性非常重要。它解释了为什么在有限元中,施加力、压力、面载荷通常可以直接进入右端载荷向量,而位移约束则必须通过修改自由度、罚函数、拉格朗日乘子或多点约束等方式强制实现。
从这个角度看,格林公式不仅仅是一个数学公式,它还决定了有限元中边界条件的处理方式。很多看似软件操作层面的差异,其实都可以追溯到弱形式和格林公式。
在有限元后处理中,经常会看到一个现象:位移云图通常非常连续和平滑,而应力云图可能在单元之间出现跳跃。很多初学者会误以为这是计算错误,实际上这正是位移型有限元的自然结果。
因为有限元的基本未知量通常是节点位移。形函数保证的是位移场在单元之间满足必要的连续性,而应力来自位移导数:
由于导数会降低连续性,所以即使位移在单元边界连续,应变和应力也未必连续。弱形式并不要求应力在每个单元边界上完全连续,而是要求整体虚功平衡成立。
这也是为什么有限元软件常常提供节点平均应力、单元应力、积分点应力等不同输出方式。积分点应力更接近计算原始结果,而节点平均应力则经过平滑处理,更适合工程观察,但也可能掩盖局部应力梯度。
理解弱形式之后,就会明白:有限元并不是逐点满足应力连续,而是在积分意义下满足整体平衡。这正是它能够处理复杂网格和复杂几何的原因之一。
有限元的误差来源很多,例如网格尺寸、单元阶次、几何近似、数值积分、材料模型和边界条件理想化。但从数学本质上看,有限元误差首先来自于函数空间的近似。
真实解 存在于无限维函数空间中,而有限元解 只存在于由形函数张成的有限维空间中:
有限元求解的本质,就是在有限维空间 中寻找一个最符合弱形式的近似解。
这意味着有限元解不可能在一般情况下完全等于真实解,但随着网格加密或形函数阶次提高,有限元空间逐渐变得更加丰富,近似能力逐渐增强,解也会逐步收敛。
这就是所谓的 收敛和 收敛。 收敛是通过减小单元尺寸提高精度, 收敛是通过提高形函数阶次提高精度。无论哪一种,本质上都是在改善有限维函数空间对真实解空间的逼近能力。
因此,有限元精度不是来自“网格越密越神奇”,而是来自弱形式框架下函数空间逼近能力的提升。
对于线弹性保守系统,虚功原理还可以与最小势能原理联系起来。结构的总势能可以写成:
平衡状态满足:
这与虚功方程是等价的。
当我们用有限元形函数近似位移场时,本质上是在有限维空间中寻找一个使总势能驻值的近似位移场。对于稳定线弹性问题,这个驻值通常对应最小势能。
这使有限元具有非常清晰的物理意义:它不是随便找一个满足代数方程的数值结果,而是在所有允许的有限元位移模式中,寻找一个能量意义上最合理的平衡状态。
这也是为什么有限元与结构力学、变分法和能量法之间有如此深的联系。
现在可以回到文章开头的问题:为什么说有限元数值求解的核心是虚功原理、格林公式和弱形式?
虚功原理提供了力学基础。它告诉我们结构平衡不一定必须通过逐点力平衡表达,也可以通过任意虚位移下内外虚功相等来表达。这种整体平衡思想天然适合单元积分和总体组装。
格林公式提供了数学转换。它把强形式中的高阶导数通过分部积分转移出去,降低了对未知函数光滑性的要求,同时自然产生边界项,使力边界条件能够进入弱形式。
弱形式提供了数值求解框架。它允许我们在有限维函数空间中寻找近似解,使形函数、单元刚度矩阵、载荷向量和总体方程都能够自然建立起来。
因此,三者之间的关系可以理解为:
或者更工程化地说:
有限元真正强大的地方,正在于它把连续体力学、变分原理和数值近似统一在了一套框架中。
有限元方法表面上看是网格、单元和矩阵运算,实际上它背后真正支撑整个理论体系的是虚功原理、格林公式和弱形式。
强形式描述的是连续体在每一个点上的局部平衡,但它对解的光滑性要求很高,不适合直接进行一般工程数值求解。虚功原理将平衡问题转化为内外虚功相等的整体表达,使力学问题天然适合积分形式。格林公式通过分部积分降低微分阶次,并自然引入力边界条件。弱形式则在此基础上建立了有限元可以求解的数学框架,使我们能够用形函数构造有限维近似空间,并最终得到熟悉的代数方程:
因此,有限元的本质并不是简单地把结构切成很多网格,而是通过弱形式把连续体问题转化为有限维空间中的近似平衡问题。
如果说网格和单元是有限元的外形,那么虚功原理、格林公式和弱形式就是有限元真正的骨架。理解了它们,才算真正理解了有限元为什么能够计算复杂工程结构,也才能明白有限元结果的精度、误差、边界条件和应力输出究竟从何而来。