nearestPoint的问题



  • 注意到壁面函数中基本都会计算近壁面距离nearWallDist,追踪了下发现有一个关键函数smallestDist()应该是用于计算的,其描述为Return smallest true distance from p to any of wallFaces。

    Foam::scalar Foam::cellDistFuncs::smallestDist
    (
    ...
    ) const
    {
        ...
        for (label wallFacei = 0; wallFacei < nWallFaces; wallFacei++)
        {
            label patchFacei = wallFaces[wallFacei];
    
            `pointHit curHit = patch[patchFacei].nearestPoint(p, points);`
    
            if (curHit.distance() < minDist)
            {
                minDist = curHit.distance();
                minFacei = patch.start() + patchFacei;
            }
        }
    
        return minDist;
    }
    

    看起来里面真正干活的是nearestPoint,但是继续深入看nearestPoint的代码我就看不懂了。想请问一下大家有对nearestPoint有过研究的么。



  • 这个问题其实是受东岳流老师以前的推送启发。所以想搞清楚离壁面第一层网格中心到壁面的距离是咋算的。



  • 目前有一点进展了,阅读了论文:《Verification and Validation of OpenFOAM for High-Lift
    Aircraft Flows》,里面有提到,OpenFOAM默认的壁面距离计算方法是计算网格中心到最近壁面的中心的距离,下图来源于论文截图
    9b5d13ab-8741-40ba-bd5b-30ba430e68fc-image.png



  • 此贴基本完结,按着源代码琢磨了一下午,基本弄清楚了是如何计算的。nearestPoint()主要使用了实时碰撞检测算法,可以计算出网格中心点到一个面的最短距离。这个最短距离是通过寻找面上离网格中心点的最近点来计算的。等我过段时间总结好了,到时候再补充到这个贴子下面。


Log in to reply
 

CFD中文网 2016 - 2020 | 京ICP备15017992号-2