运动网格 — CAE术语解释

分类: 术语表 | 2026-01-15
CAE visualization for moving mesh - technical simulation diagram

运动网格

🧑‍🎓

老师,运动网格在CFD中是怎样使用的?

运动网格的理论基础

基本概念和支配方程

🧑‍🎓

运动网格就是字面上网格会动的意思吗?具体是用来分析什么物理现象的?

🎓

完全正确。是根据时间变化而改变形状或位置的边界,对计算域的网格进行变形或重新生成的手法。典型应用例包括活塞-圆筒内流体分析、旋转螺杆压缩机的叶轮旋转、阀门开闭动作的仿真。例如,发动机吸排气阀的升程最大达到8mm,这时弹簧座面周围的网格会连续变形。

🧑‍🎓

网格运动意味着支配方程也会增加特殊项吗?与普通流体方程有什么区别?

🎓

是的,这是很重要的一点。需要在运动坐标系中描述,因此要使用任意拉格朗日-欧拉(ALE)表述。不可压缩流体的连续方程和纳维-斯托克斯方程需要考虑网格速度

$$ \mathbf{u}_g $$
来修正:
连续方程:
$$ \nabla \cdot \mathbf{u} = 0 $$

动量守恒:
$$ \frac{\partial \mathbf{u}}{\partial t} + ((\mathbf{u} - \mathbf{u}_g) \cdot \nabla) \mathbf{u} = -\frac{1}{\rho} \nabla p + \nu \nabla^2 \mathbf{u} $$

其中,
$$ \mathbf{u} $$
是流体速度,
$$ \mathbf{u}_g $$
是网格速度。决定性的区别在于对流项变成了
$$ (\mathbf{u} - \mathbf{u}_g) $$
,相对于网格的相对流速用于计算输运。

🧑‍🎓

我听说移动网格的方法有多种。"网格变形"和"网格重新生成"有什么区别?

🎓

这是两个根本不同的方法。网格变形是将边界位移传播到内部节点,在保持网格连接性(拓扑)的同时改变形状。使用弹簧类比法或拉普拉斯平滑,对位移较小的情况有效(大约在单元尺寸的60%以内)。
网格重新生成是当形状发生大幅变化时从头生成新网格的方法。例如,螺杆旋转导致网格严重扭曲时,当扭曲角超过45度等特定扭曲标准时,会触发重新网格划分。重新生成更加稳健,但计算成本高,存在解内插误差的风险。

运动网格的数值计算手法

离散化和求解器设置

🧑‍🎓

听到了"弹簧类比法",但具体是怎样确定节点的新位置的?

🎓

将每条网格边看作弹簧,给予弹簧常数

$$ k_{ij} $$
。所有边都被视为弹簧,来自变位边界节点的力传播到内部节点,直到达到平衡位置。许多实现中,弹簧常数与相邻单元体积或边长的倒数相关。例如,Ansys Fluent中,弹簧常数可设置为
$$ k_{ij} = 1 / \sqrt{|\mathbf{x}_i - \mathbf{x}_j|} $$
。通过高斯-塞德尔法等迭代法求解这个线性方程组来获得各节点的位移。

🧑‍🎓

网格大幅运动时,单元体积会极端缩小导致计算发散,是否有特殊的方案来防止这种情况?

🎓

是的,有"体积守恒"和"层压缩/伸展"等高级手法。特别是在间隙变窄的"挤压"区域,使用"层压缩"来保持网格质量。在Siemens Star-CCM+的"变形"功能中,用户可以设置"最小允许斜度比"(例如0.05)。当低于此阈值时,求解器会自动压缩或删除相邻网格层(坍塌),防止网格相交。时间积分必须使用隐式方案,CFL数(库朗数)需严格控制在1.0以下。

🧑‍🎓

网格重新生成的触发"扭曲指标"有哪些?重新生成后,前一时间步的物理量是怎样继承的?

🎓

主要有3个指标:1) 斜度比(面积/边长平方比,越接近0越差),2) 长宽比,3) 单元扭曲角(理想为90度)。OpenFOAM的`dynamicFvMesh`库中,`maxSkewness`的默认值设为4.0。重新生成后,从旧网格(供体网格)向新网格(受体网格)内插物理量。这采用注重守恒性的积分值守恒内插或更光滑的反距离加权法,但难免产生数值扩散,动量或涡的强度会略有减衰。

运动网格的实务应用

工作流程和检查清单

🧑‍🎓

实际设置运动网格分析时,首先需要决定什么重要参数?

🎓

首先是运动的定义时间步长。运动可通过用户定义函数(UDF)给出,或使用现成的特性曲线(正弦波、阶梯函数)。其次是相对于运动规模选择合适的时间步长。经验法则是,运动体穿过一个单元尺寸至少需要5~10个时间步。例如,阀门在0.01秒内运动1mm,该区域的单元尺寸为0.1mm,时间步长应约为0.0002秒(0.01/50)。否则对流项的离散化误差急剧增加。

🧑‍🎓

准备网格时,运动区域和静止区域的边界(接口)应如何设计?听过"接口"和"重叠网格"这样的说法。

🎓

这是设计的关键。主要有2种方法。
1) 非一致接口(滑移网格):旋转部分和静止部分的网格面接触,通过内插传递数据。泵和风机分析中常见。网格面尺寸无需一致的优点,但存在内插误差。
2) 重叠网格(Chimera/IBM):运动零件的网格与背景网格重叠,不必要的单元被"挖空"。适应复杂的平移运动,在MSC Cradle和POWERFLOW中采用。但需要维护性强的背景网格,计算成本增加。选择哪种取决于运动的复杂程度和容许误差。

🧑‍🎓

运行分析前应进行网格验证检查清单吗?

🎓

最少需确认以下4点。
1. 初始网格质量:静态分析能收敛的质量(最小斜度比>0.2,最大长宽比<50)吗?
2. 位移预测:运动方向有足够的网格层吗?阀门运动需要升程方向至少20层。
3. 动态网格区域设置:是刚体运动还是变形,边界条件类型是否正确(Ansys中为`system/controlDict`的`dynamicMeshDict`)。
4. 守恒性确认:测试案例(例如空腔内刚体移动)中,质量或动量的全局误差随时间步减小而减小吗?如果无法确认这一点,后续出现发散时很难找出原因。

运动网格的软件比较

各求解器的实现特点

🧑‍🎓

Ansys Fluent和Siemens Star-CCM+的运动网格方法有区别吗?

🎓

是的,理念不同。Ansys Fluent将"动态网格"功能作为弹簧类比法、层法、滚动网格法的组合,用户可自行配置。通过UDF(C语言)能进行微细控制,可与6DOF(6自由度)求解器联动处理复杂的耦合运动。缺点是配置项众多,学习曲线陡。
Siemens Star-CCM+在"变形"和"重叠网格"方面有优势。特别是GUI操作直观,可通过拖放定义刚体运动模型。还能在视觉上放置网格的"变形控制点"来局部控制变形。自动化脚本基于Java。

🧑‍🎓

开源的OpenFOAM是如何实现的?与商业软件相比有什么限制?

🎓

OpenFOAM以`dynamicFvMesh`类为基础,提供各种动态网格求解器。例如,`displacementLaplacian`(拉普拉斯平滑)、`solidBodyMotion`(刚体运动)、`dynamicInkJetFvMesh`(喷墨用)等。配置通过`constant/dynamicMeshDict`字典文件进行,可在C++中编程新的运动模型。
限制在于无GUI使配置复杂,并且并行计算时的动态网格负载均衡不如商业软件成熟。在涉及大规模网格重新生成的计算中,商业求解器更稳定。但定制性和学习成本的低性是最大优势。

🧑‍🎓

结构分析(FEM)中使用的"任意拉格朗日-欧拉法"与流体分析(CFD)中的"ALE法"是同一个东西吗?

🎓

概念源头相同,但应用领域有细微差异。结构分析(Abaqus/ LS-DYNA等)中,ALE主要用于"网格优化"。在大变形分析中,为防止网格过度扭曲,保持材料(拉格朗日)不变,仅重新调整计算网格(欧拉)(重网格化)。这样可降低单元应变,继续计算。
而在流体分析中,ALE的主要目的是"使网格追随运动的边界"。因此在CFD背景下,"动态网格"与之几乎等义。但在多物理场耦合软件COMSOL Multiphysics中,"ALE"是一个统一的物理接口,能同时处理流体的运动网格和结构的大变形。通过求解描述网格运动的"网格位移"偏微分方程,两者的处理是统一的。

运动网格的故障排除

常见错误和对策

🧑‍🎓

分析中出现"检测到负体积"错误,计算停止了。最常见的原因和对策是什么?

🎓

这是运动网格分析中最常见的致命错误。原因主要有3个。
1. 时间步长过大:运动体在一个时间步内跳过了相邻单元,导致网格相交。回到前面提到的"单元尺寸/速度"标准,试试将时间步长减少到1/2或1/10。
2. 网格变形的许可量不足:变形太大,弹簧类比法无法跟踪。对策是在Ansys Fluent中打开`Remeshing`选项,放宽`Maximum Cell Skewness`(例:0.9)和`Maximum Face Skewness`(例:0.8)的阈值。或从一开始就用粗网格,将网格重新生成作为前提。
3. 边界条件矛盾:检查相邻区域的运动定义是否冲突。所有边界的网格运动需要保持一致。

🧑‍🎓

计算虽然在进行,但物理量(例如阻力)的时间序列数据不自然地"锯齿"或分阶段跳跃。为什么会这样?

🎓

这几乎肯定是网格的不连续变化引起的。具体来说,当执行网格重新生成时,内插误差导致力的积分值分阶段变化。同时,"锯齿"可能是每个时间步网格质量的微小变动放大了离散化误差。
对策是:1) 减少重新网格的频率(放宽扭曲阈值),2) 使重新网格前后的网格尺寸和质量不发生急剧变化(将`cellSizeCalculation`从`intersection`改为`uniform`等),3) 对输出的物理量进行数个时间步的移动平均来降低噪声。根本上应考虑切换到不依赖动态网格的"重叠网格法"。

🧑‍🎓

并行计算中使用动态网格时,计算速度极端变慢或出现负载分散错误。原因是什么?

🎓

并行动态网格是个高阶课题。主要原因有2个。
1. 动态负载分散的不平衡:网格运动(重新生成)时,各区域的单元数发生变化。初始均匀分割被破坏,部分处理器负载集中。Ansys Fluent中需启用与`Adaptive Mesh Refinement`联动的`Dynamic Load Balancing`。设置间隔(例如每100步)自动重新分散负载。
2. 接口通信增加:网格变化时,处理器间边界(接口)的形状和面积改变,数据通信开销增大。特别是重新生成频繁时更明显。可通过将动态网格区域合并到一个处理器区域来减少通信成本(使用`split`功能)。在OpenFOAM中,需要定期运行`redistributePar`工具的脚本。

本文评价
感谢您的回答!
有参考
价值
需要更
详细
报告
错误
有参考价值
0
需要更详细
0
报告错误
0
由NovaSolver Contributors编写
匿名工程师与AI — 网站地图
查看档案