The volume triangulation routine currently uses scipy.delaunay.triangulate to divide the mesh into tetrahedra. Despite Scipy's routine being applied only to convex geometries, additional checks in Nanokappa are made to detect holes and corners, as well as new points are added to avoid holes inside the mesh that should not be there. Nevertheless sometimes these are not enough, and we still find particles outside of the mesh being detected as being inside, and vice versa.
There is a bounds check using the bounding box of the geometry, eventually particles that are outside will be moved inside. However this may take a lot of time if their velocity is small or the geometry is large. Also this does not mean it solves the triangulation issue inside the mesh.
Example geometry that reproduces this problem:
--geometry freewire
--dimensions 100 200 100 0 300 200 150 0 250 200 100 0 150 200 50 0 100 200 10 6
The volume triangulation routine currently uses scipy.delaunay.triangulate to divide the mesh into tetrahedra. Despite Scipy's routine being applied only to convex geometries, additional checks in Nanokappa are made to detect holes and corners, as well as new points are added to avoid holes inside the mesh that should not be there. Nevertheless sometimes these are not enough, and we still find particles outside of the mesh being detected as being inside, and vice versa.
There is a bounds check using the bounding box of the geometry, eventually particles that are outside will be moved inside. However this may take a lot of time if their velocity is small or the geometry is large. Also this does not mean it solves the triangulation issue inside the mesh.
Example geometry that reproduces this problem: