• Will Bainbridge's avatar
    Lagrangian: Rewrite of the particle tracking algorithm to function in · 743dea87
    Will Bainbridge authored
    terms of the local barycentric coordinates of the current tetrahedron,
    rather than the global coordinate system.
    
    Barycentric tracking works on any mesh, irrespective of mesh quality.
    Particles do not get "lost", and tracking does not require ad-hoc
    "corrections" or "rescues" to function robustly, because the calculation
    of particle-face intersections is unambiguous and reproducible, even at
    small angles of incidence.
    
    Each particle position is defined by topology (i.e. the decomposed tet
    cell it is in) and geometry (i.e. where it is in the cell). No search
    operations are needed on restart or reconstruct, unlike when particle
    positions are stored in the global coordinate system.
    
    The particle positions file now contains particles' local coordinates
    and topology, rather than the global coordinates and cell. This change
    to the output format is not backwards compatible. Existing cases with
    Lagrangian data will not restart, but they will still run from time
    zero without any modification. This change was necessary in order to
    guarantee that the loaded particle is valid, and therefore
    fundamentally prevent "loss" and "search-failure" type bugs (e.g.,
    2517, 2442, 2286, 1836, 1461, 1341, 1097).
    
    The tracking functions have also been converted to function in terms
    of displacement, rather than end position. This helps remove floating
    point error issues, particularly towards the end of a tracking step.
    
    Wall bounded streamlines have been removed. The implementation proved
    incompatible with the new tracking algorithm. ParaView has a surface
    LIC plugin which provides equivalent, or better, functionality.
    
    Additionally, bug report <https://bugs.openfoam.org/view.php?id=2517>
    is resolved by this change.
    743dea87
sampledSet.C 12.1 KB