在OpenFOAM中,snappyHexMesh
工具通过 Cut-Cell 方法 处理复杂几何体,生成贴体网格。以下是其支持 Cut-Cell 方法的关键步骤:
1. 背景网格生成
- blockMesh:首先使用
blockMesh
生成简单的六面体背景网格,作为snappyHexMesh
的初始网格。
2. 几何体导入
- STL 文件:将几何体以 STL 格式导入,
snappyHexMesh
会根据该文件调整背景网格。
3. 网格切割与调整
- Cut-Cell 方法:
snappyHexMesh
根据几何体表面切割背景网格,生成贴体网格。具体步骤包括:- 表面捕捉:调整网格点以贴合几何体表面。
- 层添加:在边界附近添加棱柱层,提升边界层分辨率。
- 网格优化:通过平滑和优化提高网格质量。
4. 控制参数
- snappyHexMeshDict:通过该字典文件控制切割和优化过程,主要参数有:
- refinementSurfaces:定义需要捕捉的几何表面。
- refinementRegions:定义需要细化的区域。
- layers:控制边界层添加。
- meshQualityControls:设置网格质量标准。
5. 执行与输出
- 运行命令:执行
snappyHexMesh
生成最终网格。 - 网格输出:生成贴体网格,供后续求解器使用。
示例代码片段
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: v2012 |
| \\ / A nd | Website: www.openfoam.com |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{version 2.0;format ascii;class dictionary;object snappyHexMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //castellatedMesh true;
snap true;
addLayers true;geometry
{myGeometry.stl{type triSurfaceMesh;name myGeometry;}
};castellatedMeshControls
{// 细化设置refinementSurfaces{myGeometry{level (2 2);}}
};snapControls
{// 捕捉设置nSmoothPatch 3;tolerance 2.0;nSolveIter 30;
};addLayersControls
{// 层添加设置layers{myGeometry{nSurfaceLayers 3;}}
};meshQualityControls
{// 网格质量控制maxNonOrtho 65;
}// ************************************************************************* //
总结
snappyHexMesh
通过 Cut-Cell 方法生成贴体网格,结合背景网格切割、表面捕捉、层添加和网格优化,能够有效处理复杂几何体。