Anomalie #208
pb signification de V dans potentiel ISOHYPERBULK_GENE
Description
Gérard,
le potentiel ISOHYPERBULK_GENE est sensé être défini en fonction de V = v/v0. Cette grandeur est sensé être égale à 1 en cisaillement simple sur un seul élément.
L'exemple pièce jointe est un cisaillement simple sur un élément membrane avec une loi déformation plane. Je constate 2 cas :
1) cas où j'utilise par exemple le potentiel ISOHYPERBULK3 (ou encore la partie V de Favier, c'est pareil). Dans ce cas, j'ai bien V=1 en cisaillement simple. Quoique tu mettes en potentiel le calcul tourne, même pour K=0. C'est normal, comme V=1, cette partie n'intervient pas.
2) cas où j'utilise ISOHYPERBULK_GENE. Et là je ne comprends pas. J'ai mis en place un potentiel comme étant une fonction 1D. Quelque soit la fonction 1D, je constate que V est égal à 0 au début du calcul (colonne 46 dans le fichier .maple de sortie).
Dans l'exemple que je t'ai joint, la fonction 1D est une fonction de x-1 où x prendra la valeur de V. Donc c'est sensé être égal à 0 à l'état initial. Et c'est bien ce que je constate (par exemple en traction uniaxiale, le calcul tourne correctement. Si je mets une fonction de x au lieu de x-1, ça ne marche plus (il y a une contrainte non nulle dès l'état initial).
Je vais essayer de résumer ce que je vois comme choses étranges en cisaillement :
- V est bien égal à 1 au départ, mais en sortie je reçois V=0 à l'état initial
- V évolue au cours du cisaillement simple (passe de 0 à 0.18)
- les contraintes tendent vers l'infini (NaN). Notamment : voir la contrainte de cisaillement (colonne 14)
Et j'ajouterais que :
Il y a forcément une confusion quelque part sur la signification de V. Mais pourtant ça tourne en traction uniaxiale.
Fichiers
Mis à jour par Julien Troufflard il y a environ 5 ans
précision :
attention dans mon message précédent. Je fais la confusion entre VOLUME_ELEMENT (colonne 46 du .maple) et la grandeur utilisée dans le potentiel V=v/v0.
Mais ça ne change rien à mes observations. Dans mon cas, v0=1 (c'est une plaque de 1x1 à épaisseur 1). Donc VOLUME_ELEMENT = V dans mon exemple.
Ce que je cherche à comprendre, c'est pourquoi la loi semble recevoir V=v/v0 tout en affichant VOLUME_ELEMENT=0 dans le .maple et tout en sortant des contraintes erronées en cisaillement simple mais pas en traction uniaxiale.
bonne chasse au bug...
Mis à jour par Gérard Rio il y a environ 5 ans
- Statut changé de Nouveau à En cours
Concernant l'utilisation du potentiel ISOHYPERBULK_GENE:
On introduit une relation quelconque, fonction de V = vol/vol_0, qui décrit le potentiel.
Le calcul des contraintes nécessite la connaissance de la valeur du potentiel mais également ses dérivées première et seconde. Dans l'exemple fourni, on utilise une fonction analytique simple. Dans ce cas, les dérivées première et seconde sont calculées à l'aide d'une formule de différence finies (cf. 67.1.20 Fonction analytique littérale). Or la fonction 1D donnée, ne permet pas de calculer f(V-delta_V) car on a une puissance :
f(x)= (1.08)*(150./6.)*(x-1)^1.73 - (155./6.)*(x-1)^2.
du coup, on obtient pour les dérivées un NaN, qui se répercute sur toute la suite.
Solutions possibles:
1) Utiliser une fonction qui admet des f(x-delta_x)
2) Utiliser le type de fonction: COURBE_EXPRESSION_LITTERALE_AVEC_DERIVEE_1D
avec lequel on va pouvoir préciser le calcul analytique des dérivées
Je vais en profiter pour mettre une remarque dans la doc à ce propos.
Peux-tu me dire si cela règle le pb ?
Mis à jour par Julien Troufflard il y a environ 5 ans
ah oui effectivement, la puissance 1.73 empeche d'avoir V-1 négatif.
J'ai refait une nouvelle version en utilisant des fonctions existantes de Herezh afin de profiter des dérivées (fonctions F1_PLUS_F2, F1_ROND_F2, COURBE_EXPO, etc...). Et j'ai fait en sorte que ce soit défini même pour V-1 négatif (en utilisant une valeur absolue de V-1 via fonction COURBE_EXPOAFF)
Tout ça pour dire que ça fonctionne. C'était bien ça le problème.
Dernier point qui me pose question (mais qui n'est pas bloquant) :
En ce qui concerne le VOLUME_ELEMENT : il est bien égal à 1 avec BULK_GENE en non à 0 comme dit précédemment. C'est moi, je me suis trompé de colonne (VOLUME_ELEMENT est en colonne 52 et non 46).
Par contre, j'ai vu qu'en fait c'est en contrainte plane qu'il y a quelque chose d'étrange. Le VOLUME_ELEMENT varie un peu dans le cas 3D contrainte plane en cisaillement simple (de même pour EPAISSEUR_MOY_FINALE). De quoi cela provient-il : approximation de la procédure contrainte plane ? loi Favier dont les invariants ne sont pas indépendant de la variation de volume ? Je pense qu'il faut chercher la source de ce problème dans la manière dont est calculée EPAISSEUR_MOY_FINALE. Il n'y a pas une petite erreur introduite par le fait d'utiliser des déformations d'Almansi pour actualiser l'épaisseur ?
Mis à jour par Julien Troufflard il y a environ 5 ans
- Fichier cisaillement_2Dvs3D.tar cisaillement_2Dvs3D.tar ajouté
épilogue sur l'histoire de variation d'épaisseur en cisaillement simple :
vu le long texte ci-dessous, je vais résumer ici directement ce que j'en ai conclus :
1) d'où vient la variation d'épaisseur en cisaillement => ça vient de toute loi en déf Almansi ou invariant d'Almansi et notamment cela n'a rien à voir avec la procédure 3D CP (d'ailleurs la doc théorique ne fait jamais apparaitre les déformations dans le calcul de l'épaisseur)
2) avec une loi ISOELAS, il y a une différence étrange de comportement en cisaillement dans la direction 3 entre le cas contrainte plane sur membrane et le cas 3D sur un cube. Dans le cas 2D, j'obtiens une diminution d'épaisseur. Dans le cas 3D, j'obtiens une augmentation. J'ai envie de dire que c'est plutôt le cas 3D qui donne un résultat étrange. Je parle bien de vraie 3D (sur un cube), pas de loi 3D CP.
Voici les remarques plus en détail :
1) en cisaillement simple, on obtient une variation de dimension dans le sens de l'épaisseur seulement pour des lois qui dépendent de la déformation d'Almansi (ISOELAS, Favier par exemples).
2) Si on refait ces calculs avec des lois où il y a réellement une séparation volume/déviatorique (j'ai testé Mooney-rivlin), on retombe bien sur une dimension Z qui strictement ne varie pas, que ce soit en 3D ou contraintes planes.
Avec la loi HYPOELAS, on obtient une légère variation de dimension Z mais bien moins qu'avec ISOELAS. C'est négligeable (on doit se récupérer une erreur due à l'approximation de déformation log).
3) Parmi tous mes calculs, je n'ai jamais vu de différence de résultat entre le cas 2D_C en dur et la méthode 3D CP.
4) en 2D, ce sont des remarques purement factuelles, l'erreur est faible en contrainte plane malgré un chargement de cisaillement très sévère, bien au-delà de ce qu'une loi élastique est sensée modéliser. Par exemple sur mon cas (épaisseur initiale = 1mm, E=250 MPa, nu=0.45, déplacement de cisaillement de 0.4 pour une géométrie de dimensions 1x1mm), la variation d'épaisseur dans le cas ISOELAS2D_C est de -1.4%. Dans le cas HYPOELAS2D_C, elle est de -0.007%. J'ai testé Favier en choisissant des coefs qui donnent un comportement proche de E et NU cités précédemment mais ma loi n'est pas tout à fait identique à ISOELAS. Grosso modo, l'erreur est de l'ordre de -0.5% à -1%. Je pense que si les lois étaient égales, ce serait équivalent à ISOELAS en terme d'erreur de variation d'épaisseur.
5) Par contre dans le cas cube 3D en ISOELAS, on obtient une variation de dimension Z de +7.3%. Non seulement c'est grand mais en plus c'est de nature différente du cas 2D. On obtient une augmentation de longueur Z et non une diminution.
Par exemple avec Favier, on obtient bien une diminution de la longueur Z en 3D. Cette diminution est du même ordre qu'en 2D avec une loi 3D CP (à loi Favier égale, j'obtiens -0.5% d'épaisseur en 3D CP et -0.4% selon Z en 3D sur cube). Donc avec Favier, les résultats restent bien cohérents entre 3D et 2D via 3D CP. Ce qui montre bien que le cas ISOELAS est étrange.
rappel : ISOELAS 3D CP donne la même chose que 2D_C (une diminution d'épaisseur de -1.4%).
A noter que je suis sûr de ma mise en données pour comparer 2D et 3D. Au sens où mes conditions limites sur un cube 3D sont bien configurées pour produire un résultat similaire au cas 2D sur une membrane. cf par exemple cas Favier qui est cohérent entre 3D et 2D, idem pour mooney-rivlin. D'ailleurs, quelque soit la loi, j'obtiens strictement les mêmes contraintes dans le plan 1 2 entre les cas 2D et 3D. La différence se joue dans la direction 3.
Je vais en rester là pour ma part car j'ai ma réponse (à savoir d'où vient la variation d'épaisseur en cisaillement : ça vient de toute loi en déf ou invariant d'Almansi et notamment cela n'a rien à voir avec la procédure 3D CP). Si tu souhaites creuser cette différence 2D / 3D en ISOELAS, je t'ai mis un répertoire en pièce jointe. Il y a un .info pour le 2D et un pour le 3D. Dans chacun d'eux, tu trouveras 4 lois de comportement de nature différente : ISOELAS, HYPO, MOONEY-RIVLIN et FAVIER. Mais peut-être as-tu déjà la réponse sans tester...
Mis à jour par Gérard Rio il y a environ 5 ans
"1) d'où vient la variation d'épaisseur en cisaillement => ça vient de toute loi en déf Almansi ou invariant d'Almansi et notamment cela n'a rien à voir avec la procédure 3D CP (d'ailleurs la doc théorique ne fait jamais apparaitre les déformations dans le calcul de l'épaisseur)
"
oui, les deux calculs sont différents. Le calcul de variation d'épaisseur est effectué via le module de compressibilité de la loi cf. le chapitre 12.1 de la doc théorique. Ce choix est motivé par le fait que l'on peut avoir une déformation mécanique (celle calculée par la loi CP ou CP2) qui est différente de la déformation géométrique. Cette dernière doit-être cohérente avec l'équilibre des forces. C'est le cas dans l'utilisation d'une loi pli qui conduit à des CP2 avec des def méca différentes des def cinématiques. Ce serait également le cas dans l'utilisation d'un critère de rupture "directionnel" (ex: pour le béton) qui à partir du 3D produirait du 2D CP et/ou du 1D CP2, là on aurait également des def méca différentes des def cinématiques (celles cohérentes avec l'interpolation).
Par contre dans une cinématique de cisaillement 3D, on impose tous les déplacement donc là on ne peut pas avoir de variation d'épaisseur.
Dans une cinématique de cisaillement 2D, on impose les ddl 2D, reste l'épaisseur qui peut varier en fonction de l'équilibre. Celui-ci va dépendre du type de calcul des contraintes et déformations.
"2) avec une loi ISOELAS, il y a une différence étrange de comportement en cisaillement dans la direction 3 entre le cas contrainte plane sur membrane et le cas 3D sur un cube. Dans le cas 2D, j'obtiens une diminution d'épaisseur. Dans le cas 3D, j'obtiens une augmentation. J'ai envie de dire que c'est plutôt le cas 3D qui donne un résultat étrange. Je parle bien de vraie 3D (sur un cube), pas de loi 3D CP.
"
Je ne comprend pas trop car en 3D cisaillement, tous les ddl sont bloqués ??
Dans les fichiers que tu as joints, tu ne bloques pas tous les noeuds en Z, du coup ce n'est pas du cisaillement que tu effectues et effectivement suivant le type de loi de comportement, on peut générer des variations d'épaisseur. En particulier l'intensité du déviateur des déformations d'Almansi est couplé avec la variation relative de volume. Ce couplage dépend de l'intensité des déformations. Du coup dans le cas de lois hyperélastiques utilisant ces invariants on va logiquement obtenir des variations suivant z.
Concernant la loi de Hooke 3D et CP (ou CP2) seules les résultats pour de faibles déformations sont exploitables. Si je me réfère aux tests de traction (qui donc intègre du changement de volume et du cisaillement) que j'avais effectués en traction (3D et CP) cf. chap. 12.3 de la doc théorique, a priori j'avais obtenu des résultats plausibles (avec des diffs).
Mis à jour par Gérard Rio il y a environ 5 ans
- Statut changé de En cours à Résolu
- % réalisé changé de 0 à 100
Mis à jour par Julien Troufflard il y a environ 5 ans
oui en 3D je n'ai pas fait un cisaillement simple au sens classique. J'ai volontairement laissé libre la direction 3 pour pouvoir comparer au cas 2D dans lequel l'épaisseur peut changer. Ce que je trouvais curieux, c'était de constater que dans le cas ISOELAS, je n'obtiens pas le même résultat en 3D et en 2D alors que pour les autres lois c'est le cas.
ok pour le reste (à propos Almansi).