Version 1.1 of MFrontGenericInterfaceSupport is compatible with the Version 3.3 of TFEL/MFront.

This version has been used in many projects:

New functionalities

Finite strain behaviour options

By default, finite strain behaviours use:

The FiniteStrainBehaviourOptions data structure allows to specify which stress measure and which tangent operator is expected.

Here is an example of this structure may be used:

auto o = FiniteStrainBehaviourOptions{};
o.stress_measure = FiniteStrainBehaviourOptions::PK1;
const auto b =
    load(o, "src/libBehaviour.so", "SaintVenantKirchhoffElasticity",
         Hypothesis::TRIDIMENSIONAL);

Add support for generalised behaviours

Generalised behaviours in MFront can be based on multiple tangent operator blocks.

Markdown output

The print_markown function allows printing using a markdown format:

Specify the type of integration to be performed in the integrate function

enum struct IntegrationType {
  PREDICTION_TANGENT_OPERATOR = -3,
  PREDICTION_SECANT_OPERATOR = -2,
  PREDICTION_ELASTIC_OPERATOR = -1,
  INTEGRATION_NO_TANGENT_OPERATOR = 0,
  INTEGRATION_ELASTIC_OPERATOR = 1,
  INTEGRATION_SECANT_OPERATOR = 2,
  INTEGRATION_TANGENT_OPERATOR = 3,
  INTEGRATION_CONSISTENT_TANGENT_OPERATOR = 4
};  // end of enum IntegrationType

The MaterialDataManagerInitializer and MaterialStateManagerInitializer data structures

The MaterialDataManagerInitializer data structure is in charge of holding information on how a material data manager shall be initialized. It may contain pointers to externally allocated data, that won’t be handled by the final data manager. If a pointer is not initialized, the material data manager will allocate and handle memory internally.

The MaterialStateManagerInitializer data structure is in charge of holding information on how a material state manager shall be initialized. It may contain pointers to externally allocated data, that won’t be handled by the final state manager. If a pointer is not initialized, the material state manager will allocate and handle memory internally.

Julia bindings

h = mgis.behaviour.Axisymmetrical
b = mgis.behaviour.load("src/libBehaviour.so","Norton2",h)

# meta data
@test mgis.behaviour.get_source(b)=="Norton2.mfront"
@test mgis.behaviour.get_hypothesis(b)==mgis.behaviour.Axisymmetrical
@test mgis.behaviour.get_symmetry(b)==mgis.behaviour.Isotropic
@test mgis.behaviour.get_kinematic(b)==mgis.behaviour.SmallStrainKinematic
@test mgis.behaviour.get_kinematic(b)==mgis.behaviour.SmallStrainKinematic
@test mgis.behaviour.get_behaviour_type(b)== 
    mgis.behaviour.StandardStrainBasedBehaviour

References

References

Bleyer, Jérémy, and Thomas Helfer. 2019a. “Elasto-Plastic Analysis Implemented Using the MFront Code Generator. Numerical Tours of Continuum Mechanics Using FEniCS.” 2019. https://comet-fenics.readthedocs.io/en/latest/demo/plasticity_mfront/plasticity_mfront.py.html.
———. 2019b. FEniCS and MFront for Complex Non Linear Solid Mechanics Simulation.” https://doi.org/10.13140/RG.2.2.35501.54247.
Frondelius, Tero, Thomas Helfer, Ivan Yashchuk, Joona Vaara, and Anssi Laukkanen. 2019. “MFrontInterface.jl: MFront Material Models in JuliaFEM.” In Proceedings of the 32nd Nordic Seminar on Computational Mechanics, edited by H. Koivurova and A. H. Niemi.