mgis.fenicsVariable::VECTOR and
Variable::STENSORThe integral values of Variable::VECTOR and
Variable::STENSOR have changed to match TFEL
conventions.
C++The following functions were removed:
getUniformMaterialPropertygetNonUniformMaterialPropertygetUniformExternalStateVariablegetNonUniformExternalStateVariableC bindingsMGIS_BV_VECTOR and
MGIS_BV_STENSORThe integral values of MGIS_BV_VECTOR and
MGIS_BV_STENSOR have changed to match TFEL
conventions.
The following functions were removed:
mgis_bv_material_state_manager_get_uniform_material_propertymgis_bv_material_state_manager_get_non_uniform_material_propertymgis_bv_material_state_manager_get_uniform_external_state_variablemgis_bv_material_state_manager_get_non_uniform_external_state_variablefortran bindingsmgis_behaviour moduleVECTOR and STENSORThe integral values of VECTOR and STENSOR
have changed to match TFEL conventions.
The following functions were removed from the
mgis_behaviour module:
material_state_manager_get_uniform_material_propertymaterial_state_manager_get_non_uniform_material_propertymaterial_state_manager_get_uniform_external_state_variablematerial_state_manager_get_non_uniform_external_state_variableIn previous versions, only four types of variables were supported
(scalars, vectors, symmetric tensors and unsymmetric tensors). The size
of those variables is a function on the modelling hypothesis. The type
of the variables was given by the Variable::Type
enumeration which could hold the values SCALAR,
VECTOR, STENSOR, and TENSOR.
The Variable::Type enumeration may now hold the
following values: SCALAR, VECTOR,
VECTOR_1D, VECTOR_2D, VECTOR_3D,
STENSOR, STENSOR_1D, STENSOR_2D,
STENSOR_3D, TENSOR, TENSOR_1D,
TENSOR_2D, TENSOR_3D,
HIGHER_ORDER_TENSOR and ARRAY.
The Variable class exposes an integer named
type_identifier describing more precisely the type of the
variable. The meaning of this identifier is fully described in this
page.
The getVariableTypeSymbolicRepresentation returns a
symbolic representation of a object using a C++-like
representation from a type identifier, as follows:
$ python3
>>> import mgis.behaviour
>>> print(mgis.behaviour.getVariableTypeSymbolicRepresentation(780))
derivative_type<stensor<N, real>, tensor<N, real>>Since version 4.1, MFront behaviours can declare
initialize functions which are meant to initialize the state of the
material.
The available initialize functions are described by the
initialize_functions member of the Behaviour
class which associates the name of the initialize function and a small
data structure containing:
The getInitializeFunctionVariablesArraySize function
returns the size of an array able to contain the inputs an initialize
function for an integration point.
The allocateInitializeFunctionVariables functions return
an array able to store the inputs of an initialize function for a given
integration point or a set of integrations points.
The executeInitializeFunction functions execute an
initialization function on a unique integration point or a set of
integration points.
Note about the result of the initialize function
The
BehaviourDataViewclass imposes that the initial state is immutable. Thus, initialize functions can thus only initialize the state of the material at the end of the time step. In most case, the call to the selected initialize functions shall be follow to a call to theupdatefunction.
Note about the material properties and the external state variables
The material properties and the external state variables must be set before calling the
executeInitializeFunctionfunctions. Only the values at the beginning of the time step are passed to the behaviour.
auto d = BehaviourData{b};
// initialize the material properties and the external state variables
...
// calling an initialize function which requires an input
auto inputs = allocateInitializeFunctionVariables(b, "StressFromInitialPressure");
inputs[0] = pr;
auto v = make_view(d);
executeInitializeFunction(v, b, "StressFromInitialPressure", inputs);Since version 4.1, MFront behaviours can declare
postprocessings which are meant to process the state of the material
after the behaviour integration.
The available postprocessings are described by the
postprocessings member of the Behaviour class
which associates the name of the postprocessing and a small data
structure containing:
The getPostProcessingVariablesArraySize function returns
the size of an array able to contain the outputs an postprocessing for
an integration point.
The allocatePostProcessingVariables functions return an
array able to store the outputs of a postprocessing for a given
integration point or a set of integrations points.
The executePostProcessing functions execute a
postprocessing on a unique integration point or a set of integration
points.
auto m = MaterialDataManager{b, 2u};
// initialize the state and perform the behaviour integration
...
// execute the post-processing
auto outputs = allocatePostProcessingVariables(m, "PrincipalStrain");
executePostProcessing(outputs, m, "PrincipalStrain");The extractInternalStateVariable function can now be
used to extract the value of an internal state variable in a
pre-allocated buffer.
auto m = MaterialDataManager{b, 2u};
...
auto pr = std::vector<real>(2u);
extractInternalStateVariable(pr, m.s1, "HydrostaticPressure");This feature is described in Section 2.4.
For more details, see https://github.com/thelfer/MFrontGenericInterfaceSupport/issues/95.
This feature is described in depth in Section 2.1.
For more details, see https://github.com/thelfer/MFrontGenericInterfaceSupport/issues/83.
This feature is described in depth in Section 2.3.
For more details, see https://github.com/thelfer/MFrontGenericInterfaceSupport/issues/82.
For more details, see https://github.com/thelfer/MFrontGenericInterfaceSupport/issues/78.
For more details, see https://github.com/thelfer/MFrontGenericInterfaceSupport/issues/74.
mgis.fenicsThis feature is described in depth in Section 2.2.
For more details, see https://github.com/thelfer/MFrontGenericInterfaceSupport/issues/50.