运动网格 — CAE术语解释
运动网格
老师,运动网格在CFD中是怎样使用的?
运动网格的理论基础
基本概念和支配方程
运动网格就是字面上网格会动的意思吗?具体是用来分析什么物理现象的?
完全正确。是根据时间变化而改变形状或位置的边界,对计算域的网格进行变形或重新生成的手法。典型应用例包括活塞-圆筒内流体分析、旋转螺杆压缩机的叶轮旋转、阀门开闭动作的仿真。例如,发动机吸排气阀的升程最大达到8mm,这时弹簧座面周围的网格会连续变形。
网格运动意味着支配方程也会增加特殊项吗?与普通流体方程有什么区别?
是的,这是很重要的一点。需要在运动坐标系中描述,因此要使用任意拉格朗日-欧拉(ALE)表述。不可压缩流体的连续方程和纳维-斯托克斯方程需要考虑网格速度
动量守恒:
其中,
我听说移动网格的方法有多种。"网格变形"和"网格重新生成"有什么区别?
这是两个根本不同的方法。网格变形是将边界位移传播到内部节点,在保持网格连接性(拓扑)的同时改变形状。使用弹簧类比法或拉普拉斯平滑,对位移较小的情况有效(大约在单元尺寸的60%以内)。
网格重新生成是当形状发生大幅变化时从头生成新网格的方法。例如,螺杆旋转导致网格严重扭曲时,当扭曲角超过45度等特定扭曲标准时,会触发重新网格划分。重新生成更加稳健,但计算成本高,存在解内插误差的风险。
运动网格的数值计算手法
离散化和求解器设置
听到了"弹簧类比法",但具体是怎样确定节点的新位置的?
将每条网格边看作弹簧,给予弹簧常数
网格大幅运动时,单元体积会极端缩小导致计算发散,是否有特殊的方案来防止这种情况?
是的,有"体积守恒"和"层压缩/伸展"等高级手法。特别是在间隙变窄的"挤压"区域,使用"层压缩"来保持网格质量。在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`工具的脚本。
相关主题
价值
详细
错误