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
暂无评论内容