Giter Club home page Giter Club logo

mimmo's Introduction

Build Status Coverity Scan Build Status

About 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 direct transformation, 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 through input/output ports, so that they can describe a morphing workflow, easily controllable by the User.

Further info available @ mimmo website

License

mimmo is released under the GNU LESSER GENERAL PUBLIC LICENSE version 3.

Attribution

To cite the mimmo library, please use this BibTeX entry:

@misc{mimmo,
  title = {{mimmo}: Surface manipulation and mesh morphing library},
  author = {Optimad engineering srl},
  note = {https://github.com/optimad/mimmo},
  year = {2015},
}

Contact

mimmo is developed and maintained by Optimad engineering srl.
Please contact Optimad office's mail for further info and details.

Copyright

2015-2021 Optimad engineering srl.

mimmo's People

Contributors

andrea-iob avatar edoardolombardi avatar roccoarpa avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mimmo's Issues

Wrappers

Implement new wrapper for basic deformations (for FFD, RBF and mini-chains).

Data field in Mimmo Objects

Include data fields in MimmoObject class. Attach standard types currently managed to meshes stored in Mimmo Objects:

  • scalar and vector of double fields
  • scalar of int (long int)

New expected features:

  • automatic control of data (remapping and reordering in case of manipulation of the mesh)
  • automatic merge control (embedding merge method in MimmoObject class [?] )
  • direct import/export of meshes with attached fields
  • quick and almost easy-to-use interface to fill/empty Data Structure (reimplemented from bitpit meshes).

Surface mesh global refinement

Basic refinement methods of surface meshes only.

  • ternary refinement (new barycentric vertex insertion) or similar algorithms
  • surface mesh regularization methods [needed for this release?]

no mpi

MimmoObject

  • check SetVertices and Set Cells methods
  • add bounding box interface-to-patch method

Impenetrability constraints

Development of collision detection and deformation modulation by impenetrability constraints.
Required features and activities:

  • BvTree review -> now SkdTree

  • Targeting also the specific problem of auto-collisions of a single body.

MimmoGeometry split

Split MimmoGeometry block in three different blocks (or derivations) to read, write and convert.

CGElem::distanceXXX method. Resolve deprecated issues

Bitpit new version will make CGElem::distanceXXX method with flag argument deprecated. They will pass also barycentric coordinates of support point as optional argument. It will be cleaner to call new methods form, specially in BvTree class and utils.

README & INSTALL

Add a README and an INSTALL file to the project.
Add a Wiki page.

Investigate the utility of CGNSPidExtractor

Remove CGNSPidExtractor if its functions are already covered by extractPID method of MimmoObject class and SelectionByPID class.
Then Integrate SurfaceTriangulator from mimic in mimmo

Rearrange members/methods in classes

Rearrange member & methods in classes :

  • make private or protected the needed methods
  • follow the same order for methods for readability

modules :

  • common
  • core
  • geohandlers
  • iocgns
  • iogeneric
  • ioofoam
  • iovtk
  • manipulators
  • utils

Features identification

Features identification on surface meshes (mimmo/bitpit feature).

  • sharp edges -> done in mimic::ExtractSurfaceFeatures.
  • patches decomposition
  • surface holes

Adjust documentation of ports

Remove all *s from ports tables and add \n before and after ports descriptions
Change layout of ports table (see RotationAxes)

  • common
  • core
  • geohandlers
  • iogeneric
  • ioofoam
  • iovtk
  • manipulators
  • utils

Review Cmake tree

Update Cmake tree to modular format.
Align it to the latest version of bitpit.

Check mesh methods

Check quality mesh methods development.

  • negative volume identification
  • orthogonality field computation
  • skewness evaluation
  • mesh smoothness/aspect ratio assessment

Update plot in execution features

New minor features to manage plot in execution functions:

  • output dir for each block
  • an optional global output dir for chain object (the chain will set the output dir for blocks)
  • highlight in documentation that plot in execution functions are for debugging purpose

I/O mesh

Move from mimic and implement blocks for input/output of surface and volume meshes in mimmo

Mesh Morphing improvement

Development of new Laplacian based constraint propagation method for mesh morphing.

  • Laplacian solver for surface and volume meshes (wait for bitpit volume unstructured mesh) -> EDIT use a new refactored POINT based scheme, VOLUME schemes are abandoned for inconsistencies while approximating boundary deformation.
  • surface rotation (quaternion) propagation in volume mesh (prototype feature) with
    - EDIT added in MIMIC in PropagateFVQuaternions
  • enhance dumping function using all the quality indices of checkMesh (related to issue #14 )
  • introduce local smoother to fix extremely bad situation during volume morphing
  • fix on negative volume cells (cut off and hole repair)

Featured issue related to this task:

  • improving slip BC #106
  • creating periodic BC #110

[EDIT] Before this implementations: review of mesh morphing methods #108

Review documentation

Review of doxygen documentation of whole project
Module by module

  • common
  • core
  • geohandlers
  • iocgns
  • iogeneric
  • ioofoam
  • iovtk
  • manipulators
  • utils
  • check accessory files of the Repo (README, INSTALL, CMAKELISTS etc..., and everything is not included in sources/tests/examples and binaries top folders)
  • update license disclaimer to 2017 and correct bitpit with mimmo everywhere (not all disclaimer are updated, check it out manually reviewing docs)

Please thick once a module review is done.

Warnings, error exceptions and logger

  • add a logger manager and functions to set the related verbosity (see bitpit/PABLO examples)
  • review of warnings of whole library to write on logger with different verbosity
  • add error exceptions managing

Global manipulators

Implementation of fundamental global manipulators of geometry :

  • rotation
  • translation
  • scaling
  • torsion

Warning for Input (Output) mandatory ports

Add a mandatory property for Input (Output) ports that have to be necessarily linked to other objects. Add warnings (or exception errors) if not linked mandatory ports during execution.

Rearrangement tests & examples

Update tests and implement tutorials and examples .
For the modular structure:

  1. tests need to be rewritten: they need to focus on their reference module and need to be small.
  2. examples/tutorials can be rearranged from old tests. It will be clever to provide both their cpp implementation and xml dictionary declaration (to be used in the TUI interface MIMMOXml_exec)
  3. update CMake file for tests and examples with new modular structure

Instantaneous apply

New feature that optionally allows to apply directly a manipulation during a block execution (no applier block needed). Check compatibility with new features #39 & #38 .

Warning Port Linking

Add warnings if ports are not linked in addPin function (directly in addPin function and/or in mimmo executable)

Warnings check

Test compilation with warnings active and correct them.

Restyling notes

Improve coding style, aligning it to bitpit (no return to void functions, and something similar).
Do it whenever/wherever is possible.

I/O generic files

Implement interface of generic input/output files for:

  • DAKOTA format files
  • Internal standard interface for DOF. (related to issue #57)

base xml absorb/flush

Implement method of BaseManipulation class to absorb/flush base members. Add a call to base absorb/flush in derived blocks.

Inheritance of global port list of library

Need to suppress better enum PortType and substitute with an exstendible structure, for those applications mimmo-dependent. ->maybe there is a way using a plugin-singleton class to register ports, datatype, and datatag

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.