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