Table of Contents
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