The MultiFlow Triangulation Library (MFTL) is a fully parallel, thread-safe triangulation library designed for simulations involving triangulated interfaces. In MultiFlow, MFTL is used to represent boundaries which are immersed in a flow.
The MFTL library can be used for the generating and performing operations on arbitrarily shaped triangulated bodies. In contrast to other triangulation libraries, MFTL is designed to run on multiple processors for enhanced speed of operations. MFTL uses domain decomposition, in which a body is distributed over multiple processors. Each triangle of the body is stored on one processor only, maximizing the potential efficiency. At any time, a new domain-decomposition can be applied and the body is redistributed accordingly.
MFTL is written in C programming language using MPI and can be easily incorporated to any MPI-parallelised code by adding a single MFTL header file and linking with the MFTL library. The header file contains the definitions of all the data structures used in the library along with definitions of external MFTL functions, while the internal MFTL functions remain hidden to avoid user distraction. The external functions are proceeded by a MFTL prefix.
Example operations which are supported by MFTL are:
- Generation of a sphere or reading a body from a GTS or STL file.
- Determination of the center, mass, moment of inertia, volume or other properties of a body.
- Looping over each triangle of the body and apply a given function.
- Determination of the position of an arbitrary point with respect to the body and finding out if this point lies inside our outside of the body.
- Finding list of intersections between two or more triangulated bodies.
- Determination of the distance between an arbitrary point and an arbitrary triangle of the body.
- Moving, rotating, or deforming the body.
- Saving the body in VTK, GTS or STL format.
Examples of 3 different bodies as generated with MFTL.