We have a 3D (volume) unstructured, possibly hybrid, degenerative irregular mesh data structure that we are capable of generating (mostly composed of hexahedra and general polyhedra, using a mix of CSG and b-rep) and a set of triangulated surfaces that we know intersect the mesh. We would like to split the volume mesh by the set of intersecting triangulated surfaces and change the topology of the mesh accordingly. These meshes have several uses including computation and visualization. Also the geometries they both represent are highly irregular and complicated, so oct-trees or oct-forests are not being strongly considered. We already have an implementation to detect such intersections in the whole volume. The triangulated surfaces can intersect themselves inside the volume too and split the mesh in another number of topological regions.
What we are looking for is an algorithm to split the mesh accordingly.
Would you know any library (whatever language, but if commercial ones, implemented in C++) or papers that would deal with this?
We are currently looking into using Marching cubes and have started some development towards that effort, but are interested in existing implementations or research on the topic. We have also been looking into CGAL but it does not fit our purpose. We know OpenFOAM by name but we do not know if it can help us.
Thanks for your help!