Anomalie #222
Segmentation fault dans le cas d'une loi orthotrope et SAUVEGARDE non nul
Description
Gérard,
j'ai un calcul qui plante dès le début si on définit une loi orthotrope et que l'on fait une sauvegarde d'incrément (controle --> SAUVEGARDE). Donc un pb d'écriture du .BI ou .PI
L'exemple joint est un simple quadrangle en traction. Voici les observations :
1) si je ne mets aucune sauvegarde (SAUVEGARDE 0) => calcul fonctionne
2) si je supprime la définition de la loi MAT_ORTHO => calcul fonctionne
3) cela n'a aucune importance que l on choisisse d'appliquer la loi MAT_ISO ou MAT_ORTHO au set d'éléments E_tout. C'est la seule présence de la définition de la loi MAT_ORTHO dans "materiaux" qui engendre l'erreur si SAUVEGARDE est non nul
Pour vérifier un éventuel pb de lecture du .info, j'ai testé mais sans succès :
- externaliser le maillage dans un fichier séparé
- donner un nom au maillage (nom_maillage)
Fichiers
Mis à jour par Gérard Rio il y a presque 5 ans
- Statut changé de Nouveau à En cours
- % réalisé changé de 0 à 80
Je viens juste de finir l'implémentation de la loi 2D ortho entraînée en CP, donc c'est logique qu'il y a des pb (même très basiques).
Ceci étant, c'est l'occasion je faire un premier test !!
Donc avec la version non fast on a les informations suivantes:
"
Erreur : composante inexistante !, nb demande = 8
T& TABLEAU_T::OPERATOR (int )
"
Ce qui est la signature d'un problème de tableau mal dimensionné ... et effectivement c'est le cas.
==> ok dans la version de test 6.927 (j'ai déposé la nouvelle version dans la partie test)
NB:
1) avec la loi iso
. converge en 1 itération avec un pas de temps de 0.02,
. idem avec un pas de 0.1
. converge avec 3 itérations pour un pas de temps de 1
ce qui correspond à 25 % de déformation
2) avec la loi ortho
. avec un pas de 0.1 : 2 iter au premier incrément puis 1 iter
. avec un pas de 1. : 3 itérations
Affaire à suivre !!
Mis à jour par Julien Troufflard il y a presque 5 ans
- Fichier test_1elt_2D_3D.tar test_1elt_2D_3D.tar ajouté
ok.
Je profite de ce ticket pour continuer le debbugage de la loi ortho 2D. Mais je change de thème. Cette fois, il s'agit des valeurs calculées et de la doc théorique Herezh.
Pour situer le contexte : je veux établir un résultat de référence en orthotropie 2D à comparer à une loi isoelas + anisotropie projetée. Mais tout d'abord, j'ai regardé si la loi ortho 3D et 2D étaient cohérentes. Et j'ai trouvé des résultats bizarres en ortho 2D dans l'épaisseur.
1) les équations ortho 2D dans la doc Herezh n'ont pas l'air bonnes (équations 205 et 206).
2) le calcul Herezh des contraintes 11 et 22 sont cohérentes entre 3D et 2D
3) le calcul de l'épaisseur en ortho 2D n'a pas l'air bon (ne respecte ni la doc, ni ce que j'ai pu calculé moi-même). Mon calcul analytique est cohérent avec Herezh ortho 3D.
je t'ai joint une archive qui contient :
1) calcul 2D et 3D en déplacement imposé selon X et Y de manière à imposer arbitrairement eps11=0.05 et eps22=-0.02.
2) un script qui regroupe des calculs analytiques selon doc herezh et selon ce que j'ai calculé à la main
3) un fichier readme.txt qui contient les résultats : doc Herezh vs mes calculs analytiques vs calcul Herezh 2D vs calcul Herezh 3D
je ne pense pas me tromper au regard de ce que donne le calcul Herezh 3D (notamment la formule de la déformation eps33 qui ne dépend plus des modules d'Young, ce qui est à mon avis normal et retombe sur le cas isotrope contrainte plane : eps33 = -nu/(1 - nu)(eps11 + eps22) si nu12=nu13=nu23).
J'ai mis à la fin du fichier readme.txt le code latex des équations pour sig11, sig22 et eps33 pour actualiser la doc théorique.
Mis à jour par Gérard Rio il y a presque 5 ans
En fait la doc théorique n'était pas à jour, je viens de mettre la version qui m'a servi pour le codage (V 6.923), dans laquelle la formule de calcul d'épaisseur n'est pas celle que tu mentionnais.
Par contre celle qui est dans la doc théorique est celle qui est implantée ... donc à voir s'il y a effectivement un pb.
Je regarderai dès que possible (j'ai la tête un peu prise par le pb de contact de Frank !!)
bon... affaire à suivre
Mis à jour par Julien Troufflard il y a presque 5 ans
je viens de regarder la nouvelle doc théorique. Pour la formule 206 de eps33, il n'y avait que le module E3 qui avait été oublié dans la version précédente. C'est mieux, mais ça ne donne pas vraiment le bon résultat. Et surtout, cette formule analytique ne donne pas le résultat produit par le calcul Herezh ortho 2D.
Mis à jour par Gérard Rio il y a presque 5 ans
Bonjour Julien,
oui, je suis d'accord avec tes remarques, et j'ai mis la doc théorique à jour.
Du coup, on n'a pas besoin du module E_3, seules interviennent les coef de Poisson nu_13 et nu_23, reste donc 6 paramètres matériaux.
Je vais mettre à jour les routines avec les nouvelles formules et tous les trucs qui en dépendent.
Je vais faire un test entre 3D et 2D_C avant de mettre la nouvelle version, histoire d'avoir une validation basique.
@suivre
Mis à jour par Gérard Rio il y a presque 5 ans
suite des investigations:
Finalement, l'idée de passer à 6 paramètres pose pb dans le cas du calcul de la compressibilité, dans la phase initiale. Du coup je garde le paramètre E3, sachant que ce paramètre a très peu d'influence: il sert uniquement pour calculer le module de compressibilité lorsque la variation de volume est nulle (au début du calcul).> mise à jour dans le code> intro d'une sortie en post-traitement de la def d'épaisseur calculée dans la loi de comportement, > avec un niveau de commentaire local de 5 on a accès pendant le calcul à la déformation d'épaisseur, var de volume, module de compressibilité ...> modification du calcul du module de compressibilité en tenant compte de la variation d'épaisseur dans le cas où celle-ci est conséquente
mais modif également quand on démarre et que la variation d'épaisseur est très faible.
La doc théorique sera mise à jour ...
Sur le test de Julien, on obtient maintenant une déformation d'épaisseur eps33 de -0.0240334 correcte, ensuite l'épaisseur de la plaque est mise à jour à l'aide du coefficient de compressibilité et on obtient comme épaisseur finale:
5.851757147135e-02
à comparer avec l'épaisseur 3D:
0.05860798
ce qui fait une différence de 0.15 %
A priori, cela est due au fait que:
1) dans la loi 2D CP je calcule un module sécant entre la pression et log(V/V0).
2) et ensuite dans le calcul d'épaisseur, j'utilise une forme incrémentale pour le calcul de la nouvelle épaisseur (cf la doc théorique).
Mais en toute rigueur je devrais utiliser un module tangent dans la formule incrémentale ... du coup ce n'est pas complètement cohérent.
J'ai choisit une formule incrémentale pour ... limiter les erreurs via l'utilisation du log...
Il faudra que je revoie cette partie qui pose pb, soit en calculant en plus un module tangent dans loi, ou soit en modifiant la mise à jour de l'épaisseur dans la plaque ... mais de mémoire sur des tests que j'ai fait par le passé, cela introduit des approximations ... bon à revoir
Pour l'instant, la différence reste finalement faible donc je laisse en l'état pour permettre des calculs avec... normalement des différences faibles comparées avec un calcul purement 3D.
J'ai mis à jour une version test qui intègre ces mises à jour (V 6.928)