GithubHelp home page GithubHelp logo

optimad / mimmo Goto Github PK

View Code? Open in Web Editor NEW
98.0 98.0 21.0 231.57 MB

Surface manipulation and mesh morphing library

Home Page: http://optimad.github.io/mimmo

License: GNU Lesser General Public License v3.0

C++ 95.54% CMake 4.46%
deformation free-form-deformation manipulation mesh morphing radial-basis-function

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

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

Features identification

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

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

README & INSTALL

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

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

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 .

Review Cmake tree

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

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

Restyling notes

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

Warnings check

Test compilation with warnings active and correct them.

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.

Warning Port Linking

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

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

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.

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.

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

MimmoGeometry split

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

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

Global manipulators

Implementation of fundamental global manipulators of geometry :

  • rotation
  • translation
  • scaling
  • torsion

base xml absorb/flush

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

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).

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.

MimmoObject

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

Check mesh methods

Check quality mesh methods development.

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

I/O generic files

Implement interface of generic input/output files for:

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

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

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

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

Wrappers

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

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.