Debian buster gcc 8.3 | Yes | Yes | 100% |
Debian buster llvm 11.0.1 | Yes | Yes | 100% |
Debian buster llvm 13.0 | Yes | Yes | 100% |
Debian buster llvm 14.0 | Yes | Yes | 100% |
Debian buster llvm 16.0 | Yes | Yes | 99% |
Debian buster Intel One API 2023.2.0 (icpc) | Yes | Yes | |
Debian buster Intel One API 2023.2.0 (icpx) | Yes | Yes | 99% |
Windows Intel One API 2023.2.0 (icpx) | Yes | | |
Windows MingGw 10.3 | Yes | | |
Ubuntu 21.04 gcc 10.3 | Yes | No | |

1 TFEL/Math improvements

1.1 Workspace of nonlinear solvers

The nonlinear solvers available in TFEL/Math now have an additional optional template argument which allows the user to control how the data members of those solvers are defined. Those data members generally include the residual (named fzeros), the jacobian matrix (named jacobian), etc…

The main rationale behing this development is to better handle how those data members are allocated. By default, those data members are allocated on the stack. This strategy is well suited on CPUs but can lead to excessive usage of registers on GPUs.

1.1.1 Example of usage

The following workspace defines the data members used by the TinyNewtonRaphsonSolverClass as views into a pre-allocated buffer:

template<unsigned short N, typename NumericType>
struct ExternallyAllocatedWorkspace{
  ExternallyAllocatedWorkspace(NumericType* const v)
      : fzeros(v), zeros(v + N), delta_zeros(v + 2 * N), jacobian(v + 3 * N){};
  //! \brief residual vector
  tfel::math::View<tfel::math::tvector<N, NumericType>> fzeros;
  //! \brief current estimate of the unknowns
  tfel::math::View<tfel::math::tvector<N, NumericType>> zeros;
  //! \brief current correction
  tfel::math::View<tfel::math::tvector<N, NumericType>> delta_zeros;
  //! \brief jacobian matrix
  tfel::math::View<tfel::math::tmatrix<N, N, NumericType>> jacobian;
};

Note

The use is responsible for properly allocating memory.

2 MFront improvements

2.1 The validator DSL option

The validator option allows to specify an project or an institute which assumes assurance quality aspects related to an MFront file.

The validator is defined as a DSL option for proper support in the MFrontGallery project.

Example of usage

The following example declares the validator on the command line:

$ mfront --obuild --interface=generic --dsl-option='validator:BGE Tech' Plasticity.mfront

The validator can also be defined in the the MFront file:

@DSL Implicit{
  validator: "BGE Tech"
}

2.2 Allow to specify a directory where to save the mtest files in case of integration failure

By default, mtest files are generated in the current working directory. This can be inconvenient, in particular for the users of the code_aster solver, as this solver creates a temporary directory to perform the calculations and erases this directory at the end of the execution.

The MTEST_FILE_GENERATOR_OUTPUT_DIRECTORY environment variable specifies where to put the generated mtest files.

3 Issues fixed

3.1 Issue 447: [mfront] Generation of MTest file shall be protected by a try/catch

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

3.2 Issue 446: [mfront] Allow to specify a validator

This feature is described in Section 2.1.

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

3.3 Issue 445: [mfront] Allow to specify a directory where to save the mtest files in case of integration failure

This feature is described in Section 2.2.

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

3.4 Issue 436: [tfel-math] Add support for external workspace in non linear solvers

This feature is described in depth in Section 1.1.

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

3.5 Issue 428: [mfront] Add the methods getMaterialKnowledgeIdentifier and getMaterial to the OverridableImplementation class

The getMaterialKnowledgeIdentifier methods returns the name given to the overridable implementation. Depending on the case, this can be the name of the material property, the name of the behaviour or the name of the model.

The getMaterial method returns the name of the material associated with the overridable implementation.

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

3.6 Issue 435: Issue with std::tie with nvcc

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

3.7 Issue 427: [mtest] Add support for integral tests based on the inner pressure or the axial force in the ptest scheme

When the evolution of the inner radius or the evolution of the outer radius is prescribed, integral tests on the inner pressure (InnerPressure`) can be set.

When the evolution of the axial growth is prescribed, integral tests on the axial force (AxialForce) can be set.

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

3.8 Issue 426: [mtest] Add support for tests based on analytical formulae in the ptest scheme mtest

The @Test keyword now supports the function option, the syntax of which is similar to the @Test keyword of the mtest scheme.

For example, the following line compares the value of the inner pressure to the values of an evolution named InnerPressureReferenceValues:

@Test<function> 'InnerPressure' 'InnerPressureReferenceValues' 1e2;

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

3.9 Issue 425: [mfront] query the mdnx path where an OverridableImplementation is written

The getDestinationPathInMadnexFile returns the mdnx path where an OverridableImplementation is written.

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

3.10 Issue 424: [madnex] Add an option to use a template file when generating a mdnx file

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

3.11 Issue 422: Document the product of two symmetric tensors and its derivatives

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

3.12 Issue 383: [python-bindings] Add the ability to retrieve the TFEL version

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

3.13 Issue 369: [TFEL/Utilities] support for raw string literals in CxxTokenizer

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

3.14 Issue 362: [mfront] Better code generation for point-wise models using the Cast3M interface

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

3.15 Issue 360: [mtest] Documentation of the @Profile keyword in PTest

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

3.16 Issue 356: [mfront] modification of the Gurson-Tvergaard-Needleman stress criterion

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

3.17 Issue 353: [mfront] Add support for unsymmetric tensorial variables when generating MTest files

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