· 靳贺伟 · 网格基础 · 11 min read
OpenFOAM v2512 移动与变形网格:ALE 理论、motionSolver 设置与工程应用
介绍拓扑不变动态网格的 ALE 方程、刚体运动和网格变形方法,并给出 dynamicMotionSolverFvMesh 的设置流程、质量控制与应用案例。
移动与变形网格用于描述真实边界运动,同时保持网格拓扑不变。
其基本特征是:
- 网格点位置随时间变化;
- 单元、面和点的连接关系不变;
- 不进行单元增加、删除或重新连接;
- 不需要 AMI 或 Overset 的跨网格插值。
1. ALE 描述
对于运动控制体,守恒方程需要考虑网格边界本身的速度。设流体速度为 (\boldsymbol{u}),网格速度为 (\boldsymbol{u}_m),相对速度为:
[ \boldsymbol{u}_r=\boldsymbol{u}-\boldsymbol{u}_m ]
质量守恒可写为:
[ \frac{d}{dt}\int_{V(t)}\rho,dV +\oint_{\partial V(t)} \rho(\boldsymbol{u}-\boldsymbol{u}_m)\cdot d\boldsymbol{S}=0 ]
这属于 ALE,即 Arbitrary Lagrangian-Eulerian 描述。
- 当 (\boldsymbol{u}_m=0) 时,退化为欧拉描述;
- 当网格随流体质点运动时,接近拉格朗日描述;
- 实际 CFD 中网格速度由几何运动和网格平滑策略决定。
2. 几何守恒律
动态网格不仅要满足物理守恒,还要满足几何守恒律。直观地说:
即使流场是均匀的,网格运动本身也不应凭空制造质量、动量或能量。
单元体积变化必须与网格面扫掠体积一致。OpenFOAM 在动态有限体积框架中计算网格运动通量,求解器再使用相对通量进行离散。
因此,用户不能只定义物体位移,还必须:
- 使用支持动态网格的求解器;
- 合理设置时间步;
- 检查网格 Courant 数;
- 在网格更新后执行必要的压力和通量修正。
3. 刚体运动与变形运动
3.1 刚体运动
刚体运动保持局部网格形状不变,包括:
- 匀速或变速平移;
- 绕固定轴旋转;
- 往复运动;
- 预定义组合运动;
- 受流体力驱动的六自由度运动。
3.2 变形运动
边界位移向内部传播,网格发生连续变形。
常用思想包括:
- Laplace 位移平滑;
- 速度 Laplace 平滑;
- SBRStress 应力型平滑;
- 弹性类平滑;
- 距离加权扩散。
基本方程可概括为:
[ \nabla\cdot(\gamma\nabla\boldsymbol{d})=0 ]
其中 (\boldsymbol{d}) 为网格位移,(\gamma) 为运动扩散系数。通过设计 (\gamma),可保护运动壁面附近网格,并把主要变形分配到远离关键边界的区域。
4. v2512 中的主要网格类
4.1 dynamicMotionSolverFvMesh
单一运动求解器的常用动态网格类:
dynamicFvMesh dynamicMotionSolverFvMesh;4.2 dynamicMotionSolverListFvMesh
用于多个运动求解器:
dynamicFvMesh dynamicMotionSolverListFvMesh;
solvers
(
rotor1
{
solver solidBody;
...
}
rotor2
{
solver solidBody;
...
}
);各运动按顺序应用。若多个运动区域作用于同一批点,应特别检查运动叠加是否符合物理预期。
4.3 dynamicMultiMotionSolverFvMesh
按 cellZone 应用不同运动求解器,适合多个明确分区的运动区域。
5. 固定轴旋转的基本设置
下面给出 v2512 风格的 constant/dynamicMeshDict 骨架:
dynamicFvMesh dynamicMotionSolverFvMesh;
solver solidBody;
solidBodyCoeffs
{
cellZone rotor;
solidBodyMotionFunction rotatingMotion;
rotatingMotionCoeffs
{
origin (0 0 0);
axis (0 0 1);
omega 6.283185; // rad/s
}
}需要注意:
rotor必须是已有的 cellZone;- 旋转区域与静止区域如何连接,需要 AMI、Overset 或整体网格运动等其他机制;
- 单独使用
solidBody不能让一个共形内部接口在两侧发生相对滑动。
也就是说,运动求解器负责“怎么动”,AMI 或 Overset 负责“运动区域怎样与其他区域连接”。
6. Laplace 变形网格设置
dynamicMeshDict:
dynamicFvMesh dynamicMotionSolverFvMesh;
solver displacementLaplacian;
displacementLaplacianCoeffs
{
diffusivity inverseDistance (movingWall);
}还需要在初始时刻目录中提供点位移场:
0/pointDisplacement示意边界条件:
dimensions [0 1 0 0 0 0 0];
internalField uniform (0 0 0);
boundaryField
{
movingWall
{
type oscillatingDisplacement;
amplitude (0.01 0 0);
omega 6.283185;
value uniform (0 0 0);
}
fixedWalls
{
type fixedValue;
value uniform (0 0 0);
}
otherPatches
{
type zeroGradient;
}
}具体运动边界条件必须以 v2512 实际可用类型为准。复杂运动可使用表格函数、固体运动函数或 codedFixedValue。
7. 运动扩散系数
7.1 uniform
整个区域均匀分配变形,设置简单,但运动边界附近可能发生较大拉伸。
7.2 inverseDistance
扩散系数与到指定 patch 的距离有关,常用于保护运动物体附近网格:
diffusivity inverseDistance (movingWall);7.3 二次距离形式
可进一步强化近壁区域的刚性:
diffusivity quadratic inverseDistance (movingWall);最终判断标准不是关键字本身,而是整个运动周期内的最小体积、非正交、偏斜、层厚变化和边界层完整性。
8. SBRStress 方法
displacementSBRStress 通过固体转动应力形式传播位移,通常比简单 Laplace 平滑更能处理含旋转成分的边界运动。
示意:
dynamicFvMesh dynamicMotionSolverFvMesh;
solver displacementSBRStress;
displacementSBRStressCoeffs
{
diffusivity inverseDistance (movingWall);
}其代价是计算更复杂,且仍不能保证任意大位移下网格有效。
9. 六自由度运动
sixDoFRigidBodyMotion 用于由流体力和力矩驱动的刚体运动。
需要定义:
- 质量;
- 转动惯量;
- 初始质心和姿态;
- 运动积分器;
- 约束;
- 弹簧、阻尼等 restraints;
- 受力 patch。
v2512 支持 symplectic、Crank–Nicolson 和 Newmark 等时间积分思想。
若物体位移较大,通常需要与 Overset 结合;若仅靠整体变形网格,网格质量可能迅速恶化。
10. 使用流程
第一步:确定运动类型
- 预定义还是受力驱动?
- 刚体还是边界形变?
- 单一运动区还是多个运动区?
- 是否存在相对滑动?
- 最大位移与局部网格尺度之比是多少?
第二步:建立 zone 和运动边界
可使用:
topoSet
setsToZones或在网格生成阶段直接建立 cellZone、faceZone、pointZone。
第三步:配置 dynamicMeshDict
选择动态网格类、运动求解器、运动函数、扩散系数和运动区域。
第四步:先检查网格运动
在进行流场计算前,可使用:
moveDynamicMesh或进行短时间空跑,输出多个时刻网格,再逐时刻执行:
checkMesh -time '0:1'第五步:使用动态求解器
应确认求解器包含网格更新、网格通量、相对通量和压力修正处理。
第六步:控制时间步
除流体 Courant 数外,还应控制网格 Courant 数。物体单步位移不宜跨越过多局部单元。
11. 应用案例一:小幅振动翼型
目标是研究翼型小幅升沉或俯仰产生的非定常升力。
推荐:
- 翼型近场使用高质量边界层;
- 远场网格承担主要变形;
- 使用
displacementLaplacian或 SBRStress; - 一个周期划分足够时间步;
- 比较升力相位、幅值与实验或文献。
当俯仰角或升沉幅度过大时,应转向 AMI 或 Overset。
12. 应用案例二:移动壁面和膜片
例如膜片泵、小幅变形风道和壁面周期脉动。若边界位移相对于腔体尺寸较小,变形网格通常比 Overset 更守恒、更经济。
13. 对旋转格栅的判断
若格栅绕固定轴连续转动,单纯变形网格通常不是最佳方案,因为网格会不断扭曲。
更合理的选择是:
- 只求平均影响:MRF 或时变边界条件;
- 固定圆柱接口:AMI;
- 多格栅、偏心或复合运动:Overset。
14. 常见故障
14.1 负体积
常见原因包括单步位移过大、网格过粗、运动边界距离固定边界太近、扩散系数不合理以及边界层被压缩至零。
14.2 边界层严重畸变
可扩大运动区域、调整距离扩散、降低时间步、减小层增长率,或改用 AMI/Overset。
14.3 非物理通量
检查求解器是否真正支持动态网格、是否使用相对通量、压力修正是否在网格更新后执行,以及网格 Courant 数是否过大。
15. 适用范围与边界
移动/变形网格最适合:
- 小到中等位移;
- 拓扑不变;
- 希望避免插值接口;
- 运动区域与固定区域能够通过连续变形连接。
当大位移导致不可接受的网格畸变时,不应继续通过降低松弛因子“硬算”,而应改变网格方法。