Anomalie #380
ouvertproblème loi pli PLISSEMENT_MEMBRANE avec loi HYPO_ELAS3D
Description
Gérard,
voici le cas de plissement membrane dont je t'ai parlé.
Il s'agit d'un calcul sur un quadrangle. La cinématique est complètement imposée de manière à avoir :
- selon X : déformation log finale = 1
- selon Y : déformation log finale = -0.75
La compression selon Y active le critère pli. J'ai considéré deux cas de loi de comportement de type élastique : une loi ISOELAS et une loi HYPO_ELAS3D. Comme le critère s'active dès le début, on doit retrouver la loi de hooke selon X : SIG11 = E*epsilon
- pour la loi ISOELAS, j'ai mis E=200 et NU=0.4
dans ce cas, le calcul se déroule sans message d'erreur et on obtient bien la loi de hooke au sens de la déformation d'almansi :
- pour la loi HYPO_ELAS3D, j'ai mis les paramètres Kc,mu équivalents à E=200 NU=0.4.
dans ce cas, le calcul arrive au bout, avec une contrainte SIG22 égale à 0. Le comportement selon X est grosso modo cohérent avec la loi de hooke mais c'est largement moins net qu'avec la loi ISOELAS :
Dans l'archive .tar, j'ai joint le fichier test.log de ce calcul. J'ai de nombreux messages d'erreur du type :
LoiContraintesPlanesDouble::Calcul_et_Limitation2_h_b(.. **erreur: la deformation eps'_I 0.5289) est superieur a 0.5, on ne peut pas s'en servir pour mettre a jour la variation de volume
Le test joint contient le fichier gnu permettant de tracer ce graphique. Le .info contient les deux lois de comportement.
Pour la loi plissement, ces deux lois utilisent la version 2 :
choix_methode_cal_plis_memb_ 2
et un recalcul de la direction de pli :
recalcul_dir_plis_ f_plis_dir
avec f_plis_dir constant égal à 1
Fichiers
Mis à jour par Gérard Rio il y a environ 2 mois
- Statut changé de Nouveau à En cours
suite à notre conversation d'hier, qq remarques sur les algos de Newton utilisés en CP et CP2, en relation avec le pilotage du critère plis.
- Dans une première étape, systématiquement tout l'incrément de charge est appliqué.
- Puis s'il y a divergence, on sub-divise l'incrément.
Après réflexion, j'ai l'impression que c'est correct de garder cette solution comme solution par défaut. Car le pas de chargement est imposé par l'algo global et si tout ce passe bien, il n'y a pas de raison de subdiviser dès le début.
Ceci étant, je vais quand même introduire la possibilité de considérer un pas maxi différent de 100% de l'incrément par défaut. ça peut-être intéressant par exemple si on a une divergence et que l'on fait un restart en voulant examiner spécifiquement le comportement local sans changer l'incrément global...
à suivre ...
Mis à jour par Gérard Rio il y a environ 2 mois
- % réalisé changé de 0 à 10
au niveau du calcul de la variation de volume je vais intégrer explicitement la prise en compte d'une déformation logarithmique cumulée qui sera explicitement attribuée aux lois hypo élastique ce qui permettra d'être affranchi du passage par le test relatif aux def Almansi
Cela a des répercussions à différents endroits donc il faut que je prenne des précautions mais j'ai l'impression que c'est la bonne solution et cela ira dans le sens de ce que je prévois de faire en cours d'année relativement à la prise en compte des mesures de type log.
bon... c'est démarré ... à suivre
Mis à jour par Julien Troufflard il y a environ 2 mois
vu. Merci. Je vais continuer de mon côté en mettant en place un test sur une loi hypo orthotrope que je mettrais ici dans ce ticket.
Mis à jour par Gérard Rio il y a environ 2 mois
bon...
et bien c'est loin d'être trivial.
- la prise en compte direct du loi type log pose des pb théoriques ... intéressants, mais dont je ne vois pas de solution à court terme.
Je suis revenu sur le calcul actuellement implanté et en jouant sur les paramètres de réglage j'obtiens la solution voulue sur une plage de déformation plus grande (mais pas sur la totalité!).
Je pense que la différence de comportement dans les résultats avec la méthode 1 et la méthode 2 tiennent beaucoup au paramétrage de la méthode de Newton. Dans la méthode 1, l'inconnue du Newton est directement h/h0 alors que dans la méthode 2 les trois inconnues sont les def d'Almansi eps_22, eps_12 et eps_33.
Dans la méthode 1 il n'y a pas à s'inquiéter de la valeur prise par eps_22 car elle est déduite de h/h0 et donc en traction elle est naturellement bornée par 0.5
Dans la méthode 2, l'algo de Newton via les valeurs obtenues pour le résidu et l'opérateur tangent, défini l'incrément des inconnues et systématiquement à partir d'un chargement progressif, on obtient des déformations d'Almansi non physiques. En jouant sur les paramètres, on retarde l'apparition des pb, mais ils finissent par apparaître si on accroit le chargement.
Alors j'ai réfléchi à piloter avec h/h0 et b/b0, mais il manque une info qui concerne l'anisotropie responsable d'eps_12 et je ne vois pas comment la calculer et surtout d'en déduire un opérateur tangent !!! bref pour l'instant je ne vois pas comment aboutir avec ce jeu de variable. La solution serait d'utiliser une def sans limitation du type log, mais cela pose des pb au niveau du critère plis. Je pense que ce sera possible de résoudre cette difficulté, mais ce n'est pas immédiat.
Une solution serait peut-être d'utiliser un autre algo que celui de Newton qui est certe très performant, mais qui est difficile à piloter près des contraintes (au sens de l'optimisation sous contrainte). Peut-être qu'alors un BFGS serait intéressant ...
Je vais y réfléchir.
A court terme, je lève le pied sur ce problème pour finaliser la partie //
Mis à jour par Julien Troufflard il y a environ un mois
- Fichier ticket_ortho_hypo.tar ticket_ortho_hypo.tar ajouté
- Fichier MAT_orthotrope_almansi.png MAT_orthotrope_almansi.png ajouté
- Fichier MAT_orthotrope_hypoelas.png MAT_orthotrope_hypoelas.png ajouté
ok. Et quels sont les changements de paramètres que tu as fait ?
pour aller plus loin, j'ai mis en pièce jointe un exemple de loi orthotrope E=200, NU=0.8 dans le plan de la membrane et NU=0.19 dans l'épaisseur. Dans le .info, il y a 3 lois :
- MAT_sans_pli : loi orthotrope hypoélastique sans critère pli => pas de souci avec cette loi
- MAT_avec_pli : idem avec pli => nombreux messages d'erreur de dépassement 0.5
(j'ai mis le .log de ce calcul dans l'archive pièce jointe)
- MAT_avec_pli_almansi : même paramètres et avec pli mais Almansi => tourne correctement avec un petit passage compliqué avec message erreur.
Graphiquement, ça donne ça (toujours dans un contexte où le critère pli doit donner la loi de Hooke sigma = 200 * espilon)
- Loi hypoélastique MAT_avec_pli :
ça part bien au début, puis le même genre de non linéarité qu'en isotrope, le tout calé à peu près sur la loi de Hooke au sens log
- Loi almansi MAT_avec_pli_almansi :
c'était pour comparer/vérifier. Comme en isotrope, le comportement est très calé sur la loi de Hooke au sens Almansi, mais cette fois, un petit passage compliqué que l'on voit sur la courbe (décroche un peu puis se recale sur le résultat théorique)