Version 1.1 of MFrontGenericInterfaceSupport
is
compatible with the Version 3.3 of TFEL/MFront
.
This version has been used in many projects:
Mefisto
. See it in action here.JuliaFEM
. See Frondelius et al. (2019) for details.Kratos Multiphysics
. See it in action here.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{};
.stress_measure = FiniteStrainBehaviourOptions::PK1;
oconst auto b =
(o, "src/libBehaviour.so", "SaintVenantKirchhoffElasticity",
load::TRIDIMENSIONAL); Hypothesis
Generalised behaviours in MFront
can be based on
multiple tangent operator blocks.
The print_markown
function allows printing using a
markdown format:
integrate
functionenum struct IntegrationType {
= -3,
PREDICTION_TANGENT_OPERATOR = -2,
PREDICTION_SECANT_OPERATOR = -1,
PREDICTION_ELASTIC_OPERATOR = 0,
INTEGRATION_NO_TANGENT_OPERATOR = 1,
INTEGRATION_ELASTIC_OPERATOR = 2,
INTEGRATION_SECANT_OPERATOR = 3,
INTEGRATION_TANGENT_OPERATOR = 4
INTEGRATION_CONSISTENT_TANGENT_OPERATOR }; // end of enum IntegrationType
MaterialDataManagerInitializer
and
MaterialStateManagerInitializer
data structuresThe 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= mgis.behaviour.Axisymmetrical
h = mgis.behaviour.load("src/libBehaviour.so","Norton2",h)
b
# 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