This project aims at providing tools (functions, classes, bindings,
etc...) to handle behaviours written using the
MFront generic interface.
Those tools are meant to be used by (FEM, FFT, etc.) solver
developers. Permissive licences have been chosen to allow integration in
open-source and proprietary codes: MGIS is distributed under either
the LGPL v3 licence or the CeCILL-C licence.
By default, MGIS looks for the TFEL libraries and, if they are
found, is linked to the TFELMath and TFELMFrontDatabase libraries,
which provide the TFEL/Math objects of MGIS/Function and the
MFront database (mgis::getDatabase and
mgis::behaviour::loadFromDatabase). Those libraries are distributed
under either the GPL licence with a linking exception or the
CeCILL-A licence. Passing -Ddisable-tfel=ON to cmake builds a
library independent of TFEL.
The goal and features of MGIS are described in its JOSS paper.
The official website can be found here: https://thelfer.github.io/mgis/web/index.html.
The project is built around the MFrontGenericInterface library. This
library provides two main functions:
- the
mgis::behaviour::loadfunction loadsMFrontbehaviours from external shared libraries and retrieves all relevant meta data. This relevant information is stored in themgis::behaviour::Behaviourclass. - the
mgis::behaviour::integratefunction integrates the behaviour over one time step. The data associated with an integration point are handled by themgis::behaviour::BehaviourDataclass which contains the state of the integration point at the beginning and at the end of the time step.
The library also supports handling a group of integration points through
the mgis::behaviour::MaterialStateManager class.
The following bindings are available:
cbindings.pythonbindings.fortran03bindings.fenicsbindings (under current work in themasterbranch). Those bindings are strongly inspired by thefenics-solid-mechanicsproject. Those bindings are currently quite limited as they mostly serve as a proof of concept. Note thatMGIScan also be used inFEniCSthrough thepythoninterface. This is discussed here: https://thelfer.github.io/mgis/web/FEniCSBindings.html.juliabindings (experimental).
The following bindings are under consideration:
octavebindings
- Version
3.2is meant to be built againstTFEL5.2 - Version
3.1.1is meant to be built againstTFEL5.1.1 - Version
3.1is meant to be built againstTFEL5.1 - Version
3.0.2is meant to be built againstTFEL5.0.2 - Version
3.0.1is meant to be built againstTFEL5.0.1 - Version
3.0is meant to be built againstTFEL5.0 - Version
2.2.1is meant to be built againstTFEL4.2.3 - Version
2.2is meant to be built againstTFEL4.2 - Version
2.1is meant to be built againstTFEL4.1 - Version
2.0is meant to be built againstTFEL4.0 - Version
1.2.2is meant to be built againstTFEL3.4.3 - Version
1.2.1is meant to be built againstTFEL3.4.1 - Version
1.2is meant to be built againstTFEL3.4.0 - Version
1.1is meant to be built againstTFEL3.3.0 - Version
1.0.1is meant to be built againstTFEL3.2.1 - Version
1.0is meant to be built againstTFEL3.2.0
The following branches are available:
- The
masterbranch follows the evolution of themasterbranch of theTFELproject - The
rliv-3.1branch follows the evolution of the 5.1.x series of theTFELproject. - The
rliv-3.0branch follows the evolution of the 5.0.x series of theTFELproject. - The
rliv-2.2branch follows the evolution of the 4.2.x series of theTFELproject. - The
rliv-2.1branch follows the evolution of the 4.1.x series of theTFELproject. - The
rliv-2.0branch follows the evolution of the 4.0.x series of theTFELproject. - The
rliv-1.2branch follows the evolution of the 3.4.x series of theTFELproject. - The
rliv-1.1branch follows the evolution of the 3.3.x series of theTFELproject. - The
rliv-1.0branch follows the evolution of the 3.2.x series of theTFELproject. Note that this branch is not compatible withTFEL-3.2.0.
This project uses code extracted from the following projects:
- https://github.com/bitwizeshift/string_view-standalone by Matthew Rodusek
- https://github.com/mpark/variant by Michael Park
- https://github.com/progschj/ThreadPool by Jakob Progsch and Václav Zeman
- https://github.com/martinmoene/span-lite by Martin Moene
- https://bitbucket.org/fenics-apps/fenics-solid-mechanics/ by Kristian B. Ølgaard and Garth N. Wells.