首页/文章/ 详情

有限元如何把连续场变成矩阵?从强形式到弱形式的完整主线

33分钟前浏览52

有限元如何把无穷维的连续场问题,转换为有限维矩阵方程,同时保留物理平衡,并判断计算结果是否可信?

全文只回答这一个问题。它可以拆成三问:

有限元主线与三个问题  
  1. 为什么要从强形式变成弱形式? ——强形式要求每一点都严格平衡,而我们想用的分段多项式在接缝处根本谈不上"平不平衡":一阶导已经不连续,强形式却还要求二阶导。
  2. 为什么弱形式能够变成矩阵方程? ——把"每点受力平衡"换成"做的功对得上"。功能累加,接缝就不再是障碍;再规定解只由几个节点值定住,方程也就变成有限条。
  3. 为什么求解器收敛不等于结果可信? ——求解器只保证那几条方程被解出来,不保证方程描述的是真实的结构。判据要另外建立:模型、表述、离散、代数、物理验证五层证据,见第 8 章。

有限元最后交给计算机的是一组矩阵方程,但它的起点并不是矩阵,而是连续介质中每一点的物理守恒。两者之间的路线是:

 

全文分四个部分、九章:

四部分九章的目录地图  
  • 第一部分(1–3 章) 从物理守恒到弱形式。 把"每一点都要平衡"的微分方程,改写成积分意义下的等价陈述,并交代什么样的函数才有资格参与。这一部分不含任何近似。
  • 第二部分(4–7 章) 从弱形式到矩阵方程。 做唯一的一次近似——把解限制在有限维空间里,得到       ;随后用一个两单元算例从强形式一路算到边界反作用量,再把同一条流水线换到结构力学上验证一遍。
  • 第三部分(8 章) 结果的可信度。 求解器收敛之后,结果凭什么可信:模型、表述、离散、代数、物理验证五层证据。
  • 第四部分(9 章) 主线之外的扩展。 动力学、非线性、不连续 Galerkin、等几何分析、稳定化格式等,都留到主线走通之后再给一张地图。

符号约定 (全文统一):

对象      
记号      
对象      
记号      
连续真解      
            
、             
连续试函数 集 合      
       
有限元近似场      
            
、             
连续测试空间      
       
连续测试函数      
       
离散试函数集 合      
       
离散测试函数      
       
离散测试空间      
       
节点自由度向量      
       
单元矩阵、向量      
            
、             
单元自由度向量      
       
整体矩阵、向量      
            
、             

第一部分 从物理守恒到弱形式

微分方程要求每一点都严格平衡,这个要求对分段多项式太苛刻。本部分就从这一点出发,说明为什么必须改用弱形式:第 1 章交代要解的是什么问题,第 2 章把方程换成积分意义下的等价陈述并说明这样做换来了什么,第 3 章交代换过之后什么样的函数才有资格参与。到本部分结束,方程已经改头换面,但还没有引入任何近似。

1. 有限元从什么问题出发

连续问题的未知量是一个场 ——数学上就是一个定义在整个区域上的函数。结构力学的位移场     、传热的温度场     、流体的速度与压力     、电磁的电势、声学的声压——这些量在区域内有无穷多个取值,而计算机只能存有限个数。这就是全部困难的来源。

从连续场函数到有限个自由度  

有限元的应对。 把物体切成许多小块(单元),规定未知量在每块内部只能是低次多项式——最常用的就是线性,于是整个解由有限个自由度 ——那些多项式前面的系数——完全确定。最常用的一类单元里,这些系数恰好等于节点上的场变量值(原因见第 4 章),因此习惯上直接叫"节点自由度"。至于方程如何跟着改写,是第 2 章的事。

 

本文使用的模型问题。 全文围绕同一个数学原型展开—— 稳态扩散(势场)问题 ,也就是泊松型方程(一般      可随位置变化,比经典 Poisson 方程更广)。

同一扩散方程对应传热与受拉杆问题  

最好理解的例子是稳态传热 :温度分布不再随时间变化时,流进任意一小块材料的热量,必须等于流出的热量加上它自身产生的热量。 渗流 (未知量是水头)、 静电场 (电势)、 稳态物质扩散 (浓度)写出来是同一个式子——凡是"通量正比于某个量的梯度、且稳态下守恒"的现象,都长这样。

 

式中各符号:

符号      
含义      
       
待求的场(温度、水头、电势……)      
       
材料参数(导热系数、渗透系数、介电常数……)      
       
场的梯度,即它在各方向的变化率      
       广义通量      
 (符号约定见下)      
       
散度,取"净流出"      
       
体源项:单位体积内产生的量      
            
、             
求解区域及其边界      
       
边界外法向单位向量      
            
、             
边界上给定的已知值(上划线表示"已知")      

关于通量的符号 :传热、扩散、静电等问题中, 物理上向外的通量是    (热从高温流向低温,故带负号)。本文推导一律采用      这个组合,并把      称为广义通量 ——它与物理通量差一个负号,但全程自洽。若要代入实测的物理通量,按第 2 章末尾的约定改号即可。一维杆问题没有这个困扰:     就是轴力本身。

三个式子分管三处:

  • 第一式在区域内部      ,要求每一点守恒——净流出等于该点产生的量;
  • 第二式在边界的一段      ,直接给定未知量的值       
  • 第三式在边界的另一段      ,给定穿过边界的通量       (       就是通量在外法向上的分量)。

其中     、    。一维时它退化为

 

这一个式子同时是两个物理问题,第 6 章的算例会用到它的双重身份:

数学量      
稳态传热      
一维受拉杆      
       
温度              
轴向位移              
       
导热系数      
轴向刚度              
       
体热源      
分布轴向载荷      
       
热流通量的相反数(见上)      
轴力      
Dirichlet 条件      
给定温度      
给定位移(固定端)      
Neumann 条件      
给定热流      
给定端部力      

这个提法称为强形式(strong form) ——"强"指它要求方程在每一个点上严格成立,也因此要求      具有足够高阶的导数。这个要求正是第 2 章要处理的麻烦。

强形式中的区域平衡与两类边界条件  

两类边界条件提供的信息不同。


     
规定的是      
传热      
结构      
            
(Dirichlet)      
未知量本身      
恒温壁面      
固定端位移      
            
(Neumann)      
法向通量      
给定热流/绝热      
施加的表面力      

这两类在弱形式中的地位也完全不同:     上的条件必须显式施加,     上的条件会在分部积分后自动进入。这一点第 2、3 章会说清。


2. 为什么要把强形式改写成弱形式

强形式对解的要求太高。 式中含二阶导数,意味着      必须处处二阶可导。但现实中材料会分界、截面会突变、载荷会集中,解本来就不那么光滑;更要紧的是,我们打算用的分段线性函数根本达不到这个要求。

分片多项式在单元界面处不满足强形式要求  

残差:还有多少没平衡。 把一个候选解代回强形式, 本应处处得零 ——那是真解才有的性质。候选解够不着真解时,代回去总要剩下一点:

 

物理上,残差就是"净流出减去源",即某点上还剩多少没抵消掉的量;在结构力学里它就是不平衡力 。

为什么不能逐点检查残差。 取一个分段线性的候选解:它在单元内部是直线(二阶导为零),在节点处一阶导跳变。于是强形式残差不能作为普通函数在单元界面上逐点定义 ——界面两侧通量不等,那里集中着一份没抵消的力,而它挤在零厚度的面上,不是"单位体积的量",强形式的提问方式装不下它。也就是说,"逐点检查残差是否为零"这个问题对这类函数提不出来 。

提高单元阶次并不能解决这一点。二次单元的二阶导在单元内部存在了,但相邻单元之间仍只有      连续,界面上一阶导照样跳变。 症结在界面连续性,不在多项式次数 (详见附录 2)。

那就换个问法。 逐点行不通,是因为"某一点上平不平衡"这个问题本身依赖二阶导。既然如此,就不要盯着单点,改成把残差摊到整个区域上去称量 ——要求它对测试空间中的每一个允许测试函数,称量结果都为零。注意是"每一个",不是某一次称出零就算过关。

用测试函数从多个方向整体称量残差  

这一步用两个动作完成:先把残差乘上一个函数再积分( 换问法 ),再对得到的式子做分部积分( 降低对      的要求 )。前者解决"怎么问",后者解决"谁有资格回答"。

动作一:乘      并积分,把"力"变成"功"。

这里的      叫测试函数 (test function),是我们自己挑的一个已知函数 ,不是待求量。它充当探针:拿它去和残差作内积,就是从某一个角度问一次"平不平衡"。     可以任意取(唯一的限制在 Dirichlet 边界上,见第 3 章),取得越多,检验得越彻底。

在力学里      有个现成的名字: 虚位移 ——一个假想的、微小的、不违反约束的位移。这样一来,残差是单位体积上的不平衡力,于是

 

于是"每一点合力为零"就换成了" 对任意虚位移,总虚功为零 "。两者等价——若某处合力不为零,总能挑一个集中在那里的      把功做出来。这一步之所以有意义,是因为功可以累加、可以积分,而"逐点为零"不能 。

动作二:分部积分,把虚功拆成内、外两部分。 从

分部积分降低正则性要求并引出边界通量  
 

出发,用散度的乘积法则

 

移项、对      积分,再对最后一项用散度定理:

 

边界项按      拆开。

 
  • 在        上,测试函数按定义取零(理由见第 3 章),该项整体消失—— 这正是        上未知的边界反作用量不必事先知道的原因 (结构中即支反力,传热中即维持恒温壁面所需的热流);
  • 在        上,       已由边界条件给定,直接代入。

于是得到弱形式 :

 

左边是内部项——结构力学里就是应变乘应力,即内力虚功 ;右边是体力与边界力做的外力虚功 。弱形式读作内力虚功 = 外力虚功 ,这正是虚功原理。

"降阶"降的是什么。 不是方程的阶——它还是二阶。变的是两个导数的归属:

 

于是对      只要求一阶弱导数,     分段多项式合法。这是主要目的,另外白拿两样:边界项自动出现,成为自然边界条件;     与      地位对称。代价是      也必须可导,且方程只在积分意义下成立。

通量符号的约定。 若把物理向外通量定义为     ,则边界项应写成     。正负号取决于通量定义,推导时必须保持一致。

其他方程(线弹性、不可压、对流扩散、四阶的梁板问题)走的是同一条路线,但恒等式、边界项含义与分部积分次数各不相同,见附录 1。


3. 什么函数有资格进入弱形式

弱形式里反复出现"对所有      成立"。要把这句话说清楚,得先讲明白      和      各自能从哪些函数里挑。

能量有限:    

 

即      且其一阶弱导数    。泊松问题的能量含     ,在结构力学中      对应应变,这一项就是应变能。所以      的物理含义是: 位移不能到处发散,应变不能到处发散,储存的总能量必须有限。

它管的是积分而不是每一点,所以不要求经典导数处处存在——这正是分段多项式能够进入的原因。但允许到什么程度需要说准 :

  •       连续、       在单元界面上有限跳变: 可以属于       
  •       本身跨界面发生跳跃: 通常不属于       ,因为这样的间断会产生分布型导数。

孤立点上修改取值不影响函数的等价类,但跨界面的间断不是"孤立点"。

试函数空间:谁有资格当候选解。 以一维问题、两端给定     、     为例:

试函数与测试函数在 Dirichlet 边界上的区别  
 

上面式子的意思是:     是一大把曲线的集 合——左端全都钉在 0、右端全都钉在 1(这是两个边界条件),中间形状各异,但能量都必须有限(这是     )。真实解就是这堆曲线中的一条。一般区域上写成

 

测试函数空间:允许怎样去"拨动"它。 设     ,给它一个微小扰动     。在      上扰动后仍须满足     ,而原来的      已满足     ,所以

 

物理上:     是真实位移,     是虚位移。固定端的真实位移被约束住,固定端的虚位移也必须为零——你不能"虚拟地"去挪动一个焊死的支座。

 

为什么连"微小变化"也不允许。     是给定的数据,不是待求的量,这是硬约束,没有"近似满足"这一档。只要     ,对任何     都有     ——它不是"稍差一点的候选",而是直接掉出集 合     。     只能让偏离变小,不能让它变成零。

用那把曲线来想:     里所有曲线的左端都钉死在同一点,允许的移动只能是"保持钉死、改变中间形状",方向必然取自     。(数学上说,     不是线性空间而是仿射集 :取一个满足边界条件的     ,则     。)

限制只在      在      上和区域内部,     完全自由——那里给定的是通量而非位移,边界值本来就是待求的。这个不对称直接带来第 2 章的结果:     上的边界项因      而消失,边界反作用量不必事先知道就能推进求解;反过来, 想把它反求出来,恰恰要用一个在      上不为零的      做后处理 (第 6 章算例会用到)。

连续弱问题。 至此可以完整写出:寻找     ,使得

连续弱形式仍是无限维问题  
 
 

读作: 对每一种允许的虚拟变化     ,内部响应都等于外部作用。 不同的      是不同的探针——有的只看局部一小块,有的看整体走势;对每一根探针都平衡,     就是连续弱解。

注意这一步还没有做任何离散近似。 从给定强问题建立与之相容的连续弱问题,不是有限维近似;在适当的正则性与边界条件下,强解与弱解相容。有限元的离散误差要到第 4 章、把无限维空间替换成有限维空间时才引入。

为什么普通有限元只要求      两个一维线性单元拼成的函数

 

在公共节点处函数值连续,但左右斜率可以不同(    ),于是     、    

物理上: 位移不能断开,但应变可以跳。 材料不能撕裂,所以      必须连续;而相邻单元的应变本就允许不同(想想两段刚度不同的材料交界处),所以斜率跳变可以接受。只要各单元内梯度有限,就有     ,故     —— 能量有限,够格参赛 。但其经典二阶导数在节点处不存在,一般不属于     

这正是降阶的意义: 强形式要      的二阶导数,折线给不出;弱形式只要一阶弱导数,折线就合法了。


第二部分 从弱形式到矩阵方程

全文唯一的一次近似在这里发生:把解限制在有限维空间里。第 4 章说明这个空间怎么造、凭什么判断解得好不好;第 5 章把它落到实处——单元矩阵、组装、边界条件、求解;第 6 章用一个两单元算例从强形式一路算到边界反作用量,闭合整条主线;第 7 章把同一条流水线原样搬到结构力学上,验证它不依赖于具体的物理问题。

4. 有限维近似与 Galerkin 方法

网格、单元与节点。 计算区域被划分成有限个单元:    。常见单元包括一维杆与梁单元,二维三角形、四边形单元,三维四面体、六面体单元,以及板、壳、界面和接触单元。

形函数。 以长度      的一维两节点线性单元为例:

 

它们满足节点插值条件     ——正是这个条件保证了自由度      就是节点      处的场变量值本身。形函数做三件事:在单元内部插值场变量、建立自由度与连续场的联系、决定有限元近似空间及其收敛能力。

形函数把无限维函数空间压缩为有限维空间  

有限元空间。 第 3 章的试函数空间     (候选解住的地方)与测试函数空间     (探针取自的地方)都是无限维的——候选解有无穷多条,探针有无穷多根。有限元各取其中有限维的一部分:

 

这里的      要求      里每个函数都真正够格:能量有限、在      上取到规定值。做到这一点的叫协调有限元 ,本文主线就是这一类。非协调元与不连续 Galerkin 故意放弃这一条以换取别的好处,见第 9 章与附录 4。

    由分段多项式张成,两者的差别仍在 Dirichlet 边界上:     中的函数满足     ,     中的函数在那里取零。离散近似写作

 

Galerkin 方法:一个需要说明的选择。 试函数空间是"解的候选形状",测试函数空间是"检验用的探针"——本是两件不同的事,原则上可以各选各的。探针取 Dirac 函数(只在若干个点上检查)就成了配点法;取     (残差对各自由度的导数)则给出最小二乘法。

Galerkin 为什么常取同一空间  

Galerkin 法的选择是:探针就用形函数本身,两者取同一组      三个理由:

  • 数量正好 :       个形函数当探针,得到        个方程,配        个未知数;
  • 力学上本就如此 :       是虚位移,而虚位移是位移的变分,只能住在位移住的地方(第 3 章);
  • 结果好 :       与        地位对称;当双线性型        本身对称时离散矩阵也对称,且解具有最优投影性质(第 8 章)。

需要限定: 仅仅采用 Galerkin 方法并不能保证任意问题的矩阵都对称 。矩阵对称来自      本身对称、且试函数与测试函数取自同一空间这两个条件的叠加。对流占优问题会故意打破这种对称(Petrov–Galerkin/SUPG,见附录 4)。

离散问题。 现在可以写出有限元真正在解的问题了。回忆第 3 章的连续弱问题——寻找     ,使      对一切      成立,其中      是内部响应、     是外部作用。

把其中的两个空间换成有限维的,就得到离散问题 :寻找     ,使得

 

两者逐项对照,只改了三个地方:


     
连续弱问题      
离散问题      
未知量      
            
(一条曲线)      
            
(         个数         )      
检验范围      
            
(无穷多根探针)      
            
(         根探针)      
            
、         的定义      
—      
完全不变

第三行是关键: 双线性型与载荷项一个字都没动 ,物理内容原封不动。变的只是"在哪里找解"和"用多少根探针检验"。

而"对一切      成立"这句话,实际上只是      个条件。因为任何      都是形函数的线性组合,只要在每个形函数上分别成立,对整个空间就自动成立:

每个测试方向对应矩阵方程的一行  
 

把      代进去,未知数正是      个自由度     。 这已经是一个代数方程组了 ,第 5 章只是把它按单元具体算出来而已。

换成"残差"的说法。 定义弱残差泛函

 

它衡量"外部作用减去内部响应"还差多少,是一个作用在测试函数上的泛函,而不是一个逐点取值的函数——这样定义正是为了避开第 2 章那个麻烦:强形式残差      在单元界面上并不是普通函数。于是离散问题可以写成

 

它与      一般并不相等——后者要用到      的二阶导,而      全程只用一阶导(两者的确切差别见附录 3)。习惯上仍把上式读作"残差与测试空间正交"。

正交不等于处处为零。 这是全文最重要的理论结论之一:上式只保证残差在有限维测试空间上的投影为零。举个最简单的:在      上取

 

虽然     ,但      显然不处处为零——只是正负部分在积分中抵消了。     这根探针只能称出"总量",称不出分布。

探针有限,就一定有看不见的东西,这正是离散误差的来源 (误差究竟有多大,第 8 章用 Céa 引理给出定量的界)。反过来,只有探针足够丰富才能推出残差为零:若      对一切      成立,则可取     (需     ),得     ,从而      几乎处处。

三个层次必须区分。

 

后两层差在两处:


     
未知量      
检验函数      
是否为有限维近似      
连续弱形式      
真解         ,取自无穷维的              
遍历整个无穷维              
否      
离散有限元      
近似解         ,取自有限维的              
只用          中的          根      

空间离散误差就在最后这一步引入 ,它同时截断了两样东西:解的搜索范围从      缩到     ,检验的角度从无穷多根缩到      根。网格加密或阶次提高,等于两条腿一起扩张,离散解才有可能收敛到连续弱解。(工程计算中除此之外还有模型误差、积分误差、迭代误差和数据误差,见第 8 章。)


5. 从单元方程到整体求解

把      代入弱形式,依次取     

 

但这个全局积分不便直接计算。实际流程是:

 

第一步:单元矩阵。 积分按单元拆开,在每个单元上计算

从节点自由度到单元刚度矩阵的局部转换链  
 

其中      是形函数的梯度矩阵,作用是把节点自由度换算成梯度(第 6 章 ③ 有一维线性单元的具体推导)。这个      的形式贯穿所有问题,只是中间的材料量随物理问题改变(第 7 章)。

第二步:等参映射与数值积分。 实际单元形状不规则,把参考单元映射到物理单元:

等参映射、雅可比变换与高斯积分  
 

几何与场变量使用同一组形函数,称为等参思想 。导数经雅可比矩阵变换:

 

单元积分用高斯积分:

 

(取绝对值以不依赖单元定向;实际网格通常约定各单元定向一致、    ,此时绝对值可省。     变号意味着单元翻转,属于网格错误。)

积分方案与单元稳定性密切相关:积分点不足会产生零能模态(沙漏),某些问题中全积分会导致锁死,减缩积分与选择性积分需与具体单元理论配套(机理见附录 4)。

第三步:组装。 按局部自由度与全局自由度的对应关系累加:

局部单元贡献按共享自由度组装为整体矩阵  
 

    是自由度映射矩阵 ,记录"这个单元的第几号自由度,是全局的第几号"。以三节点两单元为例,单元 2 连接全局节点 2、3,于是

 

也就是把      的单元矩阵搬到      中正确的位置,其余补零。求和时,公共节点(这里是节点 2)上两个单元的贡献自动叠加。

实际程序里不会真的构造    ——那太浪费。代码只存一张编号表,按索引把      的元素累加到      的对应位置。上面的写法只是把这件事表达成矩阵运算,便于推导。

物理意义是:相邻单元共享节点自由度、公共节点处满足位移兼容、各单元在公共节点上的内力累加、最终形成整体平衡。由于一个节点只与邻近单元的节点直接耦合,     是稀疏矩阵。

第四步:边界条件。 Neumann 条件(自然边界条件)不需要像 Dirichlet 那样去约束自由度,但边界积分    仍要照算并组装进    ——"自然"指的是它自动出现在弱形式里,不是指它不用算。Dirichlet 条件(本质边界条件)则根本没出现在弱形式里 。对照弱形式就能看清两者的差别:

Dirichlet 与 Neumann 边界条件进入系统的不同方式  
 

    是方程右端的一项,算进      就完事;     却写在候选解的范围里(第 3 章),式子本身不含它。既然如此,解出来的      就没有任何机制保证边界取值正确,必须在代数层面显式施加:直接消元、矩阵行列修改、罚函数法、拉格朗日乘子法、Nitsche 方法。

对本文这类纯扩散问题,未施加 Dirichlet 条件前      是奇异的——零空间是常数场(整体温度可以任意平移);未约束的线弹性问题同理,零空间是刚体模态。这不是错误,而是物理事实的正确反映:没有参考点,解只能确定到相差一个常数或一次刚体运动。(并非所有问题都如此,例如含 Robin 边界或反应项时刚度阵本身就可能非奇异。)

第五步:求解    。矩阵性质全部继承自前面的选择:对称来自      对称加 Galerkin,正定来自应变能加足够约束,稀疏来自形函数的局部支撑。中小规模用直接法(Cholesky/    ,一次分解可多次回代),大规模用迭代法(预条件共轭梯度、多重网格)。

矩阵结构与求解器选择  

这一步的展开不在本文范围内。直接法与迭代法的原理、预条件的作用、条件数为何随网格加密而恶化,《矩阵求解》系列有系统讨论,可以参看。


6. 贯穿算例:两个单元,从强形式算到边界反作用量

前五章把整条路线讲完了,但还没有算出过一个数。这一章用第 1 章那个一维稳态扩散问题走完全程——从强形式出发,经弱形式、单元矩阵、组装、边界条件,一直算到节点值、单元通量和边界反作用量,最后与解析解逐项对照。

两单元算例从局部矩阵到整体守恒的完整闭环  

取常数     、常数分布载荷     ,左端固定、右端受给定通量 :

 

按前面的对照表,这既是"左端恒温、右端给定热流的导热杆",也是"左端固定、右端受轴向力     、承受均布载荷的拉杆"。

① 弱形式。 按第 2 章,寻找     ,使得对一切     

 

这一步还没有离散 :     仍是无穷维空间      中的真解,     也遍历整个     。式子与原方程等价,只是换了个说法。注意右端的     ——Neumann 条件已经自动进来了。

② 离散。 取两个长度      的线性单元,节点位于     ,自由度     

③ 单元矩阵。 先算     。单元内     ,两个形函数是     、    ,求导得     、    ,于是

 

    就是把节点自由度换算成梯度的那个矩阵 (结构力学中即应变—位移矩阵)。这里它是常数,因为线性单元的斜率在单元内不变。代入     

 

均布载荷平分到两端节点。

④ 组装。 两个单元的      完全相同,区别只在它们占据全局矩阵的哪几行几列。单元 1 连节点 1–2,单元 2 连节点 2–3,各自摊到      里:

 

节点 2 被两个单元共用,所以    位置上    ;节点 1 与 3 各只属于一个单元,保持为 1。载荷向量同理,节点 2 处两个单元各分到     ,合为     

 

注意      只出现在节点 3——它来自弱形式右端的      一项,而     、其余形函数在该点为零。 Neumann 条件就这样自动变成了一个节点载荷。

⑤ 施加 Dirichlet 条件。    ,划去第一行第一列,剩下

 

⑥ 求解。

 

⑦ 与解析解比较。 精确解为

 

代入      与     ,得到的正是上面的     、    —— 节点值一分不差 。这是一维常系数问题的特殊性质(此时有限元解在节点处与真解重合),二三维不会这么巧,但足以说明流程没跑偏。

解析解、节点值与通量回算  

⑧ 回算通量。 由      求导得单元内通量(结构中即轴力),每个单元内为常数:

 

精确通量为     ,是线性变化的。用单元中点去比:     处精确值为     ,     处为     ——与上面两个单元常数值完全吻合。

这不是巧合,而是超收敛 :在合适的条件下,导数类结果在单元内某些特定点上的精度高于其他位置。但要注意限定——本例是常系数、均匀一维网格、真解为二次多项式且积分精确,条件相当理想; 一般问题中超收敛点的存在与位置都依赖于单元类型、网格规则性与解的光滑性,不能想当然地推广 。

顺带澄清一个常见说法:商业软件在积分点上算应力,首要原因是本构积分本来就在那里执行 (塑性、损伤等都以积分点为状态载体),而不单是精度考虑。节点应力通常由外推、恢复或多单元平均得到,其可靠性取决于单元、网格与所用的恢复方法(如 ZZ 恢复,见附录 3)。

后处理中的通量、积分点状态与边界反力  

⑨ 回算边界反作用量。     上那个未知量(本例中即左端固定处的量:结构读法下是支反力 ,传热读法下是维持该处温度所需的热流 )对应被划掉的那一行。回到组装后的完整方程,第一行为

 

代入      与     ,得

 

校验整体守恒 :外部输入总量为分布源      加端部通量     ,     恰好等大反号——热学上读作"流进多少就得从恒温端带走多少",力学上读作"外载荷与支反力平衡"。这正是第 3 章那句话的兑现—— 求解时不需要知道它,求解后用一个在      上不为零的检验函数(这里就是被划掉的那一行)把它算出来 。这个校验也是第 8 章"守恒检查"最基本的一条。


7. 结构力学有限元是同一框架的向量版本

第 1 到 6 章全程用的是一个标量问题。而工程中最常见的有限元分析是结构力学,未知量是向量位移场。那么前面那套流水线要不要推倒重来?

不要。 换的只是符号,流程一步不改。 下面这张表就是全部的过渡工作:

标量扩散与线弹性有限元的统一框架  
标量泊松问题      
线弹性问题      
标量场              
位移场              
梯度              
应变              
通量              
应力              
材料参数              
材料矩阵              
体源              
体力              
边界通量              
面力              
内部响应              
内力虚功      
            
/             
位移边界         /力边界              

控制方程:同一个式子的向量版。 第 1 章的标量强形式,其实已经把三件事压缩在一行里——梯度、本构、守恒。把它们拆开写,再逐项换成向量,就是线弹性:


     
标量问题(第 1 章)      
线弹性      
几何关系      
              
本构关系      
              
守恒/平衡      
              

左右两列是同一条链子 :待求场 → 取梯度 → 乘材料参数得通量 → 要求通量守恒。区别只是标量换成向量、     换成矩阵     、梯度换成对称梯度(因为纯转动不该产生应力)。

三者的性质并不相同:守恒律来自物理,几何关系是纯粹的定义,而本构同样承载物理假设 ——它不是符号上的补充,而是对材料行为的建模,塑性、损伤、黏弹性都是在这一条上做文章。

边界条件同样一一对应:     on     (对应      on     ),     on     (对应      on     )。

离散。 位移插值     ,代入几何方程得

 

    称为应变—位移矩阵,     是几何方程中的微分算子。再由本构     

弱形式即虚功原理。    ,即

 

代入插值即得

 

与第 5 章的     结构完全相同 ,只是标量      换成了矩阵     。组装、边界条件、求解一字不改,最终得到

 

第三部分 结果的可信度

主线到此已经走通,但走通不等于走对。求解器收敛了,结果就可信吗?这是工程中最容易被忽略的问题,需要模型、表述、离散、代数、物理验证五层证据逐层核对。

8. 怎样判断有限元结果可信

结果偏差主要来自这几处:

 

要判断结果能不能信,需要逐层核对下面五个环节,每层都有各自独立的证据。

有限元结果可信度的五层证据  

第一层:模型层。 几何、材料、载荷和边界条件是否符合实际。 模型错了,加密网格不会带来真实答案 ——这是最常被忽略的一层,也是最难验证的一层。

第二层:表述层(强形式 → 弱形式)。 有限元解的是积分形式,不是原方程,这一步忠实吗?强解一定是弱解;弱解若足够光滑也能还原成强形式,连      上的条件一并还原—— 改写本身不引入近似 。而解不够光滑时(     间断、集中载荷、凹角)经典解根本不存在,弱解却仍然存在且唯一: 弱形式是推广,不是退化版 。

这份存在唯一性由 Lax–Milgram 保证,工程上要核对的就是它的三个前提:材料参数保证强制性(    、     正定)、Dirichlet 约束足够、载荷与边界数据可积(二维的集中点载荷已经越界)。 不满足的话问题本身就没有良定的解,后面几层做得再好也没有意义。

连续问题的良定性先于离散  

第三层:离散层。 单元类型、网格、积分方式、变量空间是否稳定且收敛。

这一层要回答的是:我用这套网格算出来的解,比理论上能达到的最好结果差多少? 第 4 章已经说明误差从何而来——探针有限,残差里总有看不见的成分;这里要把它量化。

Céa 最佳逼近、网格收敛与独立验证闭环  

先看后半个问题。     一旦选定,里面的函数就那么多,其中离真解最近的那一个已经是天花板了——这个最短距离记作

 

    是"取遍      里所有函数所能达到的最小值",     是能量范数(大致衡量两个解的应变/梯度差多少)。这个量与方程无关,纯粹是分段多项式能把真解逼近到多好的问题。

而有限元实际算出的      未必就是那个最好的。 Céa 引理说的是:它也差不了太多。

 

左边是实际误差,右边是天花板乘一个常数。     和      来自双线性型      的两条性质: 连续性 (     是上界,作用不会无限放大)与强制性 (     是下界,变形一定要付出正的能量代价)。对良态的物理问题,     是个不大的常数。

这句话的价值在于它换掉了问题 :误差不再取决于方程有多难解,而只取决于      逼近真解的能力—— 误差问题被转化成了插值问题 。插值论现成的结论是:对      次单元,在解足够光滑、网格规则且问题稳定时,

 

提高精度有三条路线:    -加密(减小单元尺寸)、    -加密(提高阶次)、    -加密。裂纹尖端、尖角、材料界面会降低解的光滑性,使理想收敛阶无法实现,此时需要局部加密、富集函数或特殊单元。

需要注意,     并非总是"不大的常数"。在极端物理参数下(近不可压材料、极薄结构)它会急剧变大,于是不等式虽然仍成立,右边却被放大到毫无信息量—— 估计还在,保证没了 。各类锁死与稳定性问题都属于这种情形(附录 4)。

第四层:代数层。 线性或非线性方程是否被充分求解。 残差下降只表示离散代数问题被解到了指定精度 ,与物理正确性无关。

第五层:物理验证层。 是否满足守恒、能量平衡,是否与解析解、实验或独立方法对照过。

实用检查清单:

可信结果需要多种独立证据  
  • 单位和量纲是否一致;
  • 载荷方向与边界法向是否一致;
  • 材料参数是否保证强制性(      、       正定),Dirichlet 约束是否足够;
  • 解本身是否光滑到值得追求高阶收敛,还是本就含有奇点;
  • 边界反作用量与外部输入是否平衡,即整体守恒是否成立(如第 6 章算例第 ⑨ 步);
  • 网格加密后关键结果是否趋于稳定;
  • 是否通过 patch test 或简单解析解;
  • 局部应力奇异是否被误认为真实峰值;
  • 应力是否从高斯点取值,而非直接读节点值;
  • 迭代残差下降是否只代表代数收敛;
  • 是否有实验或独立模型验证。

第四部分 主线之外的扩展

前面八章只处理了线性、静态的问题。随时间演化和非线性各自在这套框架上添了什么,其他有限元方法又分别针对什么困难——以下是一张地图,不再推导,细节留在附录。

9. 动力学、非线性与其他有限元方法

动力学增加了什么。 时间一旦进来,方程按时间导数的阶次分成两类。

结构动力学与瞬态热传导的时间离散  

二阶:结构动力学、波动、声学。 惯性项带来     

 

一致质量矩阵     ;集总质量矩阵把质量集中到节点,通常为对角矩阵,适合显式计算。     为阻尼矩阵。

一阶:瞬态热传导与扩散 ,也就是本文模型问题(第 1 章)加上时间项后的样子:

 

这里的      是热容矩阵 ,与上式的阻尼矩阵形式相同、含义不同。没有惯性项,因为热传导里不存在"温度的加速度"。

两类的共同点是: 空间离散之外还需时间离散 (Newmark、generalized-    、中心差分、Runge–Kutta、后向欧拉),因此要讨论时间步长与数值耗散。    、     的组装方式与静力问题完全一致。

非线性增加了什么。 写成残差方程

 

用 Newton–Raphson 迭代:    ,其中切线刚度     。核心变化是:刚度不再固定;需要增量迭代;每步都要重算切线刚度与残差;收敛性本身成为新问题。非线性来源包括材料(塑性、黏弹性、超弹性、损伤)、几何(大位移、大转动、大应变)、边界(接触、摩擦、间隙)与多物理耦合。

非线性有限元的 Newton 迭代闭环  

其他有限元方法解决什么问题。

方法      
主要解决的问题      
混合有限元      
多变量耦合、不可压约束      
杂交有限元      
单元内部与界面使用不同未知量      
不连续 Galerkin(DG)      
允许单元间不连续      
XFEM      
裂纹和内部间断      
等几何分析(IGA)      
高阶连续性与精确几何      
谱元法      
高阶精度      
虚单元法(VEM)      
复杂多边形/多面体网格      
自适应有限元      
根据误差估计自动调整网格或阶次      

结语

有限元真正完成的转换:

 

弱形式真正解决的问题:

 

工程可信度真正依赖的条件:

 

求解器收敛,只说明给定的离散代数问题被解出来了;它既不能证明连续模型正确,也不能代替网格收敛和物理验证。


附录 补充说明

正文中标注"见附录 x"的几处,在这里补齐。

附录 1 其他方程的弱形式

三步动作不变: 乘测试函数 → 用相应恒等式把导数匀给      → 边界项按边界类型拆开 。变的有三处。

其一,边界项代表的物理量随算子改变。

问题      
弱形式主项      
边界项的物理含义      
泊松/稳态热传导      
       
法向通量              
线弹性      
       
面力              
不可压问题      
额外出现              
法向总应力      
对流扩散      
只对扩散项分部积分,对流项          保持原样      
扩散通量      

其二,分部积分次数由算子阶次决定。 对相应的对称椭圆问题、采用原始变量(位移型)弱形式时,     阶算子做      次,     与      各带      阶导数,试函数属于     、单元间需      连续:

  • 二阶问题(      ):      、       单元;
  • 四阶问题如梁与薄板(      ):需       、       连续,边界项同时含剪力弯矩 。       单元难造,这正是板壳中大量采用非协调元、离散 Kirchhoff 元或混合格式的原因;Timoshenko 梁与 Mindlin 板则通过把转角提升为独立未知量把阶次降回二阶,代价是可能出现剪切锁死。

其三,Galerkin 是否仍然最优。 泊松、线弹性这类算子自伴正定,弱形式对应能量泛函,Galerkin 解是能量范数下的最优投影。对流占优时算子不自伴,此性质失效。

附录 2 提高阶次与      连续空间

普通拉格朗日单元无论几次都只在界面上保持     ,界面处一阶导跳变、二阶导在分布意义下含奇异项。要获得      连续,需换用 Hermite 单元(节点自由度含转角)、B 样条或 NURBS 基(等几何分析)。但即便如此,     通常仍不为零(除非有限维空间碰巧包含真解),弱形式照样需要。

附录 3 弱残差泛函的分解与后验误差估计

第 4 章定义的弱残差泛函      只用到      的一阶导,因此对      有限元解总是有定义。把      逐单元分部积分,可以看清它由三部分组成:

 

其中      表示跨单元界面的跳跃量。 只有第一项是普通的      内积 ;只有当      光滑到二阶导存在(例如      空间)时,后两项才消失,     才退化成     。这也正是第 2 章那句"界面上装着一份没抵消的力"的确切写法:用分布的语言,     在界面上含有强度为通量跳跃量的脉冲项。

这三项恰好构成残差型后验误差估计的度量对象:单元内部残差反映该单元内方程满足得如何,界面跳跃反映相邻单元之间应力/通量的不协调程度,Neumann 项反映边界条件的满足程度。三者加权组合给出各单元的误差指示子,是自适应加密的驱动信号。

另一类是回收型估计 (如 Zienkiewicz–Zhu):把光滑化(恢复)后的梯度当作"精确解",与原始梯度之差即为误差估计。工程软件中的应力光顺与自适应网格多基于此。

附录 4 稳定性问题的机理

网格更密并不自动保证结果正确。离散空间、积分方式与变量组合还必须满足稳定性条件。

  • 体积锁死 :三维或平面应变的各向同性线弹性中,近不可压材料(      )的低阶单元离散空间里几乎不存在等容变形模式,变形被人为掐死,结构过刚。(平面应力不受此约束,不出现体积锁死。)
  • 剪切锁死 :低阶 Timoshenko 梁、Mindlin–Reissner 板壳一类离散中,纯弯曲会附带虚假剪切应变,而薄结构的剪切刚度极大,一点虚假应变就吃掉全部能量。(并非所有        单元都会剪切锁死,问题出在这类位移与转角独立插值的格式上。)
  • 两者同源: 约束数与自由度数失衡 ,离散空间被伪约束占满。对策是减缩积分、选择性积分、B-bar、混合格式、EAS。
  • 沙漏模式 :减缩积分过头会使单元刚度阵秩亏,出现能自由变形却不产生应力的零能模态。
  • inf-sup(LBB)条件 :引入拉格朗日乘子(压力、接触力)后问题成为鞍点问题,两个空间不能任意组合,否则矩阵奇异或压力振荡。不可压流体的混合形式为
 

速度空间与压力空间必须满足 inf-sup 条件(如 Taylor–Hood 组合)。

  • 对流占优振荡 :算子不自伴,标准 Galerkin 产生非物理振荡,需流线迎风 Petrov–Galerkin(SUPG)等稳定化格式,即让测试空间不再等于试函数空间。
  • 其他常见问题:接触罚参数过大导致病态、过小导致穿透;网格畸变导致雅可比矩阵恶化。

有限元的正确性取决于:

 

附录 5 Dirichlet 条件的弱施加

罚函数法与 Nitsche 方法不强制测试函数在      上取零,而是把 Dirichlet 条件以附加项的形式弱施加。此时边界值允许有小偏差,代价是引入罚参数或稳定化参数。正文第 3 章讨论的是标准的强施加方式。



来源:有限元先生
非线性UM声学裂纹电场理论材料控制
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2026-09-09
最近编辑:33分钟前
外太空土豆儿
博士 我们穷极一生,究竟在追寻什么?
获赞 46粉丝 48文章 120课程 0
点赞
收藏
作者推荐

Nature都在推,PINN到底有多火?

上周有个师弟问我:想学PINN(物理信息神经网络),有没有什么好的资料推荐?我让他先去arxiv搜搜看。结果他搜完更懵了——出来几千篇论文,挑了半天不知道先看哪篇。好不容易找到几篇感兴趣的,作者没放代码。去GitHub搜了一圈,repo倒是有,star数个位数,也不知道能不能跑。这事儿我太熟了。PINN这个方向分支多,自适应训练、区域分解、不确定性量化、跟KAN结合、跟扩散模型结合、跟强化学习结合……每个分支都要重新找文献,光是整理就花掉好几天。所以我干脆花时间把所有能找到的PINN必读论文和代码整理了一遍,做了一个一站式资源网站。这个网站里有什么?01目前收录了267篇PINN领域必读论文,覆盖从入门到顶会的完整学习路径。每篇论文都标注了论文链接,有开源代码的也一并附上GitHub地址。全部按研究方向分类,还支持实时搜索——输入关键词就能过滤出相关论文,不用一页一页翻。四大板块,从入门到顶会02🔥前沿热门思路追踪PINN最新研究热点:自适应PINN、优化与训练策略、采样与离散化方法。如果你想紧跟前沿,从这里开始。🔗PINN×其他技术15个交叉方向,包括PINN+KAN、PINN+Transformer、PINN+扩散模型、PINN+大模型、PINN+强化学习、PINN+知识蒸馏、PINN+CNN等。想看PINN跟某个具体技术怎么结合,直接点进去就行。📚入门相关文献这个板块对新手最友好。有带中文注释的代码项目,有Raissi那篇奠基性原文,有网络结构选择、Loss权重优化、逆问题求解的专题文献,还有基于PINN的求解库(NVIDIASimNet、NeuralPDE等)。从零开始学PINN,照着这个路径走就行。🏆顶会顶刊必读Nature、Science、NeurIPS、ICLR、ICML、ICCV、AAAI、KDD、IJCAI……发在顶级期刊和会议上的PINN论文,加上一区二区期刊的高质量工作,全部收录在这。写论文要找baseline、找inspiration,来这里翻一遍就够了。用起来什么感觉?03左侧是分类导航,点击直接跳转到对应方向。每篇论文是一张卡片,论文链接和代码链接分开标注,一眼看到有没有代码可跑。顶部有搜索框,输入"KAN""扩散模型""NeurIPS"这种关键词,瞬间过滤出所有相关论文。手机上也能正常用,地铁上翻一翻,看到感兴趣的存下来回头读。页面顶部有个统计面板,收录了多少篇论文、多少个开源代码、多少个研究方向,一眼能看到。适合什么人?04📌刚接触PINN,不知道从哪开始看的研究生📌正在做PINN相关课题,需要找baseline和参考文献的科研人📌想了解PINN跟某个技术(KAN、Transformer、扩散模型等)怎么结合的研究者📌想快速找到某篇顶会PINN论文及其代码的工程师📌正在写综述或者survey,需要系统性梳理PINN文献的博士生来源:有限元先生

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈