1 Known incompatibilities

When compiling with option TFEL_APPEND_VERSION set to ON or when defining the string variable TFEL_VERSION_FLAVOUR, the python modules are now modified to reflect those information. This old behaviour can be restored by setting the unversioned-python-module-names option to ON.

1.1 Internal API changes

IsotropicHardeningRule::computeElasticLimitAndDerivative now returns the derivative of the elastic limit (computed at the middle of the time step) with respect to the equivalent plastic strain at the middle of the time step rather than the derivative with respect to the increment of the equivalent plastic strain.

2 New features in the TFEL libraries

2.1 Environment

This version now supports a new environment variable to specify the TFEL installation directory that always supersedes the TFELHOME environment variable. The name of this variable depends on the version of the project, the fact that a development version has been compiled and the flavour (optionally specified with the cmake variable TFEL_VERSION_FLAVOUR). The name of this variable can be retrieved with the --tfel-home option of tfel-config described below.

2.2 tfel-config

2.2.1 --registry-key option

On Windows, the --registry-key option returns the registry key which is used to determine the TFEL’s installation path.

2.2.2 --tfel-home option

The --tfel-home option returns the environment variable in which the TFEL’s installation path shall be defined.

2.2.2.1 Example of usage

$ tfel-config-5.1.0-dev-release --tfel-home
TFELHOME_5_1_0_dev_release

2.2.3 --python-module-suffix option

This option return the suffix of the python module. Such suffix is not empty only the following conditions are met:

The option --python-module-suffix is only available if the python bindings is available.

2.2.4 --config

This option requests flags associated with the TFELConfig library.

2.2.5 --mfront-log-stream

This option requests flags associated with the MFrontLogStream library.

2.2.6 --mfront

This option requests flags associated with the TFELMFront library.

2.2.7 --mtest

This option requests flags associated with the TFELMTest library.

2.2.7.1 Example of usage

$ tfel-config-5.1.0-release --python-module-suffix
5_1_0_release

3 New TFEL/Material features

3.1 Homogenization

3.1.1 Ellipsoidal inclusion embedded in anisotropic matrix

When \(\tenseur C_0\) is anisotropic, the Eshelby tensor can be computed with computeAnisotropicEshelbyTensor in 3D and computePlainStrainAnisotropicEshelbyTensor in 2D. There are also computeAnisotropicHillTensor, computePlainStrainAnisotropicHillTensor, and also computeAnisotropicLocalisationTensor and computePlainStrainAnisotropicLocalisationTensor.

3.1.2 Homogenization bounds

Different homogenization bounds are implemented. The available functions are computeVoigtStiffness, computeReussStiffness, computeIsotropicHashinShtrikmanBounds.

3.2 Python bindings

Python bindings are now generated using the pybind11 library.

4 New features in MFront

This version introduces the following main features in MFront:

4.1 Warnings

Many warnings have been added to detect potential misuses of MFront or known bad practices.

4.1.1 Activating and desactivating warnings

Reporting warnings is activated by default and can be disabled by passing the command line argument --report-warnings=false to MFront.

Warnings are associated with keywords and code blocks. Warnings can be disabled by appending the safe option to them. For instance, in an implicit DSL, specifying a convergence threshold greater than \(10^{-10}\) is considered to loose in most cases and thus triggers a warning. This warning can be disabled as follows:

@Epsilon<safe> 1;

This safe option can be ignored by passing the --ignore-safe command line argument to MFront. This argument is useful when analysing an existing file (written by another person) to question implementation choices.

4.1.2 Warnings added to all DSLs

4.1.3 Warnings added to isotropic DSLs

A warning is reported if the implementation of the flow rule(s) contains:

4.1.4 Warnings added to implicit DSLs

4.1.5 Warnings added to interfaces

4.1.5.1 Warnings added to the Cast3M interface

4.1.5.2 Warnings added to the generic interface

4.2 Calling an external behaviour: the @BehaviourVariable keyword

@BehaviourVariable first_phase_plastic_behaviour {
  file: "Plasticity.mfront",
  variables_suffix: "1",
  external_names_prefix: "FirstPhase",
  store_gradients: true,
  store_thermodynamic_forces: true,
  shared_material_properties: {".+"},
  shared_external_state_variables: {".+"}
};

4.2.1 Behaviour variable factories

4.2.2 Extension of the @Model keyword

In previous versions, the @Model keyword allowed to call from a behaviour point-wise models using the historical Model DSL.

The @Model keyword now allows to use point-wise models implemented using the following DSLs: DefaultModel, RungeKuttaModel and ImplicitModel. In this case, a behaviour variable factory is automatically associated with the point-wise models which shares all its material properties and external state variables with the calling behaviour. Every persistent variables of the point-wise model are declared as auxiliary state variables. For each persistent variable of the point-wise model, a local variable meant to contain the increment of this variable over the time step is declared.

Point-wise models are called at the initialization stage of the behaviour. The auxiliary state variables associated with the point-wise models are updated at beginning of the updateAuxiliarySateVariables method before any user defined code (see the @UpdateAuxiliaryStateVariables keyword).

4.3 New command line arguments

The following command line arguments are now supported:

4.4 New features in isotropic DSLs

4.4.1 Predefined isotropic hardening rules

The @IsotropicHardeningRule and @IsotropicHardeningRules allow to use the isotropic hardening rules available in the StandardElastoViscoPlasticity brick.

4.4.1.1 Example of usage

@IsotropicHardeningRule "Voce" {flow_id : 0, R0 : 125e6, Rinf : 500e6, b : 20};
@IsotropicHardeningRules{
  flow_id : 0,
  isotropic_hardening : "Voce" {R0 : 125e6, Rinf : 500e6, b : 20},
  isotropic_hardening : "Linear" {R0 : 50e6}
};

4.4.1.2 Automatic declaration of the flow rule in the IsotropicPlasticMisesFlow DSL

If an isotropic hardening rule is defined in the IsotropicPlasticMisesFlow DSL, and if no flow rule is defined, the following flow rule is automatically defined:

@FlowRule {
  f = seq - R;
  df_dseq = 1;
  df_dp = -dR_dp;
}

4.4.1.3 Available isotropic hardening rules

The following flow rules are currently available: Data, Linear, Power, StrainRateSensitive, Swift, UserDefined, and Voce.

This list can be retrieved as follows:

$ mfront --list-isotropic-hardening-rules

5 New features in mfront-query

5.1 New command line arguments

The following command line arguments are now supported:

5.2 New keywords

5.2.1 @TFELLibraries

The @TFELLibraries keyword let the user specify TFEL libraries to link with. This keyword must be followed by an array of strings.

The following libraries are available: Config, Exception, Glossary, Tests, UnicodeSupport, Utilities, System, Math, MathCubicSpline, MathKriging, MathParser, NUMODIS, Material, MFront, MTest.

5.2.1.1 Example of usage

@TFELLibraries {"MathParser"};

6 Issues fixed

6.1 Issue 661: [mfront] Allow to use isotropic hardening rules in isotropic DSLs

For more details, see https://github.com/thelfer/tfel/issues/661

6.2 Issue 702: [mfront] Add a warning if an auxiliary state variable not computed by an external point-wise model is used in a @FlowRule block in isotropic DSLs

For more details, see https://github.com/thelfer/tfel/issues/702

 ## Issue #697: [cyrano] Add a warning when the maximum number of sub steppings is too high

For more details, see https://github.com/thelfer/tfel/issues/697

6.3 Issue #696: [calculix-interface] add support for the @GenerateMTestFileOnFailure keyword

For more details, see https://github.com/thelfer/tfel/issues/696

6.4 Issue #695: [aster-interface] add support for the @GenerateMTestFileOnFailure keyword

For more details, see https://github.com/thelfer/tfel/issues/695

6.5 Issue #694: [ansys-interface] add support for the @GenerateMTestFileOnFailure keyword

For more details, see https://github.com/thelfer/tfel/issues/694

6.6 Issue #692: [mfront] add warning when interface specific keywords are not restricted to the corresponding interface

For more details, see https://github.com/thelfer/tfel/issues/692

6.7 Issue #690: [castem] Add a warning when the maximum number of sub steppings is too high

For more details, see https://github.com/thelfer/tfel/issues/690

6.8 Issue #689: [implicit-dsl] Add warning when using auxiliary state variables (not computed by external point-wise models) in @ComputeStress and @ComputeFinalStress

For more details, see https://github.com/thelfer/tfel/issues/689

6.9 Issue 685: [tfel-config] Add support for TFELConfig, TFELMFront and TFELMTest

This feature is described in Section 2.2.

For more details, see https://github.com/thelfer/tfel/issues/685

For more details, see https://github.com/thelfer/tfel/issues/684

6.11 Issue 683: Using TFEL librairies in material properties

For more details, see https://github.com/thelfer/tfel/issues/683

6.12 Issue 677:[tfel-config] add a python-module-suffix option

For more details, see https://github.com/thelfer/tfel/issues/677

6.13 Issue 676: Always prefer the versioned TFELHOME environment variable

For more details, see https://github.com/thelfer/tfel/issues/676

6.14 Issue 674: [python-bindings] Add option to disable the modication of the names of python modules by the TFEL_APPEND_VERSION and TFEL_VERSION_FLAVOUR

For more details, see https://github.com/thelfer/tfel/issues/674

6.15 Issue 673: [tfel-config] Add the ability to define an environment variable associated with the TFEL’s version and flavour

For more details, see https://github.com/thelfer/tfel/issues/673

6.16 Issue 672: python bindings fix python modules names when TFEL_APPEND_VERSION or TFEL_VERSION_FLAVOUR is defined

For more details, see https://github.com/thelfer/tfel/issues/672

6.17 Issue 667: Reduce the size of files paths in sources to fit in Windows’s MAX_PATH limit

For more details, see https://github.com/thelfer/tfel/issues/667

6.18 Issue 666: [doc] Add CONTRIBUTING file, remove devel.md

For more details, see https://github.com/thelfer/tfel/issues/666

6.19 Issue 654: Add PowerShell environment script

For more details, see https://github.com/thelfer/tfel/issues/654

6.20 Issue 640: [mfront] Only point-wise models defined by Model DSL can be embedded in behaviours using the @Model keyword

For more details, see https://github.com/thelfer/tfel/issues/640

6.21 Issue 294: [python-bindings] Evaluate port to pybind

For more details, see https://github.com/thelfer/tfel/issues/293