Skip to content

Commit

Permalink
Merge pull request #482 from thelfer/481-tfel-math-introduce-the-st2t…
Browse files Browse the repository at this point in the history
…ost2concept

481 tfel math introduce the st2tost2concept
  • Loading branch information
thelfer authored Jan 25, 2024
2 parents 3c8d993 + af4c414 commit 9e379be
Show file tree
Hide file tree
Showing 37 changed files with 1,137 additions and 1,392 deletions.
36 changes: 36 additions & 0 deletions docs/web/bibliography.bib
Original file line number Diff line number Diff line change
@@ -1,3 +1,39 @@

@article{simo_novel_2024,
title = {A novel approach of using existing implementations of constitutive material models in any numerical codes interfacing with {MFront}},
volume = {2},
url = {https://www.lyellcollection.org/doi/10.1144/geoenergy2023-018},
doi = {10.1144/geoenergy2023-018},
abstract = {Implementing a constitutive model is a long, tedious and error-prone process, in particular for soils where a wide variety of phenomena must be taken into account. Moreover, the implementation must satisfy the interface requirements of the targeted solver. {MFront} is a popular code generator based on C++ mostly dedicated to mechanical behaviours which provides interfaces for many academic and industrial solvers. {MFront} implementations also export metadata which considerably simplifies the behaviour integration in the solver, in particular if the {MFrontGenericInterfaceSupport} ({MGIS}) is used by this solver. While {MFront} greatly reduces the amount of work required to implement a new behaviour, existing legacy implementations are highly valuable and their re-implementation should only be considered with caution considering the trade-offs. In our experience, such a re-implementation increases the maintainability and portability, and generally the numerical performances, but requires significant development effort. In this work, we developed an alternative approach, which consists in using {MFront} as a wrapper to existing legacy implementations. The {MFront} wrapper also manages the definition of appropriate metadata and handles the transfer of the data from solver to the legacy implementation on input and output. At this stage, the approach has been used to make available all constitutive models implemented in the {UMAT} format (written in Fortran) in the {OpenGeoSys} solver which is linked to {MFront} via {MGIS}. The results of a simulation using a {UMAT}-model in {OpenGeoSys} verify the approach. The usage of {MFront} as a wrapper is also shown to have an insignificant/negligible impact on the numerical performance. The proposed approach opens the door to the establishment of a new database of constitutive material models in {MFront} where legacy implementation of existing models can be made available in all solvers interfaced with {MFront}.
Thematic collection: This article is part of the Sustainable geological disposal and containment of radioactive waste collection available at: https://www.lyellcollection.org/topic/collections/radioactive},
pages = {geoenergy2023--018},
number = {1},
journaltitle = {Geoenergy},
author = {Simo, Eric and Helfer, Thomas and Mašín, David and Nagel, Thomas and Mánica, Miguel},
urldate = {2024-01-25},
date = {2024-12-31},
note = {Publisher: The Geological Society of London},
}


@article{singh_irradiation_2024,
title = {Irradiation dose and temperature effects on {BCC} material with dislocation based crystal plasticity},
volume = {198},
issn = {0306-4549},
url = {https://www.sciencedirect.com/science/article/pii/S0306454923006060},
doi = {10.1016/j.anucene.2023.110287},
abstract = {Numerical modelling of temperature and strain rate dependent plasticity of body centered cubic ({BCC}) materials is carried out based on dislocation based crystal plasticity model. In view of the strong influence of radiation effects on the response of {BCC} materials, the constitutive equations are further extended to incorporate the effect of irradiation-induced defects. Size of irradiation defects produced (mainly dislocation loops) is mostly controlled by the irradiation temperature, whereas the defect number density is governed by the irradiation dose. The present constitutive model is introduced to predict the irradiation conditions and temperature dependent plasticity for {BCC} materials. The model is used to simulate the different irradiation conditions in terms of dislocation loop size and number density. To have a quantitative effect of irradiation conditions on material toughness, the Defect Induced Apparent Temperature Shift (Δ{DIAT}) is estimated and compared with available experimental evidence, for validation.},
pages = {110287},
journaltitle = {Annals of Nuclear Energy},
shortjournal = {Annals of Nuclear Energy},
author = {Singh, Kulbir and Robertson, Christian and Bhaduri, Arun Kumar},
urldate = {2024-01-25},
date = {2024-04-01},
keywords = {Crystal plasticity, Dislocation mobility, Irradiation hardening, Screw dislocations},
file = {ScienceDirect Snapshot:/home/th202608/.zotero/zotero/vzpzva46.default/zotero/storage/KBSDHI6Z/S0306454923006060.html:text/html},
}


@article{senac_yield_2023,
title = {Yield surface for void growth and coalescence of porous anisotropic materials under axisymmetric loading},
volume = {179},
Expand Down
2 changes: 2 additions & 0 deletions docs/web/publications.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ eqnPrefixTemplate: "($$i$$)"

---
nocite: |
@simo_novel_2024
@singh_irradiation_2024
@fokam_implementation_2023
@bacquaert_standard_2023
@rapanakis_three-dimensional_2023
Expand Down
1 change: 0 additions & 1 deletion include/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -397,7 +397,6 @@ install_header(TFEL/Math/ST2toST2 ST2toST2ST2toST2ProductExpr.hxx)
install_header(TFEL/Math/ST2toST2 ConvertT2toST2ToST2toST2Expr.hxx)
install_header(TFEL/Math/ST2toST2 StensorSquareDerivative.hxx)
install_header(TFEL/Math/ST2toST2 BuildFromRotationMatrix.hxx)
install_header(TFEL/Math/ST2toST2 ChangeBasis.hxx)
install_header(TFEL/Math/ST2toST2 StensorSymmetricProductDerivative.hxx)
install_header(TFEL/Math/ST2toST2 ConvertToTangentModuli.hxx)
install_header(TFEL/Math/ST2toST2 ConvertSpatialModuliToKirchhoffJaumanRateModuli.hxx)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -149,12 +149,11 @@ namespace tfel::material {
return *this;
}
/*!
* assignement operator
* \brief assignement operator
*/
template <typename T>
template <tfel::math::ST2toST2Concept T>
std::enable_if_t<
tfel::math::implementsST2toST2Concept<T>() &&
tfel::math::getSpaceDimension<T>() == N &&
tfel::math::getSpaceDimension<T>() == N &&
std::is_same_v<tfel::math::numeric_type<T>, StressType>,
FiniteStrainBehaviourTangentOperator&>
operator=(const T& e) {
Expand Down
97 changes: 0 additions & 97 deletions include/TFEL/Math/ST2toST2/ChangeBasis.hxx

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -54,27 +54,24 @@ namespace tfel::math {
* \param[in] m: eigen vectors of the right Cauchy Green tensor
* \param[in] vp: eigen values of the right Cauchy Green tensor
*/
template <typename ST2toST2Type,
typename ST2toST2Type2,
typename ST2toST2Type3,
template <ST2toST2Concept ST2toST2Type,
ST2toST2Concept ST2toST2Type2,
ST2toST2Concept ST2toST2Type3,
StensorConcept StressStensorType>
static typename std::enable_if<
((implementsST2toST2Concept<ST2toST2Type>()) &&
(tfel::math::getSpaceDimension<ST2toST2Type>() == 1u) &&
(std::is_same<numeric_type<ST2toST2Type>, stress>::value) &&
(implementsST2toST2Concept<ST2toST2Type2>()) &&
(tfel::math::getSpaceDimension<ST2toST2Type2>() == 1u) &&
(isAssignableTo<numeric_type<ST2toST2Type2>, stress>()),
(implementsST2toST2Concept<ST2toST2Type3>()) &&
(tfel::math::getSpaceDimension<ST2toST2Type3>() == 1u) &&
(isAssignableTo<numeric_type<ST2toST2Type3>, real>())),
void>::type
exe(ST2toST2Type& Cse,
const ST2toST2Type2& C,
const ST2toST2Type2& P,
const StressStensorType& T,
const tmatrix<3u, 3u, real>&,
const tvector<3u, real>&) {
TFEL_HOST_DEVICE constexpr void exe(ST2toST2Type& Cse,
const ST2toST2Type2& C,
const ST2toST2Type2& P,
const StressStensorType& T,
const tmatrix<3u, 3u, real>&,
const tvector<3u,
real>&) noexcept //
requires(
(tfel::math::getSpaceDimension<ST2toST2Type>() == 1u) &&
(std::is_same<numeric_type<ST2toST2Type>, stress>::value) &&
(tfel::math::getSpaceDimension<ST2toST2Type2>() == 1u) &&
(isAssignableTo<numeric_type<ST2toST2Type2>, stress>()),
(tfel::math::getSpaceDimension<ST2toST2Type3>() == 1u) &&
(isAssignableTo<numeric_type<ST2toST2Type3>, real>())) {
const auto iC0 = P(0, 0);
const auto iC1 = P(1, 1);
const auto iC2 = P(2, 2);
Expand Down
Loading

0 comments on commit 9e379be

Please sign in to comment.