The page describes the new functionalities of Version 3.4.1 of the TFEL project.

1 Overview

This version notably adds:

2 Known incompatibilities

2.1 New reserved names

The following names are now reserved:

Those names can no longer be used to define MFront variables.

See Section 4.4 for details.

2.2 Change in the data structures used by the generic interface`

The data structures used by the generic interface, namely mfront_gb_State, mfront_gb_InitialState and mfront_gb_BehaviourData, has been changed to be able to compute the speed of sound. This change breaks the API and ABI of the behaviour generated by this interface. See also Section 4.4.1.

3 New features of the TFEL/Glossary library

Two new entries have been added in the glossary:

4 New features of MFront

4.1 Support for Cast3M 21

While the so-called umat interface of this solver is unchanged, two additional material properties are now required to solve mechanical problem where thermal exansion are taken into account:

Those material properties are automatically added by the castem21 interface in the list of the material properties required by the behaviour.

The castem interface, and its alias called umat for historical reasons, are left unchanged and shall be used for versions prior to Version 21.

4.2 The amitex interface

The amitex interface is mostly an alias for the castem interface, i.e. the interface for the Cast3M interface prior to Version 21 and also generates an input file template which is meant to be copy-pasted into the material.xml file of the user.

Here is an example of such a template:

<!--
    Simple template for use in AMITEX_FFTP.
    
    You may copy-paste those lines in your material.xml file
    and adjust:

- the material number I,
- the path to the library (currently UmatBehaviour),
- the coefficients and initial internal variables values
which are currently replaced by three dots.
-->

<Material numM="I" Lib="UmatBehaviour" Law="umatplasticity">
  <!-- material property YoungModulus -->
  <Coeff Index = "1" Type = "Constant" Value = "..." />
  <!-- material property PoissonRatio -->
  <Coeff Index = "2" Type = "Constant" Value = "..." />
  <!-- material property MassDensity -->
  <Coeff Index = "3" Type = "Constant" Value = "..." />
  <!-- material property ThermalExpansion -->
  <Coeff Index = "4" Type = "Constant" Value = "..." />
  <!-- material property H -->
  <Coeff Index = "5" Type = "Constant" Value = "..." />
  <!-- material property s0 -->
  <Coeff Index = "6" Type = "Constant" Value = "..." />
  <!-- internal state variable ElasticStrain -->
  <IntVar Index = "1" Type = "Constant" Value = "..." />
  <IntVar Index = "2" Type = "Constant" Value = "..." />
  <IntVar Index = "3" Type = "Constant" Value = "..." />
  <IntVar Index = "4" Type = "Constant" Value = "..." />
  <IntVar Index = "5" Type = "Constant" Value = "..." />
  <IntVar Index = "6" Type = "Constant" Value = "..." />
  <!-- internal state variable EquivalentPlasticStrain -->
  <IntVar Index = "7" Type = "Constant" Value = "..." />
</Material>

4.3 Save the strain measure and the dual stress

The strain measure and the dual stress can now be saved in auxiliary state variables using the following syntax:

@StrainMeasure{
  save_strain: true,
  save_stress: true
};

If requested, the strain measure will be saved in an auxiliary state variable internally called saved_strain_measure and whose glossary name is StrainMeasure.

If requested, the dual stress will be saved in an auxiliary state variable internally called saved_dual_stress and whose glossary name is DualStress.

4.4 Computation of the speed of sound

Explicit solvers often require the behaviour to compute an upper bound of the speed of sound in the material to compute a critical time step.

The new code @SpeedOfSound to perform this computation.

Inside this code block, the mass density in the initial configuration is available in a variable called rho_m0 (one may use the ρₘ₀ alias if UTF-8 encoding is used).

The code block must set the variable v_sound (one may use the vₛ alias if UTF-8 encoding is used)

4.4.1 API versioning of the generic interface

To avoid any conflict between versions of TFEL and client projects (mostly the MGIS project, we have introduce the notion of API versioning.

By conventions, previous versions are said to use Version 0 of the API of the generic interface. This new version thus introduces Version 1 of the API. TheAPIversion is now exported as a new symbol which can be retrieved by client projects. Those projects thus can check at runtime whichAPI` is used by the behaviours they may use.

In practice, users of the MGIS project shall upgrade their MGIS’ versions.

5 Issues fixed

5.1 Ticket #263: GenericBehaviourInterface: rotateArrayOfTangentOperatorBlocks is not correctly implemented

For more details, see: https://sourceforge.net/p/tfel/tickets/263/

5.2 Ticket #262: Missing headers in packages generated by automake

For more details, see: https://sourceforge.net/p/tfel/tickets/262/

5.3 Ticket #258: Missing ndarray.cxx source

For more details, see: https://sourceforge.net/p/tfel/tickets/258/

5.4 Ticket #240: Ability to export the thermal expansion coefficients as material properties with the ‘cyrano’ interface

When the thermal expansion is handled by a behaviour, the thermal expansion coefficients are now automatically exported as material properties when compiling the behaviour behaviour with the Cast3M and Cyrano interfaces.

The names of the functions associated with those thermal expansion coefficients can be retrieved by:

For more details, see: https://sourceforge.net/p/tfel/tickets/240/

5.5 Tickets #236: Save stress and/or strain measures as state variables

For more details, see: https://sourceforge.net/p/tfel/tickets/236/