mimmo is a C++ library for Manipulation and Morphing of surface/volume meshes (Open source).
The main aim of mimmo is to provide a framework of tools able to handle a tessellated geometry and quickly modify it. It relies on Radial Basis Function (RBF) and extended Free Form Deformation (eFFD) techniques to achieve it.
Many efforts are spent to make mimmo a flexible platform, able to adapt to any User problem/need, and open to any customization. Its inner structure is made by essential executable blocks, each one providing a basic feature, such as I/O handling, manipulating, selecting sub-portion of target geometries, etc...
Blocks are connectable between each other, so that they can describe a morphing workflow, easily controllable by the User.
Quick contents description
core
core provides the basic structures and low level tools to manage them. Main executable blocks are:
- mimmo::BaseManipulation is the base class and interface for each executable block
- mimmo::Chain provides tools to manage and execute a set of manipulation blocks in an automatic work-flow
- mimmo::MimmoObject is the geometry container used to store and perform operation on a target geometry
- mimmo::MimmoPiercedVector is the container for data attached to a MimmoObject geometry
- mimmo::Lattice is the executable block to create structured mesh of points
- miscellanous utilities integrating CG,SkdTree and I/O VTU packages of bitpit
iogeneric
iogeneric provides all executable blocks to read/write geometry from/on external files, as well as raw data in generic formats. Main executable blocks are:
- mimmo::MimmoGeometry is the I/O handling block for geometry files.
- mimmo::GenericInput provides input interfaces to unformatted/CSV files
- mimmo::GenericOutput provides output interfaces to unformatted/CSV files
- mimmo::GenericInputMPVData provides input interfaces for MimmoPiercedVector data files
- mimmo::GenericOutputMPVData provides output interfaces for MimmoPiercedVector data files
- mimmo::GenericDispls interfaces for FFDLattice input dof displacements from file
- mimmo::IOCloudPoints interfaces for MRBF input nodes and dof displacements from file
iocgns
iocgns collects all interfaces to volume mesh CGNS format input/output.
- mimmo::IOCGNS input/output block for CGNS meshes
ioofoam
ioofoam collects all interfaces to volume mesh OpenFoam format input/output.
- mimmo::IOOFOAM input/output block for meshes in OpenFOAM format (VTK surface and volume Point CLoud)
geohandlers
geohandlers provides tools to handle, transform, select a target geometry mesh and attached data fields. Main executable blocks are:
- mimmo::...Selection... different selection blocks from primitive-based(Box, Cylinder, etc..) inclusion selections to PID or proximity Mapping.
- mimmo::ClipGeometry cutting-by-plane a target geometry
- mimmo::Extract... extract field subportion from a target MimmoPiercedVector field.
- mimmo::Reconstruct... reconstruct field on a target geometry from various MimmoPiercedVector fields defined on its subportions.
- mimmo::RefineGeometry refine a surface geometry into a finer triangular mesh.
- mimmo::SurfaceTriangulator triangulate a tessellated surface geometry
- mimmo::StitchGeometry stitch multiple geometries together
manipulators
manipulators provides core engines to morph a target mesh directly or with eFFD and RBF techniques. Main executable blocks are:
- mimmo::FFDLattice provides extended Free Form Deformation based manipulation tools
- mimmo::MRBF provides Radial Basis Functions based manipulation tools
- mimmo::...Geometry provide global direct transformation such as rotation, scaling, translation, twisting and bending
- mimmo::Apply applier of a deformation field to a target geometry
propagators
propagators executable blocks for mesh morphing: provides laplacian propagation of boundary information into a volume mesh
utils
utils provides miscellaneous features useful to morphing workflow