The generic behaviour interface has been introduced to provide an
interface suitable for most needs. Whereas other interfaces target a
specific solver and thus are restricted by choices made by this specific
solver, this interface has been created for developers of homebrew
solvers who are able to modify their code to take full advantage of
MFront
behaviours.
This interface is tightly linked with the
MFrontGenericInterfaceSupport
project which is available on
github
: https://github.com/thelfer/MFrontGenericInterfaceSupport.
This project has a more liberal licence which allows it to be included
in both commercial and open-source solvers/library. This licensing
choice explains why this project is not part of the
TFEL
.
The generic behaviour interface supports:
MFront
’@StrainMeasure
keyword).The finite strain behaviours are a special case. For greater flexibility, the generic behaviour interface allows choosing at runtime the stress measure and the tangent operator to be returned.
The following stress measures are available:
The following tangent operators are available:
Orthotropic behaviours requires to:
By design, the generic
behaviour interface does not
automatically perform those rotations as part of the behaviour
integration but generates additional functions to do it. This choice
allows the calling solver to use their own internal routines to handle
the rotations between the global and material frames.
However, the generic
interface also generates helper
functions which can perform those rotations. Those functions are named
as follows:
<behaviour_function_name>_<hypothesis>_rotateGradients
<behaviour_function_name>_<hypothesis>_rotateThermodynamicForces
<behaviour_function_name>_<hypothesis>_rotateTangentOperatorBlocks
They all take three arguments:
In place rotations is explicitly allowed, i.e. the first and second arguments can be a pointer to the same location.
The three previous functions works for an integration point. Three other functions are also generated:
<behaviour_function_name>_<hypothesis>_rotateArrayOfGradients
<behaviour_function_name>_<hypothesis>_rotateArrayOfThermodynamicForces
<behaviour_function_name>_<hypothesis>_rotateArrayOfTangentOperatorBlocks
Those functions takes an additional arguments which is the number of integration points to be treated.
As devised in Section 1.3, finite strain behaviours are a special case, because the returned stress measure and the returned tangent operator can be chosen at runtime time. A specific rotation function is generated for each supported stress measure and each supported tangent operator.
Here is the list of the generated functions:
<behaviour_function_name>_<hypothesis>_rotateThermodynamicForces_CauchyStress
.
This function assumes that its first argument is the Cauchy stress in
the material frame.<behaviour_function_name>_<hypothesis>_rotateThermodynamicForces_PK1Stress
.
This function assumes that its first argument is the first
Piola-Kirchhoff stress in the material frame.<behaviour_function_name>_<hypothesis>_rotateThermodynamicForces_PK2Stress
.
This function assumes that its first argument is the second
Piola-Kirchhoff stress in the material frame.
<behaviour_function_name>_<hypothesis>_rotateTangentOperatorBlocks_dsig_dF
.
This function assumes that its first argument is the derivative of the
Cauchy stress with respect to the deformation gradient in the material
frame.<behaviour_function_name>_<hypothesis>_rotateTangentOperatorBlocks_dPK1_dF
.
This function assumes that its first argument is the derivative of the
first Piola-Kirchhoff stress with respect to the deformation gradient in
the material frame.<behaviour_function_name>_<hypothesis>_rotateTangentOperatorBlocks_PK2Stress
.
This function assumes that its first argument is the derivative of the
second Piola-Kirchhoff stress with respect to the Green-Lagrange strain
in the material frame.