This version is compatible with behaviours generated by Version 3.4.1 of the TFEL/MFront project using the generic interface. More precisely, one expects that the behaviour must conform to the generic behaviour API Version 1 (See Section 2.5).

1 Known incompatibilites

Reflecting the changes made to the data structures used by the generic behaviour in Version 3.4.1 of the TFEL/MFront project, the API and ABI of MGIS is changed in this version.

Most changes are hidden to the user in the MaterialDataManager and BehaviourData classes. However, at low level, two main changes are worth noting:

2 New features

2.1 Computation of the speed of sound

The speed of sound can now be computed by the behaviour. The computation of this value can be requested using the BehaviourIntegrationOptions class (See Section 2.4.2).

If requested during the behaviour integration, the speed of sound can be retrieved using:

2.2 New member in the MaterialDataManagerInitializer class

The speed_of_sound data member can point ot to an externally allocated memory which will be used to store the speed of sound. If empty, the material data manager will initialize the required memory internally if required.

2.3 New methods of the MaterialDataManager class

The following methods has been added to the MaterialDataManager class:

2.4 Enhancements to the behaviour integration

2.4.1 Type of behaviour integration to be performed when using the BehaviourDataView directly

If K[0] is greater than 50, the speed of sound must be computed.

Let Ke be equal to:

If Ke is negative, only the prediction operator is computed and no behaviour integration is performed.

Ke has the following meaning:

2.4.2 The BehaviourIntegrationOptions class

New overloads of the integrate functions (See Section 2.4.4) use a new data structure called BehaviourIntegrationOptions to specify the kind of integration to be used, rather than specifying an enumeration of the IntegrationType type.

The BehaviourIntegrationOptions currently has two data members:

2.4.3 The BehaviourIntegrationResult and MultiThreadedBehaviourIntegrationResult classes

The new overloads of the integrate functions (See Section 2.4.4) may return an object of the type BehaviourIntegrationResult or and of the type MultiThreadedBehaviourIntegrationResult.

The BehaviourIntegrationResult contains the result of the integration on a single thread and contains the following data members:

The MultiThreadedBehaviourIntegrationResult contains the result of the integration on multiple threads and contains the following data members:

2.4.4 New overloads of the integrate functions

The following overloads of the integrate functions are now available:

/*!
 * \brief integrate the behaviour for a range of integration points.
 * \return the result of the behaviour integration.
 * \param[in,out] m: material data manager
 * \param[in] c: description of the operation to be performed
 * \param[in] dt: time step
 * \param[in] b: first index of the range
 * \param[in] e: last index of the range
 *
 * \note if required, the memory associated with the tangent operator blocks
 * is automatically allocated.
 */
BehaviourIntegrationResult
integrate(MaterialDataManager&,
          const BehaviourIntegrationOptions&,
          const real,
          const size_type,
          const size_type);
/*!
 * \brief integrate the behaviour over all integration points using a thread
 * pool to parallelize the integration.
 * \return the result of the behaviour integration.
 * \param[in,out] p: thread pool
 * \param[in,out] m: material data manager
 * \param[in] c: description of the operation to be performed
 * \param[in] dt: time step
 *
 * \note if required, the memory associated with the tangent operator blocks
 * is automatically allocated.
 */
MultiThreadedBehaviourIntegrationResult
integrate(mgis::ThreadPool&,
          MaterialDataManager&,
          const BehaviourIntegrationOptions&,
          const real);

2.5 API versioning

Version 3.4.1 of TFEL changed the API and ABI of the generic interface. This change may lead to conflicts with the API used by MGIS, notably errors of segmentation.

The API introduced in Version 3.4.1 of TFEL is said to match Version 1 of the generic behaviour interface. By convention, previous versions are associated with Version 0.

The behaviours generated by the generic interface now exports their API version. This piece of information can be retrieved by the getAPIVersion of the LibrariesManager class.

The load function uses this feature to check if the API of the behaviour conforms with the one expected by MGIS.

2.6 Enhancements to the C bindings

The mgis_bv_material_data_manager_initializer_bind_speed_of_sound has been added. It allows to associate a memory area to the computation of the speed of the sound in the mgis_bv_MaterialDataManagerInitializer data structure.

New functions mirroring the new methods introduced in Section 2.3 has been added:

2.7 Enhancements to the mgis_behaviour module

The material_data_manager_initializer_bind_speed_of_sound has been added. It allows to associate a memory area to the computation of the speed of the sound in the mgis_bv_MaterialDataManagerInitializer data structure. ### New functions related to theMaterialDataManager` data structure

New functions mirroring the new methods introduced in Section 2.3 has been added:

2.8 Enhancements to the python bindings

2.8.1 New methods in the MaterialDataManager class

The methods described in Section 2.3 has been wrapped to python.

2.8.2 Enhancements to the behaviour integration

The following classes and functions are now available in python:

2.8.3 Enhancements to the mgis.fenics module

2.9 Enhancements to the Julia bindings

Support for recent version of CxxWrap has been added.

3 Issues solved

3.1 Issue #66: mgis.fenics: Missing update of external state variables when seen as UFL expression

Declaring external state variables as UFL expressions were not properly updated between time steps.

3.2 Issue #31: Sound Velocity management

The speed of sound can now be computed. See section 2.1.