TFEL, MFront and MTestMFront
MTest
amitex interface in MTestThe page describes the new functionalities of Version 3.4.3 of the
TFEL project.
This version was released on October 26, 2021 along with
TFEL-3.0.10, TFEL-3.1.10,
TFEL-3.2.7 and TFEL-3.3.3 and inherits from
the issues fixed in those releases.
MFrontPoint-wise models computes the evolution of a set of state variables as a function of the evolution of some external state variables. Examples of point-wise models of current usage are phase transitions, swelling models due to irradiations products, etc…
In previous versions, point-wise models were only handled by a
dedicated domain specific language called Model. This DSLs
has its own convention, which makes it inhomogeneous with the other
DSLs, and is acknowledgly much less powerful than DSLs associated with
behaviours.
Point-wise models mostly differs from behaviours du to the fact that
they don’t have no gradients and associated thermodynamic forces and do
not compute any consistent tangent operator. This difference was very
important in early versions of MFront which only supported
small and finite strain behaviours.
With the support of generic behaviours introduced in version 3.3 and extended in Version 3.4,this difference appears less important and point-wise models can be seen as a particular case of generic beahviours without gradient (and no conjugated thermodynamic force) and tangent operator blocks.
Version 3.4.3 introduces three new domains specific languages called
respectively DefaultModel, RungeKuttaModel and
ImplicitModel based on this idea. Those DSLs mostly differ
from their counterparts dedicated to generic behaviour by:
@Model
keyword and not @Behaviour.Let us consider the following ordinary differential equation:
\[ \dot{x}=-A\,x \qquad{(1)}\]
where \(A\) is a positive constant. The solution of this ordinary differential equation is an exponential decay of \(x\):
\[ x\left(t\right)=x_{0}\exp\left(-A\,x\right) \]
A numerical resolution of this equation using the
RungeKuttaModel can be implemented as follows:
@DSL RungeKuttaModelDSL;
@Model ode_rk54;
@Author Thomas Helfer;
@Date 21 / 09 / 2021;
@Epsilon 1.e-11;
@StateVariable real x;
@Parameter frequency A = 1.2;
@Derivative {
dx = -A * x;
}Three examples are available in the
mfront/tests/behaviours directory:
ode_rk54, which contains the previous
implementation.ode_implicit, which shows how to solve the Ordinary
Differential Equation (1) using an implicit scheme.ode_default, which shows how to solve the Ordinary
Differential Equation (1) using the Default DSL.MTestFollowing Section 1.1, MTest now supports point-wise
models, i.e. generic behaviours without gradient, thermodynamic force
nor tangent operator block.
The @Model can be used in place of
@Behaviour to declare the point-wise model. This only
difference with @Behaviour is that MTest
checks that no gradient, thermodynamic force nor tangent operator block
is declared.
The following example can be used to integrate the odinary differential equation presented in Section 1.1.1:
@Author Thomas Helfer;
@Date 21/09/2021;
@ModellingHypothesis "Tridimensional";
@Model<generic> "src/libBehaviour.so" "ode_rk54";
// internal state variable initialisations
@InternalStateVariable "x" 1;
// external state variable
@ExternalStateVariable "Temperature" 293.15;
@Times {0, 1 in 10};The Figure 1 compares the results obtained with the implementation of the model presented in Section 1.1.1 with all the DSLs dedicated to piont-wise models.
amitex interfaceBehaviours created using the amitex interface can now be
tested with MTest. See Issue #13.
amitex interface in MTestFor more details, see https://github.com/thelfer/tfel/issues/13.
The developments associated with this Issue are documented in Section 2.1.
For more details, see https://github.com/thelfer/tfel/issues/12.
The developments associated with this Issue are documented in Section 1.1.
For more details, see https://github.com/thelfer/tfel/issues/11.