====== Commit 2017-03-10 ====== ===== Améliorations matériaux orthotropes ===== ==== Lois de comportement ==== Dans le projet ICOGEN, j'ai rencontrés des problèmes de convergence récurrents avec les matériaux orthotropes élastoplastiques avec ou sans endommagement (EpIsoHOrthoHypoMaterial et DamageEpIsoHOrthoHypoMaterial). Les problèmes se manifestaient au niveau du Newton-Raphson de la correction plastique mais uniquement avec certaines courbes d'écrouissage, ce qui explique que je ne m'en étais pas rendu compte avant. J'ai modifié les matériaux orthotropes et les critères de plasticité de façon à rendre la procédure plus robuste. Le temps de calcul par pas de temps est sans doute un peu plus lent, mais dans les tests que j'ai faits, le temps de calcul total est plus court parce qu'on évite des divisions de pas de temps. ==== Axes d'orthotropie ==== Il est maintenant possible de définir les axes d'orthotropie du matériau au moyen d'une fonction des coordonnées spatiales. C'est par exemple nécessaire pour des structures composites courbées, comme dans le cas-test ''apps.composite.lam2DCompBase''. La syntaxe est un peu lourde, en particulier parce qu'il faut définir séparément les trois composantes de deux des axes d'orthotropie. axis1X = PythonMultiParameterFunction( [fonction x1(x,y,z)], 3 ) axis1Y = PythonMultiParameterFunction( [fonction y1(x,y,z)], 3 ) axis1Z = PythonMultiParameterFunction( [fonction z1(x,y,z)], 3 ) material.put( ORTHO_AX1_X, 1.0 ) material.put( ORTHO_AX1_Y, 1.0 ) material.put( ORTHO_AX1_Z, 1.0 ) material.depend( ORTHO_AX1_X, axis1X, FieldList( Field1D(TX,AB), Field1D(TY,AB), Field1D(TZ,AB) ) ) material.depend( ORTHO_AX1_Y, axis1Y, FieldList( Field1D(TX,AB), Field1D(TY,AB), Field1D(TZ,AB) ) ) material.depend( ORTHO_AX1_Z, axis1Z, FieldList( Field1D(TX,AB), Field1D(TY,AB), Field1D(TZ,AB) ) ) ==== Données matériaux ==== Des matériaux identifiés par l'UCL ou trouvés dans la littérature et utilisés dans le projet ICOGEN ont été ajoutés dans ''apps/toolbox/createCompositeMaterial.py'': * fibres carbone isotropes et orthotropes (AS4, IM7, G0926). * résine RTM6 identifiée par l'UCL à plusieurs températures. * pli composite unidirectionnel composé de fibres IM7 et de résine RTM6, identifié par homogénéisation. ==== Cas-tests ==== * ''apps/composite/lam2DCompBase.py'' : compression d'un méso-modèle de composite stratifié 2D à base de plis tissés en satin de 5. Les torons sont élastoplastiques et décrits avec le modèle de Cachan. On utilise la nouvelle fonctionnalité de définition des axes d'orthotropie à l'aide d'une fonction de la position. * ''apps/composite/yarnVER3DShear.py'' : VER 3D de toron en cisaillement, avec fibre élastique. ===== Divers ===== ==== Extraction de la force à la frontière de deux matériaux ==== Dans ''FieldApplicator'', j'ai ajouté une fonction de calcul de la force au point milieu des éléments de la frontière entre une interaction et un groupe. C'est utilisé dans le projet ICOGEN pour récupérer les forces exercées au cours du temps sur les torons et les utiliser comme conditions aux limites d'un micro-modèle. Il faudra voir au final si on garde cette fonctionnalité, qui est assez spécifique à des cas-tests bien précis et s'avère jusqu'à présent moins efficace qu'une autre approche. C'est en cours de test. ==== Gmsh ==== * Quand on lit un maillage 3D, les éléments de dimension inférieure à 3 sont maintenant ignorés. Ils étaient lus auparavant et ça posait problème. * Ajout d'une fonction ''setShiftPointFct'' dans ''GmshImport'' pour déformer le maillage à la lecture. La commande GmshImport.execute() doit être rmeplacée par GmshImport.execute2D() lorsqu'on traite des cas 2D sans quoi aucun élément n'est lu! ===== Fichiers ajoutés/supprimés ====== [a]: oo_meta/mtFEM/extractors/BoundaryForceValueExtractor.h [a]: oo_meta/mtFEM/extractors/BoundaryForceValueExtractor.cpp [a]: oo_meta/mtMaterials/volumes/AsymDamageEvpIsoHHypoMaterial.h [a]: oo_meta/mtMaterials/volumes/AsymDamageEvpIsoHHypoMaterial.cpp [a]: oo_meta/toolbox/periodicBound.py [a]: oo_meta/mtElements/FibreModel.h [a]: oo_meta/mtElements/FibreModel.cpp ===== Cas tests ajoutés/supprimés ====== [a]: oo_meta/apps/composite/lam2DCompBase.py [a]: oo_meta/apps/composite/lam5HSP3.msh [a]: oo_meta/apps/composite/yarnVER3D.msh [a]: oo_meta/apps/composite/yarnVER3DShear.py --- //[[geoffrey.deliege@ulg.ac.be|Geoffrey]] 2017/03/10//