# 粒子跟踪的时候位置信息为什么和四面体网格有关？

• Each particle position is defined by topology (i.e. which decomposed tet cell it is in) and geometry (i.e. where it is in the cell).

In previous versions of OpenFOAM, the particle tracking algorithm moved particles successfully and efficiently in meshes of unstructured, arbitrarily polyhedral cells, in parallel, even in cases where faces of cells were significantly non-flat. Its primary limitation was that it was only applicable where all cells were strictly convex and, in the worst case, concave cells caused a solver to hang indefinitely. Such cells often exist in meshes generated by automatic tools, such as snappyHexMesh, especially at all refinement interfaces where it naturally produces cells that are not strictly convex. To overcome this limitation, the tracking algorithm has been re-written to track particles on an implicit decomposition of each cell into tetrahera as shown.

https://openfoam.org/release/2-0-0/particle-tracking/

https://cfd.direct/openfoam/free-software/barycentric-tracking/

最近在用欧拉拉格朗日模拟，打算看看算法。不是很明白为什么粒子跟踪和tet网格有什么关系。有人了么？

• 看起来粒子跟踪的时候是通过粒子穿过的面来锁定粒子位置的。

template<class ParticleType>
template<class TrackData>
void Foam::Cloud<ParticleType>::move(TrackData& td, const scalar trackTime)
{

...

}


• 好吧，已经自我解释了：在当前植入的粒子跟踪算法中，适应于网格单元严格凸出的，但是往往OpenFOAM的snappyHexMesh生成的网格并不令人满意，有的时候会产生凹的网格单元。OpenFOAM为了能处理这种偶尔的收敛问题，进一步的把多面体网格分解为四面体，增加稳健性。

• 自娱自乐的贴，哎，我貌似也有这样的帖子

• 四面体分解确定插值权重啊，用于相间耦合或者场平均（跟用多少耦合有关）。跟重心关联，还可以表示成局部坐标的形式。