Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


commit:2019:04_26

Commit - LPx - 26 Avril 2019

SolarPerform : Lois Lagamine “Chab” + Divers

SolarPerform

Ce commit conclus les travaux d'intégration de la loi Chab (Chaboche) de Lagamine dans Metafor. C'est une loi constitutive Elasto-Visco-Plastique à écrouissage mixte, endommagement de Lemaitre, effets cinématiques cycliques …

Le calcul des contraintes se fait dans un référentiel local aux points de gauss (pas de rotation des backstresses).

La loi “Chab” dispose de 3 méthode d'introduction de la dépendance des paramètres de la loi à la température :

  • La première IARRH = 0 : consiste en l'interpolation des paramètres ad-hoc en fonction de la Température
  • La deuxière IARRH = 1 : est identique à la première à l'exception de la dépendance des paramètres visqueux qui est régie par une loi d'arrhénius
  • la troisième IARRH = 2 : toutes les dépendances thermiques sont régie par des lois d'Arrhénius (à simple ou double exposant)

Etant donné la différence fondamentale d'introduction des paramètres entre IARRH= 0/1 et IARRH=2, deux lois matériaux différentes ont été implémentées (la partie calcul est identique, seule l'interface, la lecture des paramètres et la génération des Propriétés matériaux est différente) :

Loi ChabLagMaterial :

  • Loi Chab avec IARRH = 0 ou 1
  • Dans Lagamine, la dépendance thermique est gérée dans la loi. Tous les paramètres doivent être définis à une série de °T.
  • Cette méthode n'est pas similaire à celle de Metafor. L'introduction de la dépendance thermique se fait alors en 2 temps :
    • une série (NTEMP ⇐ 10) de paramètre TEMP0 → TEMP9 définissent les températures de référence de Lagamine
    • Les paramètres dépendant de T sont introduits classiquement via définition d'une fonction d'évolution du paramètre à T
      • mat.put(E, 1.0)
      • mat.depend(E, fctE, Field1D(TO))
    • les tableaux de paramètres sont recalculés sur chaque NTEMP valeur (entre TEMP0 et TEMP9) avant passage à Lagamine
    • L'appel aux méthodes d'intégration de l'endommagement est géré en interne (on fonction du paramètre IDAM) et les fonctions de calcul des contraintes ad-hoc est
    • Définition d'un ChabLagGpState pour gérér les variables d'hérédité (et les sorties)
    • Sortie de variables interne matériaux : IF_FATIGUE_DAMAGE / IF_CREEP_DAMAGE / IF_THERMAL_STRAIN

Loi Arrh2ChabLagMaterial :

  • Loi d'introduction des paramètres de la loi Lagamine Chab avec IARRH = 2
  • la liste des paramètres étant différente, le mécanisme initID / allowProperty permet une première vérification des paramètres introduits
  • la construction du PRMat est elle aussi particularisée
  • Les routines d'appel à l'interface Lagamine (computeStress, GPState, …) est commun à ChabLagMaterial (et donc profite de la dérivation)

Lois TMChabLagMaterial et TmArrh2ChabLagMaterial :

  • Les lois TM… sont les dérivation ThermoMécaniques des lois précitées (la température est une variable recalculée aux points de Gauss & les flux de chaleurs sont calculés)
  • Définition d'un TmChabLagGpState pour gérér les variables d'hérédité

Tests :

  • le matériau testé et identifié Alloy 230 est défini avec 5 variantes de loi matériau dans le fichier

mtLagamine\tools\Alloy230.py. Les lois sont :

  • Iarrh0BaseIso24 : loi isotherme identifiée à 24°C tel que défini dans le test IARRH=0\1-Base\1_4.Lag
  • Iarrh0AnisoT : loi anisotherme Iarrh=0 tel que défini dans Tests\IARRH=0\2-Anisotherme\OP_TMF.lag
  • Iarrh1AnisoT : loi anisotherme Iarrh=1 tel que défini dans Tests\IARRH=1\1-Anisotherme
  • Iarrh2BaseIso24 : loi isotherme@24°C Iarrh=2 avec endo tel que défini dans Tests\IARRH=2\1-Base-ISO_24_0_8\24_0_8.lag
  • Iarrh2AnisoT : loi anisotherme Iarrh=2 tel que défini dans Tests\IARRH=2\2-Anisotherme-OPTMF_316-816\OP_TMF.lag
  • Iarrh2AnisoTDamage : loi anisotherme Iarrh=2 avec Endo tel que défini dans Tests\IARRH=2\3-Anisotherme+endo-OPTMF_316-816\OP_TMF.lag

Toutes lois :

LagamineAPI :

  • La Librairie LagamineAPI a été moultes fois recompilées depuis mon commit précédent au fur et à mesure des modifications et bugFixes de Lagamine Ainsi que du changement d'options de compilation pour assurer une compilation fiable (init des variables locales à 0, option “recursive” pour rendre les routines Lagamine ThreadSafe)
  • ⇒ Sous Windows : updatez vos libs avec la dernière version (ftp metafor : /ftp/metafor/bin/VS2015_X64/LibsVS2015_2019-04-25.zip)

ou recompilez les :

  • recup des sources : git clone de Lagamine & LagamineAPI (sur le gitlab de l'ULiege)
  • IMPORTANT : aller sur ma branche de Lagamine : cd Lagamine / git checkout L.Papeleux
  • générer lagamineAPI : “cd LagamineAPI” / “mkdir build” / “cd build” / “Cmake -C ../CMake/Win64-ifort2017.cmake ..” / visualStudio : compiler/installer (linux : make / make install)
  • ⇒ Sous Stations : rien à faire (les dernières libs /opt/lagamine-190424 sont déjà le défaut via le lien symbolique /opt/lagamine)

Divers :

fpe (windows) :

  • suppression des masques _EM_INVALID et _EM_DENORMAL des erreurs masquées
  • ⇒ -fpe signalera dorénavant les erreurs _EM_INVALID|_EM_DENORMAL|_EM_ZERODIVIDE|_EM_OVERFLOW|
  • =⇒ -fpe masque toujours les erreurs _EM_UNDERFLOW|_EM_INEXACT
  • dès que j'ai du temps, je relance les batteries complètes en -fpe pour voir ce qui reste limite…

FourthOrderTensor3D:

  • addLocalRefLagamineComplianceTensor : Ajout d'une matrice de raideur analytique matériau LAgamine calculé dans un référentien locale à la MRT (idem addLagamineComplianceTensor avec une gestion de la rotation en plus)

alloc PMat :

  • simplification de l'écriture de l'allocation des structures PRMat (data des matériaux) dans le Tbb::ThreadLocalStorage (TLS)

toolbox.utilities :

  • Ajout d'une fonction : asciiMatrix2InMemoryDataVector permettant de charger une colonne d'un fichier ascii comme InMemoryDataVector

toolbox.genTube :

  • Classe de génération de maillage de tube un peu plus flexible que celle existant précédemment (et au format orienté objet)

Fichiers ajoutés/supprimés :

Added : oo_meta/toolbox/genTube.py
Added : oo_nda/mtLagamine/src/Arrh2ChabLagMaterial.h/cpp
Added : oo_nda/mtLagamine/src/ChabLagGpState.h/cpp
Added : oo_nda/mtLagamine/src/ChabLagMaterial.h/cpp
Added : oo_nda/mtLagamine/src/TmArrh2ChabLagMaterial.h/cpp
Added : oo_nda/mtLagamine/src/TmChabLagGpState.h/cpp
Added : oo_nda/mtLagamine/src/TmChabLagMaterial.h/cpp
Deleted : 
Moved : 

Tests ajoutés/supprimés

Adding: oo_nda/mtLagamine/tests/Chabo
Adding: oo_nda/mtLagamine/tests/Chabo/complex
Adding: oo_nda/mtLagamine/tests/Chabo/complex/Iarrh0AnisoTEasChabLagamine.py
Adding: oo_nda/mtLagamine/tests/Chabo/complex/Iarrh0AnisoTSriPrChabLagamine.py
Adding: oo_nda/mtLagamine/tests/Chabo/complex/Iarrh0BaseIso24EasChabLagamine.py
Adding: oo_nda/mtLagamine/tests/Chabo/complex/Iarrh0BaseIso24SriPrChabLagamine.py
Adding: oo_nda/mtLagamine/tests/Chabo/complex/Iarrh1AnisoTEasChabLagamine.py
Adding: oo_nda/mtLagamine/tests/Chabo/complex/Iarrh1AnisoTSriPrChabLagamine.py
Adding: oo_nda/mtLagamine/tests/Chabo/complex/Iarrh2AnisoTDamageEasChabLagamine.py
Adding: oo_nda/mtLagamine/tests/Chabo/complex/Iarrh2AnisoTDamageSriPrChabLagamine.py
Adding: oo_nda/mtLagamine/tests/Chabo/complex/Iarrh2AnisoTEasChabLagamine.py
Adding: oo_nda/mtLagamine/tests/Chabo/complex/Iarrh2AnisoTSriPrChabLagamine.py
Adding: oo_nda/mtLagamine/tests/Chabo/complex/Iarrh2BaseIso24EasChabLagamine.py
Adding: oo_nda/mtLagamine/tests/Chabo/complex/Iarrh2BaseIso24SriPrChabLagamine.py
Adding: oo_nda/mtLagamine/tests/Chabo/Iarrh0AnisoTLagaMeta
oo_nda/mtLagamine/tests/Chabo/Iarrh0AnisoTLagaMeta/sriPrAna.py
oo_nda/mtLagamine/tests/Chabo/Iarrh0AnisoTLagaMeta/sriPrSNum.py
Adding: oo_nda/mtLagamine/tests/Chabo/Iarrh0Base024LagaMeta
oo_nda/mtLagamine/tests/Chabo/Iarrh0Base024LagaMeta/sriPrAna.py
oo_nda/mtLagamine/tests/Chabo/Iarrh0Base024LagaMeta/sriPrSNum.py
Adding: oo_nda/mtLagamine/tests/Chabo/Iarrh1AnisoTLagaMeta
oo_nda/mtLagamine/tests/Chabo/Iarrh1AnisoTLagaMeta/sriPrAna.py
oo_nda/mtLagamine/tests/Chabo/Iarrh1AnisoTLagaMeta/sriPrSNum.py
Adding: oo_nda/mtLagamine/tests/Chabo/Iarrh2AnisoTDamageLagaMeta
oo_nda/mtLagamine/tests/Chabo/Iarrh2AnisoTDamageLagaMeta/EasSAna.py
oo_nda/mtLagamine/tests/Chabo/Iarrh2AnisoTDamageLagaMeta/EasSNum.py
oo_nda/mtLagamine/tests/Chabo/Iarrh2AnisoTDamageLagaMeta/sriPrAna.py
Adding: oo_nda/mtLagamine/tests/Chabo/Iarrh2AnisoTLagaMeta
oo_nda/mtLagamine/tests/Chabo/Iarrh2AnisoTLagaMeta/sriPrAna.py
oo_nda/mtLagamine/tests/Chabo/Iarrh2AnisoTLagaMeta/sriPrSNum.py
Adding: oo_nda/mtLagamine/tests/Chabo/Iarrh2Base024LagaMeta
oo_nda/mtLagamine/tests/Chabo/Iarrh2Base024LagaMeta/sriPrAna.py
oo_nda/mtLagamine/tests/Chabo/Iarrh2Base024LagaMeta/sriPrSNum.py
Adding: oo_nda/mtLagamine/tests/parallel
oo_nda/mtLagamine/tests/parallel/tubeM.py
oo_nda/mtLagamine/tests/parallel/tubeTM.py
Adding: oo_nda/mtLagamine/tests/tube
oo_nda/mtLagamine/tests/tube/tubeM.py
oo_nda/mtLagamine/tests/tube/tubeTM.py
Deleted : 
Moved : 

Luc Papeleux 2019/04/25

commit/2019/04_26.txt · Last modified: 2019/04/26 09:38 by papeleux