Assistance #382
ouvertOptimisation de simulation avec contact
0%
Description
Bonjour,
Depuis que l'on s'est croisé il y a 2 semaines, j'ai pu appliquer les différents conseils que vous m'aviez conféré quant à l'optimisation de mes simulations et surtout sur la partie contact (je ne me suis pas encore attelé à l'optimisation de mes fichiers pour la partie frottement que je ferai plus tard).
Pour rappeler le contexte, je réalise des simulations de joints encastrés en reprenant les travaux d'Emilie VIEIVILLE.
Maintenant j'ai repris sa loi de comportement (modèle HH) avec les paramètres matériaux issus de son manuscrit de thèse.
Aujourd'hui, je n'ai aucun soucis à réaliser ma simulation sans contact, mais avec cette loi de comportement, dès que je rajoute du contact ça commence à coincer.
Initialement, en reprenant les paramètres de contact que vous m'aviez conseillé précédemment (cf. assistance #376 | sur une loi ISOELAS pour cette précédente demande) le calcul ne voulait pas démarrer. En se basant sur le précédent ticket, j'ai modifié PENETRATION_CONTACT_MAXI de 0.01 à 0.001 et à partir de là, la charge se passait sans problème mais le calcul s'arrêtait pendant la décharge. Lors de la décharge j'avais les messages d'erreur suivants en répétition:
"
Erreur1 au niveau du pilotage de Runge Kutta, le nouvelle increment qu'il faudrait utiliser = 4.50666e-15 est plus petit que le minimum autorise: 5.77316e-15
Algo_edp::Pilotage_kutta(..
estime_erreur= 0 mail: 1, ele= 3, pti=1 --> probleme dans la resolution de l'equation constitutive avec Runge Kutta integration impossible, due aux precisions demandees, on doit augmenter ces precisions , (3) utilisation avec succes de la linearisation
warning il semble que l'on ait une inversion sur liste secondaire puis coïncidence avec liste principale avec
Hysteresis_bulk::Gestion_pointeur_coïncidence(...
"
Je pensais qu'il y avait un problème sur l'hystérésis (sans succès) mais après que l'on ait discuté, je me suis concentré sur les paramètres de simulation plutôt que ceux de loi de comportement (cette fois avec succès).
A partir de là, j'ai continué avec PENETRATION_CONTACT_MAXI en le passant à 0.0001 mais mon calcul ne finissait toujours pas. En me rappelant une conversation avec Julien sur une problématique liée aux pas de temps (premier point sur les courbes n'étant pas correct, en réduisant le pas de temps on peut minimiser cette erreur), j'ai commencé à lancer mes calculs en diminuant DELTAt et aussi DELTAtMAXI (car "à cause" de bonnes convergences avant que le calcul ne diverge, le dt augmentait ce qui faisait planter). Ces changement ont améliorer le calcul mais ne permettaient pas toujours d'aller au bout du calcul. J'ai ensuite utilisé suite_point_info pour réinitialiser/modifier DELTAt et DELTAtMAXI spécifiquement pour la décharge (après de nombreux tests, les paramètres suivant ont été atteint --> charge : dt = 0.001 & dtmax = 0.005 | décharge : dt = 0.0005 & dt max = 0.002) et là tout à fonctionné.
Cependant, pour faire correspondre l'écrasement numérique avec mon écrasement expérimental, j'ai passé l'écrasement de 0.95 à 0.94 et le calcul a planté de nouveau à la décharge. J'ai donc de nouveau joué sur mes paramètres de pas de temps à la décharge (charge : dt = 0.001 & dtmax = 0.005 | décharge : dt = 0.0001 & dt max = 0.001) et ça a de nouveau fonctionné
Mes questions :- Y'a-t-il d'autres paramètres à toucher pour "stabiliser" le calcul afin qu'un petit changement dans l'essai ne le fasse pas diverger ?
- Dans la continuité, est-ce que une optimisation des paramètres de fonctionnement des contributions dans loi de comportement n'aiderait pas à l'optimisation globale de la simulation ?
Merci pour votre aide
Fichiers
Mis à jour par Gérard Rio il y a 10 mois
- Statut changé de Nouveau à En cours
beau travail !!
Pour l'instant j'ai regardé globalement histoire de me mettre dans le bain, car c'est un peu complexe et je ne me rappelle plus de tous les détails.
Quelques remarques:
- je pense que c'est peut-être utile de regarder également ce que cela donne avec des éléments quadratiques à intégration complète car les éléments linéaires peuvent présenter des comportements de blocage (purement numérique). Les éléments quadratiques sont plus gourmands en temps de calcul mais j'ai plus confiance dans leur résultats. Ceci pour la chemise et pour le joint.
- lorsque je regarde l'évolution pendant la partie où il n'y a pas de pb, on voit que l'intensité de la contrainte de Mises globalement est en gros le tiers de l'intensité de la partie sphérique du tenseur des contraintes (c-a-d l'intensité de la presion qu'il y a dans le joint). Ça ne paraît pas déconnant. La variation de volume (V = vol(t)/vol(0)) semble évoluée correctement.
- globalement on a un comportement uniforme sur tout le maillage. C'est normal tant qu'il n'y a pas de frottement. En fait avec un seul élément on aurait quelque chose de similaire sauf au niveau du contact qui n'a lieu qu'au niveau des noeuds.
bon... je vais continuer
à suivre ...
Mis à jour par Gérard Rio il y a 10 mois
Je ne crois pas qu'il y ait de solution générale qui marche toujours. Par contre il y a des infos qui peuvent aider.
En regardant le déroulement du calcul je crois qu'il peut y avoir le pb suivant:
- avec un accroissement de la charge très petit cela conduit à des accroissement des ddl très très petit. Dans l'exemple fournit on observe des accroissement des ddl de l'ordre de 1.e-5 à 1.e-6 voir moins !
- au niveau de la loi les parties incrémentales, hystérésis, il y a une résolution de l'équation constitutive avec une précision :
erreurAbsolue_ 1.e-4 #1.e-5
erreurRelative_ 1.e-3 #1.e-4
Du coup la précision de la loi est plus grossière que l'accroissement des ddl ... ce qui va probablement rendre la convergence chaotique voir une divergence ...
Donc en regardant l'affichage des itérations (avec un paramètre supplémentaire au niveau de l'algorithme:
non_dynamique avec plus visualisation
PARA_TYPE_DE_CALCUL
permet_affichage_ 3
on obtient dans la sortie par exemple:
--- |max_var_DeltaDdl|= 0.00000286 , |max_deltaDdl|= 0.00436385
ce qui signifie que pour l'itération de newton, la variation de ddl est ici de 2e-6 et globalement sur l'incrément, le delta ddl est de 4e-3
On observe également que pour certaine divergence, on a un accroissement brutal de la variation de ddl (pour une itération). Je pense que c'est (souvent, voir très souvent) intéressant de limiter cette accroissement. Par exemple si on est sur un plateau de comportement, la dérivée va être proche de 0 et la méthode de Newton va préconiser un accroissement de ddl très grand. En général la direction est bonne mais pas l'intensité. Du coup une méthode est de limiter globalement l'accroissement de ddl. Pour ma part j'ai mis :
para_pilotage_equi_global ------------
NORME_MAXI_INCREMENT 0.004 #0.2 # defaut : +infini
J'ai remarqué que pour les différents incréments qui convergeaient bien on était dans cet ordre de grandeur. Mais ce paramètre est à adapter pour chaque cas de calcul, car il peut dépendre par exemple de la flexibilité de la structure, du pas de chargement que l'on se donne et de la raideur des matériaux.
S'il est trop grand, il ne sert à rien, s'il est trop petit il va limiter la vitesse de convergence.
En général ce que l'on veut c'est qu'il n'intervient "que si" on a un pb de convergence.
- PARAMETRE | VALEUR |
#---------------------------
DELTAt 0.0001 # defaut : 1.
DELTAtMAXI 0.004 # 0.001 # defaut : 1.
TEMPSFIN 2.0 # defaut : 1.
controle ------------
#---------------------------
J'ai également augmenté la précision de l'hystérésis bulk et là cela fonctionne bien ... mais uniquement après un restart ???
bon, à suivre ...
Mis à jour par Victorien CLEMENT il y a 7 mois
Bonjour,
Depuis la dernière fois j'ai essayé de regarder et tester les simulations avec les différents commentaires que vous aviez écrits.
Dans un premier temps j'ai essayé tel quel (toujours avec les éléments linaires) en modifiants les différents paramètres cités mais sans grand succès.
Plus récemment je suis revenu sur le sujet et ai mis à jour tous mes maillages avec des éléments quadratiques complets. Comme vous l'aviez décrit, le temps de calcul a drastiquement augmenté en changeant le type d'éléments utilisés (~30 min avec HZ et ~9min avec HZfast). Pour la suite, je me suis concentré sur les simulations avec ce type d'éléments et en jouant sur les paramètres précédemment cités.
Comme la simulation en l'état avec contact radial ne semble pas arriver où je veux, j'ai essayé une simulation en conservant les mêmes conditions limites (blocage des mouvement radiaux) mais en supprimant le contact radial pour ajouter un contact axial. Cette Simulation avait 2 objectifs :- Observer si des différences de réponses sont observables en sollicitant le joint en compression indirectement par un outil et directement en imposant un mouvement à ses nœuds.
- Observer si le soucis précédemment observé provenait du contact en général ou plus d'une combinaison paramètres contact - paramètres modèle.
De cette façon, le calcul arrive bien au bout et se montre cohérent. Cependant comme tous les autres calculs précédents
Enfin, comme la simulation avec un contact axial semble fonctionner, j'ai retenté la partie contact radial mais cette fois-ci en diminuant drastiquement le nombre d'éléments, joint en 2x2 (1x1 impossible a faire tourner) et chemise en 1x1. Cette fois-ci le calcul arrive bien à la fin prévue et d'un point de vue sortie axiale semble cohérant mais il est compliqué d'étudier les déformations de la chemise en l'état du coup.
Il est à noter que pour toutes ces simulations, qu'elles aillent au bout ou non, elles présentent toutes plus ou moins les mêmes comportements :- Instabilité des sorties qui est visible sur les graph liés et surtout sur ceux représentant l'évolution des pondérations lors de l'essai (les courbes ressemblent à des escaliers).
- Avec le visionnage par GMSH, en regardant PENETRATION_CONTACT on peut observer beaucoup d'oscillations, quasiment un incrément sur 2 (contact radial).
- une "zone difficile" systématique pour la simulation est observée vers le début de la décharge (autour des ~1.07-1.09 pour un TEMPSFIN de 1.49) où soit le calcul plante systématiquement à cet endroit soit il peine drastiquement à passer ce moment.
De ce que j'en sors c'est que le contact arrive bel et bien à tourner, malgré des moments où le calcul ralenti, mais dès que le nombre d'éléments augmente, la simulation n'arrive pas à passer le cap à la décharge.
PS : Egalement, depuis la dernière fois, j'ai légèrement modifié manuellement le modèle afin qu'il décrive mieux mes données expérimentales (détails dans le README)
Mis à jour par Gérard Rio il y a 7 mois
Bonjour Victorien,
oui, le contact n'améliore pas la stabilité du calcul ! en tout cas comme il est traité dans Herezh. C'est un sujet qui me tient à coeur et j'aimerais bien trouver des solutions pérennes.
Dans ton cas, tu cumules pas mal de difficultés : loi complexes dont l'opérateur tangent ne prend pas en comptes (de mémoire) tous les éléments qui varient: ex: les pondérations des différentes parties de la loi.
bon... donc il faut pouvoir regarder en détail.
Peux-tu me transmettre ta mise en données actuelles et les différentes infos nécessaires pour ton calcul.
Je vais essayer de regarder la semaine prochaine.
Mis à jour par Victorien CLEMENT il y a 7 mois
- Fichier 1.2_Ticket_Herezh.zip 1.2_Ticket_Herezh.zip ajouté
Ah mince je pensais avoir transmis les fichiers avec mon commentaire, normalement les voici.
Merci pour le retour
Mis à jour par Gérard Rio il y a 7 mois
j'ai commencé à regarder.
Je refais une passe sur la loi de comportement seule. Je supprime le contact et impose un déplacement nul sur les noeuds externes du joint. J'utilise le cas quadra. La loi fonctionne bien en charge, mais je bute sur une incompréhension: au premier incrément les réactions aux noeuds sont énormes, de l'ordre de 1300 et dès le deuxième incrément (et pour tous les autres incréments) je retombe à des valeurs de qq Newton. Je n'arrive pas à comprendre pourquoi de telles valeurs au premier incrément.
- si je change la loi en une loi élastique, je n'ai pas ce phénomène, donc c'est bien lié à la loi.
- si je regarde les composantes de la loi (dans le .maple), les valeurs semblent correctes, inf à la dizaine.
C'est étrange !
à suivre
Mis à jour par Victorien CLEMENT il y a 7 mois
Oui c'est un phénomène que j'avais observé. J'en avais discuté avec Julien TROUFFLARD une fois et d'après ses conseils, j'ai réduit le pas de temps initial. Cependant cela réduit juste l'intensité du phénomène sans l'empêcher complètement.
Mis à jour par Gérard Rio il y a 7 mois
bon... j'ai trouvé le pourquoi en regardant la valeur des fonctions de pondérations.
Le pb vient du fait qu'au premier incrément, la valeur utilisée pour V_vol est nulle car elle est initialisée par défaut à 0.
Du coup cela donne des pondérations très grandes et sans réalités physique. Dès le deuxième incrément, V_vol est correctement initialisé d'où le changement brusque de puissance interne.
Une solution aurait été de modifier les fonctions de pondération et d'introduire un cas particulier V_vol 0.
Mais cela ne me parait pas la bonne solution, car normalement à l'initialisation on devrait avoir V_vol 1. car au début du calcul il n'y a pas encore de variation de volume.
Donc j'ai modifié l'initialisation de V_vol en 1. et là j'ai une progression normale !
NB: il faut noter que les grandeurs qui passent d'une loi à une autre (c'est le cas de V_vol qui est calculé par la loi hyperélastique, et transmise aux autres lois ), sont systématiquement celles de l'incrément précédent (pas de l'itération précédente). C'est un choix pour éviter des pb de convergence. Du coup, on a toujours un décalage d'un pas de temps sur V_vol par exemple.
là ça fonctionne parfaitement en charge avec des incréments de 0.06
Je continue les investigations...
Mis à jour par Gérard Rio il y a 7 mois
en poursuivant mes investigations, d'une part j'ai corrigé 2 petits bugs:
- lors d'un restart avec du contact, si le contact était annulé via
CONTACT_TYPE 0
ce qui est mon cas, cela me permet d'annuler l'action du contact tout en ne modifiant pas la mise en données, donc le contact est actif, mais la pénalisation est nulle
dans ce cas le restart ne se faisait pas correctement : c'est corrigé
- lorsqu'on voulait une remontée aux contraintes et erreurs, si on effectuait plusieurs fois le calcul (ce qui est le cas avec la directive:
suite_point_info
et bien la remontée n'était correcte que pour le premier calcul, ensuite on avait des nan !! : c'est corrigé
Ensuite, j'ai essayé le calcul complet (tjs sans contact ) charge puis décharge. Là j'ai constaté qu'avec la mise en données initiales conduisait à beaucoup de pas de calcul où la convergence est immédiate, sans correction via une résolution. Du coup cela s'apparente à un calcul explicite avec possibilité d'une dérive.
J'ai augmenté le pas de temps (jusqu'à 0.06) et toujours un résultat immédiat sans itération. Lors de l'inversion de charge, on observe beaucoup de pb et finalement le calcul n'arrive pas à terme.
J'ai modifié la mise en données en imposant de systématiquement faire au moins une itération de correction via :
NORME Residu/Reaction_et_verification_ddouble
et là je n'ai plus de pb à la charge et à la décharge.
C'est un peu plus long, mais cela augmente la robustesse de la résolution.
À suivre...
NB: pour l'instant je ne mets pas de nouvelle version dispo en prévision de futures modifs en fct de mes prochaines simul.s
Mis à jour par Gérard Rio il y a 7 mois
J'ai relâché les blocages suivant x, pour les noeuds extérieurs du joint (sur le rayon externe). Ces blocages me servent à remplacer le contact.
Normalement pendant la compression, si je libère ces blocages (toujours sans contact), on doit avoir un déplacement positif pour ces noeuds: le joint doit s'écraser comme une galette et donc son rayon externe doit augmenter.
or là je vois que le joint se rétracte ... À la rigueur, pendant la phase de consolidation, on peut imaginer que le rayon externe varie peu, mais de là à diminuer je crois que ce n'est pas normal.
Il faut sans doute revoir les paramètres de la loi.
Par exemple, toujours en laissant libre les noeuds externes (sans contact), il faudrait regarder ce qui se passe avec chaque loi (ou chaque couple sphérique - déviatorique, car il faut forcément une partie sphérique et une partie déviatorique pour avoir un tenseur de contrainte complet) et ensuite voir comment ajuster soit les paramètres des lois individuelles ou soit les pondérations entre chaque loi (plutôt regarder dans un premier temps les pondérations dans la somme pondérée).
De mémoire, il me semble que c'est un des 2 comportements sphérique qui est trop important, mais là, il faut faire des simuls.
En fait, un comportement sphérique à tendance (sous compression) à rétracter le volume de manière identique dans toutes les directions. Au contraire un comportement déviatorique agit à volume constant, donc si on réduit la hauteur du joint, automatiquement le diamètre externe augmente (si le diamètre interne est fixe). Donc c'est en jouant sur la proportion de sphérique - déviatorique qu'on peut approcher un comportement global voulu.
NB: dans le cas avec contact et le paramètre:
TYPE_PENALISATION_PENETRATION 8
cela signifie que l'on a du contact collant, donc effectivement le joint reste collé à la chemise, mais la chemise sera soumise à un effort de traction vers le centre. Du coup on ne pourra pas avoir le bon comportement mesuré par des jauges placées sur la chemise (en tout cas le comportement qu'Émilie observait, à savoir le gonflement de la chemise)
Mis à jour par Gérard Rio il y a 7 mois
- Fichier fct_nD_ponderation_charge.hz_courbe fct_nD_ponderation_charge.hz_courbe ajouté
- Fichier Quadra.info Quadra.info ajouté
- Fichier Quadra.CVisu Quadra.CVisu ajouté
Après pas mal de calculs ...
- a priori il y a une difficulté au niveau des fonctions de pondération.
1) Dans une première étape, j'ai mis une fonction constante sur toutes les fcts de charge:
courbe_bulk_charge, courbe_orgeas_charge, courbe_hysteresis_bulk_charge, courbe_hysteresis_3D_charge
Simulation de la charge avec le diamètre externe libre : aucun pb, convergence immédiate
2) deuxième étape: j'ai introduit uniquement la fonction: courbe_bulk_charge
La convergence devient très vite erratique et ça s'arrête à t = environ 0.15
Sur la visu des déplacements, on voit que V_vol oscille fortement entre chaque incrément.
A priori, je pense que l'évolution de la fct courbe_bulk_charge n'est pas assez régulière, du coup les changements de comportement s'effectuent avec des a coup (ce n'est pas le bon terme, mais c'est l'idée).
J'ai remplacé la fct courbe_bulk_charge par un polynome d'hermite: c-a-d:
la fct initiale:
courbe_bulk_charge FONCTION_COURBE1D
courbe= COURBEPOLYLINEAIRE_1_D
Debut_des_coordonnees_des_points
Coordonnee dim= 2 0.880 0.505
Coordonnee dim= 2 0.948 0.310
Coordonnee dim= 2 0.987 0.000
Coordonnee dim= 2 1.000 0.000
Fin_des_coordonnees_des_points
un_argument= V_vol
#permet_affichage_ 6
fin_fonction_courbe1D_
la nouvelle fct:
courbe_bulk_charge_2 FONCTION_COURBE1D
courbe= COURBEPOLYHERMITE_1_D
Debut_des_coordonnees_des_points
Coordonnee dim= 3 0.880 0.505 0.
Coordonnee dim= 3 1.000 0.000 0.
Fin_des_coordonnees_des_points
un_argument= V_vol
permet_affichage_ 6
fin_fonction_courbe1D_
là plus de pb de convergence, le calcul va tranquillement jusqu'à un V_vol de 0.94 environ (t=0.9 environ).
À partir de là on a de nouveau des difficultés, mais globalement le changement est radical.
Conclusion: je pense que c'est préférable d'utiliser des fonctions de pondération avec une variation plus douce que celle des fct poly-linéaires. L'interpolation d'Hermite est intéressante, car par rapport aux poly-linéaire, il suffit d'ajouter la dérivée et on peut mettre moins de points de définition.
Je vais mettre sur le site la version que j'utilise ( V 7.053)
à suivre...
Mis à jour par Gérard Rio il y a 7 mois
- Fichier hyper_bulk.pdf hyper_bulk.pdf ajouté
- Fichier hyper_devia_fig.pdf hyper_devia_fig.pdf ajouté
- Fichier clipboard-202506102044-e0yoq.png clipboard-202506102044-e0yoq.png ajouté
J'ai introduit une interpolation d'hermite également pour la partie déviatorique (cf. les figures jointes).
Cela fonctionne jusqu'à t= 0.47 (environ) et pas plus !
En regardant l'évolution de la déformée, on observe de grosses oscillations de forme à la divergence et là ce n'est pas l'aspect irrégulier de la pondération déviatorique qui est en cause, car, quel que soit le type de courbe, le résultat est le même.
si j'ajoute la pondération sur la partie déviatorique hystérétique, là ça fonctionne bien !!
Du coup, je propose l'explication suivante:
- pour qu'une loi permette d'obtenir une solution stable, il faut que les parties sphériques et déviatorique ne soient pas trop différentes, il existe une valeur limite à cette différence. Par exemple avec des matériaux élastomèriques, si le module de compressibilité devient trop grand, tout se passe comme si la partie déviatorique disparaissait et le calcul devient instable. L'inverse est également vrai.
- dans le cas de l'introduction de la partie déviatorique hyperélastique avec pondération, on voit que la pondération a pour conséquence pendant l'avancement du calcul de diminuer l'influence de cette partie déviatorique. À l'inverse l'introduction de la pondération sur la partie hystérésis, a tendance à augmenter l'influence de l'hystérésis.
Donc une explication de ce qui se passe est :
- en l'absence de pondération sur l'hystérésis déviatorique on n'a pas assez de déviateur pour stabiliser le calcul : on observe des oscillations, car il y a plusieurs équilibres possibles
- l'introduction de la pondération d'hystérésis déviatorique permet de stabiliser.
Je suppose que l'introduction d'une pondération sur l'hystérésis sphérique va encore influencer la stabilité, mais je n'ai pas encore regardé.
Ceci étant je pense qu'il est préférable de vérifier le bon comportement de la loi en confiné et en non confiné (surface externe bloqué ou non) avant de regarder le contact (qui va amener une situation entre ces deux extrêmes), d'où mes investigations.
On voit sur la déformée qu'en non confiné on a de grands déplacements. Avec du contact, la forme sera contrainte, mais si la loi ne permet pas d'obtenir une unicité de solution, on risque d'avoir une oscillation dans les forces de contact qui conduira à une non-convergence.
à suivre ...

Mis à jour par Gérard Rio il y a 6 mois
- Fichier hyper_sans_ponder.pdf hyper_sans_ponder.pdf ajouté
- Fichier hyster_sans_ponder.pdf hyster_sans_ponder.pdf ajouté
- Fichier hyper_avec_ponder.pdf hyper_avec_ponder.pdf ajouté
- Fichier graphite_initial.pdf graphite_initial.pdf ajouté
- Fichier graphite_initial_plusHermiteChargeHyperr.pdf graphite_initial_plusHermiteChargeHyperr.pdf ajouté
- Fichier graphite_0.5_ponder_bulk_hysteresis.pdf graphite_0.5_ponder_bulk_hysteresis.pdf ajouté
- Fichier graphite_0.1_ponder_bulk_hysteresis.pdf graphite_0.1_ponder_bulk_hysteresis.pdf ajouté
bonjour,
comme la loi est complexe, j'ai essayé de l'étudier pas à pas. Je considère un essai de compression simple suivant l'axe vertical (3), pas de restriction sur le rayon interne ni sur le rayon externe. L'intérêt de l'essai est de pouvoir étudier en même temps un comportement déviatorique et sphérique relativement libre, il n'y a pas de confinement.
Tout d'abord, je trace l'évolution des comportements réversibles et non réversibles.
1) les parties 1 et 2 , cf. hyper_sans_ponder.pdf (parties hyperélastiques) sans pondération: charge puis décharge pour la partie sphérique seule ( Spherique_eps Spherique_sig ), la partie déviatorique seule ( contrainte_mises def_duale_mises), et l'ensemble sig33 vs eps33.
- aucun pb de convergence
- on observe bien un comportement réversible
- on observe une raideur plus grande en sphérique comparée au déviatorique. Du coup cela favorise une déformation déviatorique (le disque s’écrase).
- on a un ordre de grandeur semblable sur les sphériques et déviatoriques (sachant qu'il y a des coeffs (fixes) spécifiques à chaque invariant donc seul l'ordre de grandeur est à comparer)
2) on fait de même pour la partie hystérésis cf. hyster_sans_ponder:
- pas de pb de calcul alors que l'on a un super plateau. Cela provient du fait que le chargement est en déplacement imposé. En force il y aurait des pb au niveau du plateau, car on a une indétermination force déplacement.
- a priori tout est ok
- comparé à la partie hyper, on a un facteur 10 d'intensité supérieur
3) on regarde la partie hyper avec pondération, cf. hyper_avec_ponder.pdf:
- on observe que l'on n'a plus vraiment une loi réversible. À la décharge on observe un saut. Cela vient du fait que les fonctions de pondération pour le chargement et pour le déchargement sont différentes, du coup au temps 1, à l'inversion on a un saut.
D'un point de vue physique, pourquoi pas, car effectivement pendant le chargement on consolide et à la décharge on reste normalement avec le même niveau de consolidation.
Mais je pense que ce serait mieux d'utiliser l'hystérésis (bulk et déviatorique) pour représenter ce phénomène. L'hystérésis est faite pour cela (avec les mécanismes de mémorisation), alors qu’utiliser l'hyperélasticité avec des pondérations différentes en charge et décharge, c'est un peu l'inconnue ! En plus cela donne des oscillations à l'inversion, car l'équilibre à du mal à se faire compte tenu du saut de comportement.
Bon... néanmoins on peut dire que c'est une loi possible, pas très stable aux inversions, mais qui arrive à fonctionner (d'un point de vue calcul)
4) j'essaie la même chose en hystérésis pondérée. Alors que pour les calculs précédents je pouvais utiliser une loi avec uniquement les parties a étudier, ici je suis obligé de garder la partie hyper, car c'est elle qui calcule V_vol qui est l'argument utilisé pour le calcul des pondérations. Du coup je calcule les 4 parties élémentaires, je pondère à 0 les parties hyper, ce qui donne un résultat uniquement relatif à l'hystérésis.
Bon... et bien cela ne converge pas !! On observe des oscillations très rapidement que j'attribue au fait que la partie sphérique est trop grande vis-à-vis de la partie déviatorique.
- je diminue avec un facteur 0.1, le bulk d'hystérésis et là cela fonctionne sur toute la partie charge, par contre l'équilibre n'arrive pas à se faire à la décharge
- je passe le facteur de 0.1 à 0.5 : cela fonctionne encore
5) avec la loi complète avec pondération: le calcul ne va pas à terme, vers t=0.55 environ, on commence à avoir des oscillations: cf. graphite_initial.pdf
- si j'utilise une interpolation d'hermite assez équivalente, j'améliore un peu cf. graphite_initial_plusHermiteChargeHyperr.pdf par toujours pas de convergence
- si je réduis de moitié (facteur 0.5) la pondération sur l'hystérésis sphérique, cf. graphite_0.5*ponder_bulk_hysteresis.pdf, là cela fonctionne
- on voit sur les courbes des sauts importants au niveau du passage à la décharge. Je suppose que c'est dû au fait que les pondérations en charge et décharge ne sont pas identiques.
- si on compare entre les facteurs 0.1 et 0.5 on commence à voir des oscillations au niveau de la décharge avec 0.5 et toujours des sauts problématiques au niveau des inversions
bilan provisoire:
A priori il y a deux types de non-convergences:
1) au niveau des inversions charge-décharge: c'est dû aux sauts de la loi de comportement, qui dépend de la forme des fonctions de pondération actuelles
2) au niveau d'un chargement ou déchargement monotone: c'est dû à une trop grosse différence entre sphérique et déviatorique.
Du coup:
- ce serait nettement préférable d'utiliser des pondérations identiques à la charge et à la décharge
- il faut se servir le plus possible de l'hystérésis (sphérique et déviatorique) pour représenter les différences de comportement en charge et décharge
- il faut veiller à ne pas avoir un déséquilibre trop grand entre sphérique et déviatorique, pour éviter des oscillations. Pour le vérifier, il faudrait utiliser un panel de sollicitations (numériques) standards: tractions plus ou moins confinées, cisaillement ...avec un nombre suffisant d'éléments pour faire apparaître les pb éventuels.
Il serait sans doute intéressant d'utiliser non pas V_vol, mais V_vol mini obtenu précédemment. Cela permettrait de prendre en compte la consolidation, durant le chargement, et de figer le niveau de consolidation pendant la décharge (car il me semble qu'il n'y a pas de réversibilité sur la consolidation).
Évidemment la grosse difficulté dans tout ça c'est d'arriver à identifier le comportement sur des essais expérimentaux en tenant compte des contraintes numériques vues précédemment.
Mis à jour par Gérard Rio il y a 6 mois
- Fichier calcul_loi.zip calcul_loi.zip ajouté
- Fichier calcul_courbes.zip calcul_courbes.zip ajouté
Remarques:
1)pour utiliser un V_vol mini, il faut construire une fct nD externe (cf. doc d'Herezh) qui en fonction du num du pti et de l'élément, a en entrée V_vol et renvoie le mini des V_vol précédent. La fct externe stocke le V_vol mini, dans un tableau indicé par le num du pti et le num de l'élément. Elle met à jour le V_vol mini en fonction du V_vol passé en paramètre.
2) je joins pour info les fichiers de calcul qui m'ont servi pour tracer les courbes d'évolution et pour calculer les lois sur l'essai de compression simple