说一点我的看法,不一定对,仅供参考:
non-orthogonality
dca809a8-9cd5-4f74-9329-6d8459966264-image.png
non-orthogonality由snappyHexMeshDict.meshQualityControls.maxNonOrtho直接控制,你的snappyHexMeshDict里这个值是45,这个值一般不需要控制的这么小,65是更常见的配置值。
另外,你的snappyHexMeshDict里,relaxed.maxNonOrtho给的是75,这个值通常是和maxNonOrtho = 65相配合的。如果你真的要把maxNonOrtho设为45,按逻辑来说relaxed.maxNonOrtho也应该相应的减少一点。
网格纵横比
这里截取你的背景网格配置:
vertices
(
(-340 -302 -3) // Slightly smaller than the STL model bounds
(332 -302 -3)
(332 341 -3)
(-340 341 -3)
(-340 -302 95) // Slightly larger than the STL model bounds
(332 -302 95)
(332 341 95)
(-340 341 95)
);
blocks
(
hex (0 1 2 3 4 5 6 7) (100 100 100) simpleGrading (1 1 1) // Adjust mesh density as needed
);
如上面B老师所说,你网格的大纵横比就是这里导致的。如果不是有意要在Z方向上做加密的话没必要这么分块,我口算一下,大概(70 65 10)就可以。
castellate
从上面可以看到,你背景网格的量级是100 * 100 * 100 = 1,000,000;而你SHM的maxGlobalCells给了2,000,000。这看起来不太对,这几乎没给SHM进一步细分的空间,从结果来看也是这样,网格划分的不够细。
另外,截取一段level的配置:
features
(
{
file "building.eMesh";
level 3;
}
......
);
refinementSurfaces
{
building
{
level (3 4);
}
......
}
我理解features的level应该不低于Surface的。
胡乱写了一些个人看法,希望能有所帮助。