mimmo

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:

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