Writing portable behaviour implementation with MFront

Thomas Helfer

2014

Current interfaces to mechanical behaviours

Strains

Solver Convention
TFEL \(\left(\epsilon^{\mathrm{to}}_{xx},\epsilon^{\mathrm{to}}_{yy},\epsilon^{\mathrm{to}}_{zz},\sqrt{2}\,\epsilon^{\mathrm{to}}_{xy},\sqrt{2}\,\epsilon^{\mathrm{to}}_{xy},\sqrt{2}\,\epsilon^{\mathrm{to}}_{yz}\right)\)
Cast3M \(\left(\epsilon^{\mathrm{to}}_{xx},\epsilon^{\mathrm{to}}_{yy},\epsilon^{\mathrm{to}}_{zz},2\,\epsilon^{\mathrm{to}}_{xy},2\,\epsilon^{\mathrm{to}}_{xy},2\,\epsilon^{\mathrm{to}}_{yz}\right)\)
Code-Aster \(\left(\epsilon^{\mathrm{to}}_{xx},\epsilon^{\mathrm{to}}_{yy},\epsilon^{\mathrm{to}}_{zz},\sqrt{2}\,\epsilon^{\mathrm{to}}_{xy},\sqrt{2}\,\epsilon^{\mathrm{to}}_{xy},\sqrt{2}\,\epsilon^{\mathrm{to}}_{yz}\right)\)
Zebulon \(\left(\epsilon^{\mathrm{to}}_{xx},\epsilon^{\mathrm{to}}_{yy},\epsilon^{\mathrm{to}}_{zz},\sqrt{2}\,\epsilon^{\mathrm{to}}_{xy},\sqrt{2}\,\epsilon^{\mathrm{to}}_{yz},\sqrt{2}\,\epsilon^{\mathrm{to}}_{xz}\right)\)

1D case

Solver Convention
Cast3M \(\left(\epsilon^{\mathrm{to}}_{rr},\epsilon^{\mathrm{to}}_{zz},\epsilon^{\mathrm{to}}_{\theta}\right)\)
Code-Aster \(\left(\epsilon^{\mathrm{to}}_{rr},\epsilon^{\mathrm{to}}_{zz},\epsilon^{\mathrm{to}}_{\theta}\right)\)
Cyrano3 \(\left(\epsilon^{\mathrm{to}}_{rr},\epsilon^{\mathrm{to}}_{\theta},\epsilon^{\mathrm{to}}_{zz}\right)\)

Stresses

Solver Convention
TFEL \(\left(\sigma_{xx},\sigma_{yy},\sigma_{zz},\sqrt{2}\,\sigma_{xy},\sqrt{2}\,\sigma_{xy},\sqrt{2}\,\sigma_{yz}\right)\)
Cast3M \(\left(\sigma_{xx},\sigma_{yy},\sigma_{zz},\sigma_{xy},\sigma_{xy},\sigma_{yz}\right)\)
Code-Aster \(\left(\sigma_{xx},\sigma_{yy},\sigma_{zz},\sqrt{2}\,\sigma_{xy},\sqrt{2}\,\sigma_{xy},\sqrt{2}\,\sigma_{yz}\right)\)
Zebulon \(\left(\sigma_{xx},\sigma_{yy},\sigma_{zz},\sqrt{2}\,\sigma_{xy},\sqrt{2}\,\sigma_{yz},\sqrt{2}\,\sigma_{xz}\right)\)
Solver Convention
Cast3M \(\left(\sigma_{rr},\sigma_{zz},\sigma_{\theta}\right)\)
Code-Aster \(\left(\sigma_{rr},\sigma_{zz},\sigma_{\theta}\right)\)
Cyrano3 \(\left(\sigma_{rr},\sigma_{\theta},\sigma_{zz}\right)\)

Convertions

  • Convertions are handled by the interface
  • Internal state variables are stored using TFEL conventions
    • In the material frame (for orthotropic behaviours)
    • Except for ZeBuLoN

Orthotropy

  • behaviour and orthotropic axes definitions must be consistent
  • no general purpose solver allow uniform definition of the orthotropic axes for all modelling hypotheses
    • example of pipes

Supported modelling hypotheses

Solver Convention
Cast3M Axisymmetrical generalised plane strain, plane strain, generalised plane strain, plane stress, axisymmetrical, tridimensional
Code-Aster Plane strain, plane stress (1), axisymmetrical, tridimensional
Zebulon \(1D\), \(2D\), \(3D\) (2)
Cyrano Axisymmetrical generalised plane strain, axisymmetrical generalised plane stress (3)
  1. Can be supported by the behaviour or by the solver (De Borst)
  2. Modelling hypothesis is not accessible within the behaviour. Plane stress is supported by the finite element (additional ddl)
  3. The default.

Plane stress

  • Support for plane stress and axisymmetrical generalised plane stress shall be explicitely provided
    • for performance reasons
  • See the MFront documentation

Prediction operator

|:———:|:——-:| |Cast3M | No (1) | |Code-Aster | Elastic, secant, tangent | |Zebulon | No | |Cyrano | No |

  1. Expected in PLEIADES version (2015 ?)

Consistent tangent operator

|:———:|:——-:| |Cast3M | No (1) | |Code-Aster | Elastic, secant, tangent, consistent tangent operator | |Zebulon | Consistent tangent operator (2) | |Cyrano | Consistent tangent operator |

  1. Expected in PLEIADES version (2015 ?)
  2. By default.

Finite strains

  • for standard laws, use the Miehe logarithmic strains framework:
    • available in Cast3M (through MFront), Code-Aster, ZeBuLoN
    • can easily inserted in Cyrano (paper under review)
  • avoid using Cast3M’s PASAPAS GRANDS_DEPLACEMENTS option

Consistent tangent operator in finite strain

|:———:|:——-:| |Cast3M | No | |Code-Aster | \({\displaystyle \frac{\displaystyle \partial \underline{\tau}}{\displaystyle \partial \Delta\, \underset{\tilde{}}{\mathbf{F}}}}\) (1) | |Zebulon | \(C^{T}\) (2) |

MFront generates convertion between consistent tangent operators : use the most natural one for your formalism

  1. \(\Delta\, \underset{\tilde{}}{\mathbf{F}} = \left.\underset{\tilde{}}{\mathbf{F}}\right|_{t+\Delta\,t}.\left(\left.\underset{\tilde{}}{\mathbf{F}}\right|_{t}\right)^{-1}\)
  2. The only finite strain formulation supported by MFront is the Updated_Lagrangian.
// reveal.js plugins