说一点我的看法,不一定对,仅供参考:
non-orthogonality

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的。
胡乱写了一些个人看法,希望能有所帮助。
 
			