
简介面向高校力学、土木、机械等专业的有限元初学者《有限元课件第4讲等参元和高斯积分》聚焦非规则单元分析的经典难题。课件从简单杆系问题入手讲清等参单元定义、平面四边形单元推导与三维六面体单元映射并重点演示高斯积分如何以少量积分点完成高精度计算。压缩包共一个PPT文件大小690KB轻量便于课堂演示与自学目前已有119人学习下载搭配北京航空航天大学的讲义框架涵盖整体坐标与自然坐标映射、节点条件、形状函数、单元应变能、刚度矩阵与等效节点力等推导过程。读者可借此理解坐标变换与等参插值的核心思想掌握让复杂几何单元分析变得简洁的关键技术为后续有限元编程与工程应用打下基础。 学有限元学到等参元和高斯积分这一讲很多人第一次会产生“是不是我数学基础不行”的怀疑。前面直杆单元、三角形常应变单元还比较直观最多就是算算形函数、应变矩阵等参元一上来就是自然坐标、雅可比、高斯积分点公式一个接一个像突然换了套语法。其实这套内容没有想象中难它解决的是两个非常实际的问题第一真实结构的边界是曲线曲面直边单元能不能更聪明地贴合几何第二单元刚度矩阵里的积分怎么又快又准地算出来。这篇文章就围绕这两个问题把等参元和高斯积分的推导思路、工程选择、踩坑经验从头梳理一遍适合正在学有限元课程、准备考试或者自己写单元子程序的朋友参考。1. 等参元思路从直边单元到曲边单元的必经之路1.1 为什么直边单元算不准早期有限元里大量使用常应变三角形单元每个单元内部应力和应变是常数位移场是一阶线性的。这种单元的优点是公式简单、网格生成容易缺点是几何逼近和力学响应的表达能力都太弱。比如圆孔应力集中问题孔边是曲线用三角形直边去逼近即使加密网格节点也会沿着折线分布应力峰值附近的总误差始终下不去因为每个单元内部的应力变化根本没法描述。等参元就是为了解决这两层问题出现的。它的本质是一套双线性或者二阶的插值方法一方面能更精细地描述位移场另一方面让单元边界可以是曲线。这等于把“用折线逼近曲线”升级成“用曲线逼近曲线”同样数量的单元精度能高出不止一个量级。很多教材说等参元是现代有限元的起点这话并不夸张没有它复杂几何模型的计算成本和精度都很难被工程接受。从实用角度看等参元还有一个特别重要的优点程序实现高度统一。不管单元是三角形、四边形还是六面体、四面体最后都可以映射到同一个父单元上去做计算。有限元程序里只要写好一个父单元上的积分模板各类单元都能共用一套底层代码这个工程价值在自研程序或者用户自定义单元UEL里尤其明显。1.2 父单元与自然坐标坐标变换的核心思想等参元的核心操作是坐标变换。每个实际单元都对应一个规则的“父单元”比如四边形单元对应[-1,1]×[-1,1]的正方形三角形单元对应标准直角等边三角形。计算的时候先在父单元这个规则形状上做位移插值和积分再把结果通过映射关系转换到真实单元上。这个过程很像地图投影把球面按一定规则展开成平面平面上的经纬线网格和球面上的位置一一对应。映射关系写出来就是坐标变换公式引入一组新的坐标ξ, η而不是直接用笛卡尔坐标x, y这组坐标在有限元里叫自然坐标。它不一定是正交的甚至不一定有明确的物理度量但它让每个方向上的参数范围都固定下来这样积分限不用变来变去形函数的表达式也能统一。“等参”二字的含义需要单独解释一下位移插值用的形函数和几何坐标变换用的形函数是同一套。如果几何映射用的形函数阶次高于位移插值那叫超参元低于位移插值叫亚参元。工程里绝大多数单元都是等参元因为程序和公式最简洁也最容易满足离散精度一致性的要求。很多初学者会纠结为什么非要搞自然坐标直接在每个单元里定义局部笛卡尔坐标不行吗答案是可以但每个单元的局部坐标系都要跟着单元形状旋转平移推导和编程都会非常痛苦。自然坐标把问题固定在一个标准形状上属于用一次变换换取整套算法的普适性。2. 形函数与坐标变换等参变换的核心推导2.1 一维等参单元从形函数到几何映射先看一维情况思路最清楚。一个杆单元长度L物理坐标x从x1到x2。定义自然坐标ξ∈[-1,1]则几何映射可以写成x(ξ) (1-ξ)/2 * x1 (1ξ)/2 * x2这里出现的两个系数就是线性形函数N1 (1-ξ)/2 N2 (1ξ)/2它们的特征是N1在ξ-1时等于1在ξ1时等于0N2正好相反。任意一点ξ处的坐标就是把两端节点坐标按形函数权重做线性组合。如果位移场也用同样的形函数插值u(ξ) N1 u1 N2 u2那么这就是最简单的一维等参元两个节点线性位移。二维和三维的情况是这套逻辑的推广。比如四节点四边形单元Q4每个节点的形函数是Ni 1/4 * (1 ξξi) * (1 ηηi)其中(ξi, ηi)是第i个节点在父单元里的坐标。它看起来是“双线性”沿ξ方向线性沿η方向也线性所以单元边仍然是直边。想表达曲边就得用高阶形函数。一维二次单元是理解曲边单元的钥匙。三个节点两个端点和1个中点形函数为N1 -ξ(1-ξ)/2 N2 ξ(1ξ)/2 N3 1-ξ²当物理节点坐标不完全在一条直线上时x(ξ) 就是ξ的二次函数单元就能表示成弯曲的杆。把这个概念拓展到二维八节点单元Q8四条边各有3个节点每条边都是抛物线曲边几何就能被精确地逼近了。2.2 二维单元四节点与八节点的选择逻辑实际工程建模中四节点和八节点四边形的选择是最常见的纠结。四节点Q4单元自由度和计算量都小但每个单元内位移场只包含线性项和双线性交叉项应力应变的表达很有限弯曲工况下单个单元表现得偏硬。八节点Q8单元形函数包含完整的二次项能描述应力梯度用较少的单元就能得到光滑一点的应力分布尤其适合圆角、孔边、槽口这些应力集中区域。但高自由度是有代价的。Q8单元的形函数推导比Q4复杂得多雅可比矩阵更容易因为单元形状扭曲而出现病态而且在接触分析里中间节点的存在还会让接触压力的分布变得很敏感。我的经验是应力集中区域优先用二次单元并且注意保持“单元尺寸一致、网格过渡平缓”大变形或者接触主导的问题反而经常用一次单元配合足够细的网格求解更稳健。还有一个细节容易被忽略形函数有一个“单位分解”性质即任意一点所有形函数之和等于1。这意味着单元的常应变场可以被精确表达没有这个问题加密网格也无法收敛到正确解。写单元子程序排查问题的时候如果算出来单元矩阵异常我第一件事就是检查形函数求值对不对尤其是中间节点形函数符号和指数特别容易写错。3. 雅可比矩阵与单元矩阵组装工程里最常见的计算瓶颈3.1 导数转换与雅可比矩阵推导位移插值确定之后下一步要算应变应变矩阵里全是形函数对物理坐标x、y的导数。但形函数却是自然坐标ξ、η的函数所以必须做链式求导。一维最简单dN/dx dN/dξ * dξ/dx (dN/dξ) / (dx/dξ)对二维情况两套偏导数之间的关系用矩阵写出来就是[dN/dξ] [dx/dξ dy/dξ] [dN/dx] [dN/dη] [dx/dη dy/dη] [dN/dy]中间这个2×2矩阵就是雅可比矩阵J。由于形函数对几何坐标和位移场是同一套J可以直接由节点坐标和形函数导数组装出来。要求形函数对物理坐标x、y的导数只需对雅可比矩阵求逆再把结果乘过去[dN/dx] [dN/dξ] [dN/dy] J⁻¹ [dN/dη]这个操作在单元矩阵计算里是最高频的步骤之一每个高斯积分点都要重复一次。所以雅可比矩阵求逆的质量直接决定了整个分析的稳定性和精度。如果单元畸形J接近奇异求逆后得到的导数会被放大到离谱的程度刚度矩阵就会出现负特征值或病态现象。工程程序里比较常见的实现方式是在每个积分点循环里完成以下四件事先求形函数对自然坐标的导数再组装雅可比矩阵然后求逆最后算出形函数对物理坐标的导数。下面是一段四节点Q4单元在ξη0处求J的示意代码import numpy as np # 单元节点坐标形状 (4, 2) coords np.array([[-1.0, -1.0], [ 1.0, -1.0], [ 1.0, 1.0], [-1.0, 1.0]]) xi, eta 0.0, 0.0 # Q4形函数对xi的导数 dN_dxi np.array([-(1-eta)/4, (1-eta)/4, (1eta)/4, -(1eta)/4]) # Q4形函数对eta的导数 dN_deta np.array([-(1-xi)/4, -(1xi)/4, (1xi)/4, (1-xi)/4]) J np.vstack([dN_dxi coords, dN_deta coords]) print(J)注意Q4是双线性单元在单元中心位置dN/dxi和dN/deta的表达是最简单的这也是为什么很多手算例题喜欢把高斯点放在中心。实际程序里高斯积分点不会正好都在中心需要把每个积分点的ξ、η代进去求值。3.2 det J 的物理意义与网格质量判断雅可比矩阵的行列式det J有非常直观的物理意义它表示物理单元和父单元之间的面积微元缩放系数。父单元上的微元dξdη乘以det J就得到物理单元上的面积dxdy。所以单元矩阵积分从物理坐标换成自然坐标时必然会出现一个det J项∫ f(x,y) dx dy ∫ f(ξ,η) det J dξ dη如果det J在某处变得很小说明该处单元被压缩得厉害应变计算容易失真。如果det J变成负值或零说明单元发生了“内翻”比如四边形单元某个节点越过对角线跑到对面去了。这种单元会让刚度矩阵彻底失真求解结果完全不可信。我判断网格质量的时候常用的一个指标是看整个模型里det J的最小正值与最大值的比值经验上小于0.2就要重视。对于薄壁结构单元厚度方向尺寸特别小还要留意长宽比过大带来的数值病态。网格软件里那些“Jacobian Ratio”“Skewness”指标本质就是在测这回事儿。就算求解器没有报错也不能直接信任畸变单元附近的应力结果后处理时先看单元质量报告是基本习惯。4. 高斯积分选对积分点精度与速度双收4.1 高斯积分的基本原理与参数配置等参变换把刚度矩阵的积分转化成了父单元[-1,1]上的积分。理论上可以直接写出被积函数的解析表达式去积分但实际单元被积函数是形函数、导数和物理坐标的复杂组合阶次高且难以手工化简。数值积分是唯一现实的选择。数值积分有很多种方法比如梯形法、Simpson法但有限元里几乎是高斯积分一家独大。原因是效率差距太大n个积分点的高斯积分可以精确积分2n-1次多项式而相同点数的新ton-Cotes型公式只能精确积分n-1次。同样是2个点高斯积分能精确积分到3次多项式梯形公式只能积分到1次。有限元刚度矩阵的被积函数阶次不低用高斯积分可以在最少的积分点下拿到足够的精度。一维高斯积分的基本形式是∫₋₁¹ f(ξ) dξ ≈ Σ wi f(ξi)积分点位置ξi和权重wi是一组精心选择的数值。比如最常用的两点高斯积分积分点是±1/√3权重都是1。三个积分点的情况是零点配高权重、两侧配低权重。二维和三维积分则直接在每一维上分别取点做张量积组合。比如二维2×2积分就是4个积分点三维2×2×2积分就是8个积分点。下表是前几阶一维高斯积分的积分点与权重积分点数积分点位置ξi权重wi1022±0.5773502692130, ±0.77459666920.8888888889, 0.55555555564±0.3399810436, ±0.86113631160.6521451549, 0.3478548451我刚开始学的时候一直不理解“精确积分到2n-1次多项式”是什么意思后来想明白了一个类比高斯积分本质是在用精心挑选的“采样点”和“权重”去匹配多项式函数在区间上的整体表现就像一个精确调音的设备几个关键点就能让整个波形对得很准。这也意味着如果被积函数不是多项式比如包含指数或三角函数高斯积分依然有误差只是误差随积分点增多迅速减小。4.2 完全积分 vs 减缩积分怎么选确定了积分方法接下来就是选积分阶次。每个单元类型都有一个“完全积分”的方案指的是足以精确积分刚度矩阵中所有多项式项的最低阶次。比如Q4单元的完全积分是2×2个积分点Q8单元是3×3个积分点。完全积分在数学上最“稳妥”但并不总是工程上的最优选择。低阶单元使用完全积分时会出现一个经典问题剪切锁死。梁受弯时理论上单元应该发生弯曲变形但线性单元的位移场表达不了纯弯状态不可避免会产生虚假的剪切应变导致单元刚度过大、挠度偏小。解决办法之一就是减缩积分——每个方向少取一个积分点。Q4用1点积分Q8用2×2积分。同样的网格减缩积分往往能给出比完全积分更接近理论的位移结果。这就是等参元和高斯积分放到一起讲的原因积分方案不是数值细节它直接改变单元行为。减缩积分虽然缓解了剪切锁死却引入了另一个陷阱——沙漏模式。因为积分点变少某些变形的“能量”恰好落在采样点之外刚度矩阵对这些变形模式完全没有抵抗能力。最典型的是Q4的1点积分单元可能产生“沙漏”形状的交替变形网格非常丑陋但计算得到的应变能却几乎为零结果完全失真。实际选型时可以参考我的习惯结构在弯曲载荷下为主优先选择二次单元加减缩积分比如很多通用程序里的Q8R或CPE8R位移精度好剪切锁死不严重涉及接触或者单元变形非常剧烈时尽量使用完全积分或加强沙漏控制同时把网格画得规整一些八节点二次单元本身对剪切锁死不敏感完全可以稳妥地采用完全积分沙漏现象也不明显。4.3 一个手算例子一维单元的高斯积分过程用几个点积分直观感受一下精度差异。假设被积函数是 f(ξ) 1 ξ²积分区间是[-1,1]。这个函数的精确积分结果是∫₋₁¹ (1 ξ²) dξ 2 2/3 2.6667如果只用1个高斯积分点ξ0权重为2那么积分近似值是2 × (1 0) 2误差约0.6667高达25%。如果改用2个高斯积分点ξ±1/√3权重都为1则1 × (1 1/3) 1 × (1 1/3) 8/3 2.6667结果精确。这背后的原因是2个高斯点能精确积分到3次多项式而1ξ²只是2次多项式所以两个点就够了。这个例子说明积分点数量不是越多越好而是够用最好。多加积分点会带来额外的计算量更糟的是可能掩盖某些变形模式的问题反而让单元表现异常。有限元程序里那些“积分阶次设置”选项背后都是同一套权衡逻辑。5. 避坑实操畸变单元、剪切锁死与沙漏模式排查5.1 网格畸变会导致什么结果实际建模很少能画出完美的正方形单元尤其是复杂曲面和细小特征附近。单元畸变最直接的影响就是雅可比矩阵变得病态严重时det J趋近于零甚至为负。这时候单元刚度矩阵的计算已经没有任何物理意义求解器可能给出一个“能算完”但完全错误的结果。排查畸变问题我一般分三层第一层看网格统计报告检查是否有负体积和负雅可比单元第二层看单元质量指标比如长宽比、倾斜角、翘曲度第三层看求解时有没有刚度矩阵奇异或收敛困难的问题。如果模型里个别网格质量很差但整体计算结果还能接受通常说明这些问题单元远离关注区域一旦问题单元出现在应力集中区结果基本不能信任。对于四边形和六面体网格规避畸变最好的方法是前处理阶段多花时间结构圆角区用映射网格或扫掠网格生成尽量保持单元形状接近规则。三角形的网格适应性更强不容易出现负体积但应力精度略差。四面体单元虽然网格生成方便二阶四面体比如10节点单元的计算量并不低也不是某些老师说的“自动网格就是免费午餐”。5.2 沙漏模式排查与预防减缩积分单元算出来的结果如果出现明显的锯齿状变形比如单边单元交替上下起伏几乎可以肯定是沙漏模式。它的本质是单元内部某些应变分量在高斯点处恰好为零单元不用消耗应变能就能产生大变形所以后处理时经常看到一张“很好看但完全没用”的变形云图。排查方法不复杂画出应变能密度云图如果发现变形明显但应变能很低就高度怀疑沙漏或者给约束位置加一个很小的位移扰动观察是否有奇怪的交替位移场。通用有限元软件里一般都有沙漏控制选项原理是把抗沙漏的刚度人为叠加到系统里但这也会引入额外刚度可能影响精度。我的经验是对策要组合使用先检查是不是网格太粗加密网格往往是最直接的解法再检查是不是单元类型选得过于激进比如太薄的板壳问题用了单点积分的实体单元最后才是启用沙漏控制参数并且把它控制在能消除锯齿形变形的最小值。单独依赖沙漏控制容易把整体刚度改偏。5.3 工程中的积分方案速查表整理一份自己常用的选型表供参考工况推荐单元/积分方案说明一般线弹性结构、应力分析二阶四边形/六面体单元完全积分或减缩积分均可优先减缩积分注意沙漏检查梁弯曲为主的结构一阶单元完全积分易锁死优先二阶减缩积分网格可稍粗接触与冲击问题一阶单元完全积分或二阶完全积分减缩积分容易引起接触力振荡大变形、超弹性材料一阶减缩积分配合沙漏控制注意单元翘曲和负体积断裂与应力集中二阶单元完全积分局部加密关注奇异点附近网格质量这套组合拳打下来大部分由于积分方案导致的失真都能提前拦下来。等参元和高斯积分看起来是两座大山实际用顺了之后你会发现它们就是“几何映射 数值积分”两个环节的工具。写完自己的单元子程序再回头看教材里的那些推导很多当时不明白的“为什么”原因其实都出在这两件事上。本文还有配套的精品资源点击获取