OpenFOAM找指定点的Cell label

OpenFOAM中,每个Cell都能找到对应的位置信息(mesh.C()[celli]),但是对于一个特定的位置点,无法直接与某个Cell进行直接的联系。因为Cell是离散的一个个点,其对应位置是有限的集合;而整个空间的位置点个数是无限的,是连续的。所以它俩只能是单射的关系。

用计算距离的方法,找到里这个点最近的Cell,并返回label。这在OpenFOAM的sampleDict里会用到。其中一个实现的函数就是findNearestCell(const point&):

 Foam::label Foam::primitiveMesh::findNearestCell(const point& location) const
 {
     const vectorField& centres = cellCentres();
 
     label nearestCelli = 0;
     scalar minProximity = magSqr(centres[0] - location);
 
     for (label celli = 1; celli < centres.size(); celli++)
     {
         scalar proximity = magSqr(centres[celli] - location);
 
         if (proximity < minProximity)
         {
             nearestCelli = celli;
             minProximity = proximity;
         }
     }
 
     return nearestCelli;
 }

参考:

OpenFOAM: src/OpenFOAM/meshes/primitiveMesh/primitiveMeshFindCell.C Source File

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片