MMS:二维弹性体——故障排查指南
更充实的内容可在 mms-elasticity-2d.html 中查看。
二维弹性MMS的构成与易碎之处
弹性体的MMS是先取位移的制造解 \( \mathbf{u}_m(x,y) \),代入平衡方程导出体积力源项。
$$ \mathbf{b} = -\nabla\cdot\boldsymbol{\sigma}(\mathbf{u}_m), \qquad \boldsymbol{\sigma} = \mathbb{C} : \boldsymbol{\varepsilon}(\mathbf{u}_m) $$
边界条件同样由制造解给出:位移边界给 \( \mathbf{u}_m \),面力边界给 \( \mathbf{t} = \boldsymbol{\sigma}(\mathbf{u}_m)\cdot\mathbf{n} \)。误差范数要对位移(\( L^2 \):精度阶 \( k+1 \))与应力·能量范数(精度阶 \( k \))分别评估。与热传导MMS的差别有三点:①它是矢量场,分量容易张冠李戴;②弹性的定式化本身有选择(平面应力/平面应变);③锁定这一弹性特有的病理——故障也恰好集中在这三点上。
症状1:整体精度阶出得来,可数值系统性地差几个百分点
收敛精度阶漂漂亮亮就是二阶,可误差的绝对值一直下不去,感觉像是收敛到了另一个解……
"收敛得很漂亮却是另一个答案",是源项推导与求解器定式化不一致的典型信号。二维弹性里最高频的就是平面应力与平面应变搞混——本构关系的 \( \mathbb{C} \) 不同,用SymPy按平面应变导出σ、求解器却按平面应力求解,两边各自自洽,代码就会把"另一个问题"精确地解出来。弹性常数的定义(用杨氏模量与泊松比,还是用拉梅常数λ与μ)也藏着同一个陷阱。唯一可靠的预防手段,是把求解器手册里的本构方程原样抄进推导脚本。
症状2:一加面力边界精度阶就掉
- 法线方向——\( \mathbf{t} = \boldsymbol{\sigma}\cdot\mathbf{n} \) 中的 \( \mathbf{n} \) 是外法线。某条边的符号取反,误差就只在那条边附近堆积(看误差的空间分布可立刻发现)
- 分量搞错——逐边确认 \( t_x = \sigma_{xx} n_x + \sigma_{xy} n_y \) 之类的分量合成。"只有上下两条边错"是常见模式
- 边界积分的精度——把沿边变化的面力折算成等效节点力时积分阶数不足。增加积分点做敏感性确认
- 角点的处理——角点上两条边的面力汇集到同一个节点。检查等效节点力有没有重复或遗漏
排查的定式是先用"全周位移边界"把精度阶做出来。那一步合格,就说明内部离散与源项无罪,可以把面力边界的实现单独隔离出来查——这是MMS通用的边界隔离术。
症状3:ν→0.5时精度阶与精度一起崩(体积锁定)
把泊松比提到0.49、0.499,一次(以及标准低阶)单元的位移解会急剧变硬、变得不准。这不是bug,而是不可压极限下的体积锁定这一定式化的固有局限,而MMS正是把它定量暴露出来的最佳工具。应对分两步。
- 把它当诊断用——ν=0.3时出名义精度阶、ν=0.499时误差恶化一个数量级以上,那正是标准位移法应有的表现,等于确认了"代码是对的"
- 验证带对策的定式化——换用B-bar、选择性缩减积分、混合(u-p)单元、非协调单元等无锁定定式化,用MMS实证ν=0.4999时精度阶依然保持。这就是"能扛不可压"这个主张的可验证形态
同理,采用细长的弯曲主导型制造解(薄梁状区域+弯曲变形),还能检出剪切锁定。MMS不仅能回答"解得对不对",还可用作"单元的病理在什么条件下发作"的系统性试验。
症状4:推导没错,精度阶却差0.5~1阶
典型原因是体积力 \( \mathbf{b} \) 在实现一侧精度不足。①单元载荷的积分阶数——把空间变化剧烈的体积力按默认积分点数折算成等效节点力,积分误差会超过离散化误差(对策:提高积分阶数做敏感性确认,或降低制造解的波数)。②节点集中近似——按"节点值×节点体积"施加体积力的实现只有一阶精度,会污染二次单元的精度阶。③偶尔还有设置失误:本该是无时间项的纯弹性问题,却用动力学求解器求解,混入了惯性。若源项的随机点核对已经通过而精度阶仍出不来,就该怀疑这条"注入路径的精度"。
症状5:矩阵奇异解不出来/加了约束反而掉阶
全周面力边界的验证中,刚体模态(平动2个+转动1个)没有被约束,矩阵就是奇异的。处置办法:①用制造解的数值施加最小限度的位移约束(一点上约束 \( u_x, u_y \),另取一点约束一个分量以止住转动——都要给制造解的精确值);②注意一旦固定为零就与制造解矛盾,会注入边界误差。"加了约束反而精度变差"的成因几乎都是②——务必把 \( \mathbf{u}_m \) 的值也代入约束点。
面向二维弹性的制造解设计备忘
- 基本形式——\( u_m = A\sin(\pi x)\cos(\pi y) \)、\( v_m = B\cos(\pi x)\sin(\pi y) \) 这类三角函数系。系数要选得让全部应变分量都非平凡
- 按验证目的取用——精度阶验证用光滑的低波数解;锁定诊断用弯曲主导、接近不可压的解;面力验证用边界上应力非零的解
- 当心二次单元的超收敛——多项式(二次及以下)的制造解会被二次单元精确重现,误差为零=测不出精度阶。要用三角函数或三次以上
- 与精确解基准并用——含圆孔无限大板(Kirsch解)等经典解不需注入源项,可作为互补的独立校核(与解析解验证的做法是同样的分工)
检查清单
- 是否把求解器的本构关系(平面应力/平面应变、弹性常数的定义)誊抄进了推导脚本
- 源项与面力是否通过了随机点核对(数值微分)
- 是否按全周位移边界→面力边界的顺序做了隔离排查
- 是否确认了体积力积分阶数的敏感性
- 约束点是否给了制造解的精确值(有没有固定成零)
- 是否把位移与能量/应力范数分别与各自的理论精度阶做了比较
- 是否把ν=0.3与0.499两种情况的表现都记录下来了(有无锁定的证据)
热传导的MMS很快就做出来了,弹性要确认的事项可真多……
多出来的部分全都来自"矢量场与定式化的自由度"。反过来说,弹性MMS只要跑通一次,分量、本构、边界、单元病理这几类检查视角就一次到手。推荐的路线是热传导→弹性→(有需要再上)不可压与大变形,逐级加码。而弹性MMS隐藏的价值,是它能变成单元选型的实证数据——能用自家环境的数字说出"我们的标准单元在ν=0.499会/不会锁定",比教科书上的一般论有力得多。验证基础设施一旦建成就是资产,这一点在这里同样成立。
相关文章:MMS:二维热传导的故障排查、源项推导的故障排查、收敛精度阶的故障排查。
帮助
更多
错误