===== 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 : --- //[[L.Papeleux@uliege.be|Luc Papeleux]] 2019/04/25 //