Anomalie #379
ouvertloi ORTHOELA3D dans LOI_CONTRAINTES_PLANES et plissement membrane
Description
Gérard,
je vais tester la loi ORTHOELA3D dans une LOI_CONTRAINTES_PLANES avec trois buts :
1) avoir un coef de poisson supérieur à 0.5 dans le plan de la membrane et peu de variation d'épaisseur
2) appliquer le critère pli
3) pouvoir la pondérer avec des fonctions nD (ce qui a un lien avec le ticket sur les invariants log https://herezh.irdl.fr/issues/378 )
j'ouvre ce ticket avec pour l'instant pas de demande encore concrète. Il faut que je teste ce qui est déjà possible.
J'ai pour l'instant juste remarqué deux erreurs dans la doc théorique (theorie_herezh++.pdf version 7.037).
Section 10 page 103 (Loi type Hooke 3D initialement orthotrope, puis entrainée) :
=> formule (328) : double signe "-" entre le terme nu21*nu13*nu32 et le terme nu12*nu21
=> formules (329) n'a pas l'air bonne. Devrait être :
1 - 2*nu12*nu23*nu13*E3/E1 - nu12^2 * E2/E1 - nu13^2 * E3/E1 - nu23^2 * E3/E2 > 0
ou bien aussi (celle qui est dans la doc Abaqus) :
1 - 2*nu21*nu32*nu13 - nu12*nu21 - nu13*nu31 - nu23*nu32 > 0
NB : je préfère la première version que celle d'Abaqus parce qu'elle fait apparaitre uniquement les coefs qui sont effectivement mis dans le .info (i.e pas nu21, nu31, nu32). Et de toute façon, la deuxième version serait redondante avec l'équation (328)
Fichiers
Mis à jour par Julien Troufflard il y a 4 mois
remarque non bloquante :
il y a une faille dans la lecture des parametres "avec_parametres_de_reglage_" à partir de la ligne 566 du fichier Loi_ortho3D_entrainee.cc.
Si on met un seul paramètre et que ce paramètre est juste un mot-clé, il n'est pas pris en compte.
J'ai voulu mettre "seule_deviatorique". Ce qui se passe c'est que :
1) lecture d'un mot-clé ligne 584 (variable "nom" contient "seule_deviatorique"
2) passage dans le if ligne 595 car il y a une fin de ligne eof (variable "nom" prend la valeur "fin_parametres_reglage_" car je n'ai qu'un seul paramètre)
3) ne passe pas dans le if ligne 628
4) retour au while ligne 572
=> fin de boucle
c'est non bloquant car :
on peut activer "seule_deviatorique" si on met un autre paramètre (par exemple "sortie_post_ 0") ou bien un entier bidon après seule_deviatorique (par exemple : "seule_deviatorique 1")
Mis à jour par Julien Troufflard il y a 4 mois
- Fichier ticket_379.tar ticket_379.tar ajouté
je joins un répertoire de test.
quelques remarques ci-dessous sur les lois proposées dans le .info.
J'ai testé 3 lois (toutes encapsulées dans une LOI_CONTRAINTES_PLANES) :
résultat :MAT_ortho3D : une loi ORTHOELA3D
- tourne très bien (très vite)
- fournit les coefs de poisson prévus nu12 (plan de la membrane) et nu13 (dans l'épaisseur). Dans le fichier gnu, j'ai tracé en déformation log 11-22 et 11-33. Les courbes dévissent car loi en déf Almansi mais on voit bien en petite déf que la loi fonctionne correctement
- REMARQUE : si on met nu12=0.8, le calcul ne passe pas du tout (dès le premier incrément, donc en petite déf). Pourtant, la stabilité de la loi est respectée (si je mets E1=E2=200, nu12=0.8, nu13=nu23=0.2 alors il faut avoir E3 strictement inférieur à 500, d'où le E3=499)
résultat : convergence très lente, j'imagine qu'il doit y avoir beaucoup d'itérations de contrainte plane. A éviter donc, ça ne doit pas être très bon d'associer une partie volumique isotrope avec une loi orthotrope.MAT_ortho3D_additive : une loi ISOHYPERBULK3 ajoutée à une loi ORTHOELA3D seule déviatorique
résultat :MAT_hypo_ortho3D : une loi HYPO_ORTHO3D
- tourne très bien
- donne les bons coef de Poisson sur toute la plage de déformation log imposée
- fonctionne même avec nu12=0.8 au lieu de 0.79
Mis à jour par Julien Troufflard il y a 4 mois
test avec critère pli :
- ok en traction sur un élément
- ok aussi sur un gonflage de coussin carré
c'est ok au sens où la convergence est atteinte (avec un critère d'arrêt trs honorable de 5e-4).
mais avec cependant pas mal de messages de non convergence contrainte plane double en cours de calcul
extrait 1 :
LoiContraintesPlanesDouble::Calcul_et_Limitation2_h_b(.. **erreur: la deformation eps'_I 0.56333369) est superieur a 0.5, on ne peut pas s'en servir pour mettre a jour la variation de volume
extrait 2 :
**>> non convergence sur l'algo de la resolution de (sigma.V_2=0, sigma.V_3=0), mail: 1, ele= 30, pti=2 , nb_incr_total=6, nb_iter_total=36, val obtenues: eps_P(2,2)= 0.28840284, eps_P(3,3)= -0.064309088, eps_P(1,2)= -0.38861528 precedentes: 0, 0, 0 dernier_residu: 2249.8129, 2202.4613, -60.413879 LoiContraintesPlanesDouble::Calcul_dsigma_deps (...: valeur final de h/h_0(t+dt)= 1 et de b/b_0(t+dt)= 1
Mis à jour par Gérard Rio il y a 3 mois
- Statut changé de Nouveau à En cours
- % réalisé changé de 0 à 50
j'ai essayé de reproduire le pb que tu signales dans ton premier message.
Voici la loi que j'ai utilisée:
- en fait on utilise une loi iso
- ....... loi de comportement orthotrope elastique 3D ........
- 9 parametres materiau:
- 3 modules, 3 coef de Poisson, 3 modules de cisaillement
E1= 100000 E2= 100000 E3= 100000 \
nu12= 0.3 nu13= 0.3 nu23= 0.3\
G12= 3.8462e+04 G13= 3.8462e+04 G23= 3.8462e+04
nom_repere_associe_ repere1 avec_parametres_de_reglage_
seule_deviatorique
sortie_post_ 1
type_transport_ 0
permet_affichage_ 3
fin_parametres_reglage_
#----------
ISOELAS
100000 0.3
fin_liste_lois_elementaires # ----- end of additive behaviors
Effectivement, en regardant le .BI on voit qu'il n'est pas pris en compte !
J'ai modifié l'ordonnancement et corrigé la lecture : a priori ça fonctionne
Ceci étant, la lecture c'est comme le contact, on n'est jamais sur d'avoir pris en compte tous les cas particuliers donc à tester.
Merci pour le retour (prochaine version > 7.037)
NB: concernant les non-convergences sur loi CP:
1) ça ne doit pas aider à la convergence globale !
2) comme il y a des valeurs limites sur h/h_0 et b/b_0 qu'on peut piloter, peut-être que tu peux modifier ces valeurs et dans le même ordre d'idée, le paramétrage du newton sur l'algo de CP et/ou CP2 doit jouer fortement sur la convergence... et sans doute que l'on ne peut pas adopter un paramétrage général. Car s'il existe je suis preneur pour le mettre par défaut !!!
Mis à jour par Gérard Rio il y a 3 mois
J'ai aussi fait les mêmes modifs pour les lois:
Projection_anisotrope_3D , Loi_ortho2D_C_entrainee et Hypo_ortho3D_entrainee
qui utilise le même type de lecture, et qui donc devaient présenter le même type d'anomalie (je n'ai pas vérifié!)
Mis à jour par Julien Troufflard il y a 3 mois
concernant la non convergence CP/CP2 :
c'est surtout le fait d'avoir une déformation almansi supérieure à 0.5 qui me pose question. D'où vient ce dépassement qui normalement ne devrait jamais arriver cinématiquement parlant ?
Comment régler ce pb ?
- passer par une élongation ?
- borner avec une tangente hyperbolique ?
Mis à jour par Gérard Rio il y a 3 mois
je pense que c'est normal dans un processus itératif de Newton.
- au début d'une nouvelle itération, les paramètres cibles (ici les def transversales ) sont updatés en fct de leurs précédentes valeurs + l'incrément. On peut très bien (en fonction de l'incrément) dépasser les seuils limites qui sont fixés par la physique.
En fait tout dépend du type de convergence. À chaque fois que l'on se trouve près d'une saturation, il y a toujours un risque de dépasser des seuils. C'est pour cela que j'ai mis le plus possible de paramètres de réglage et aussi de messages d'alerte.
Malheureusement je ne connais pas de méthodologie qui marche à tous les coups.
Par contre je suis bien conscient que ce n'est pas facile de se dépatouiller avec tous ces paramètres, en particulier il faut bien comprendre comment ils agissent pour espérer les manier de manière efficace.
Mis à jour par Julien Troufflard il y a 3 mois
- Fichier graphe.png graphe.png ajouté
- Fichier graphe_2.png graphe_2.png ajouté
vu pour les paramètres contrainte plane. Je pense cependant que ça se passerait mieux si le processus Newton était basé sur une grandeur non bornée (tel que : élongation ou déformation log).
Je vais maintenant aborder un aspect qui me parait vraiment important, mais pas évident à solutionner : la variation d'épaisseur dans une loi contrainte plane. Ce n'est pas hors sujet car ça concerne la loi orthoelas que je veux mettre en place.
En résumé : je veux faire une loi orthoelas avec une maitrise de l'effet Poisson au sens déformation log. Ce que l'on pourrait traduire pour un coef Poisson constant par : nu_ij = -eps_jj/eps_ii avec eps en déformation log.
Je pense déjà avoir abordé ce sujet quelque part, mais la déformation d'épaisseur (DEF_EPAISSEUR) est complètement décorrélée de l'évolution de l'épaisseur (EPAISSEUR_MOY_FINALE). Enfin, pour les lois qui dépendent d'almansi en tout cas.
ça me pose un souci, parce que ça conduit à des divergences en grande déformation. Et globalement, une évolution incorrecte de l'épaisseur, même en déformation modérée.
Je pilote mes paramètres E1, E2, nu12, etc... avec des fonctions nD pour retomber sur une courbe déformation-contrainte (non linéaire) et un effet Poisson dans la largeur et l'épaisseur (au sens déformation log).
J'y arrive pour l'instant avec des fonctions de pilotage très simple pour faire un test. C'est un début, c'est compliqué pour une loi orthoélas parce que je pilote avec EPS11, EPS12, EPS22, ce qui n'est pas pertinent (il faudrait que peut-être que j'utilise les déformations dans le repère d'anisotropie). Mais c'est encore prématuré d'en parler.
Au préalable de tout ça, j'ai l'impression que mes efforts vont être largement entravés par l'évolution anormale de l'épaisseur. Et pour illustrer ça, j'ai pris une loi isotrope almansi (ISOELAS + CP) et j'ai trouvé une bidouille (fonctions nD) qui me permet de la faire se comporter comme une loi en déformation log.
Voici le graphe de traction/compression uniaxiale que j'obtiens ci-dessous (grande déformation log dans l'intervalle [-1:1]). J'ai visé une loi E=200 et NU=0.4 en déformation log. Je pilote E et nu de la loi ISOELAS avec l'option E_fonction_nD et nu_fonction_nD.
La courbe représente la contrainte en fonction de la déformation log 11 sur l'ordonnée de gauche. Et l'ordonnée de droite sert à montrer les diverses déformations log dans la largeur et l'épaisseur.
Sur la courbe, il y a :
- carré rouge et trait plein noir (ordonnée de gauche) : la loi se comporte comme prévu. J'ai le bon module E=200.
- rond bleu et trait pointillé noir : j'ai le bon coef de Poisson NU=0.4 dans la largeur (eps22 log)
- croix rose et même trait pointillé noir : idem, c'est le bon coef de Poisson dans l'épaisseur (eps33 log) si je calcule eps33 log à partir de DEF_EPAISSEUR
- et pour finir, le résultat qui fâche! : croix jaune montre que si je calcule eps33 log dans l'épaisseur via EPAISSEUR_MOY_FINALE, je trouve un résultat parfaitement incohérent avec ce qu'utilise la loi de comportement.
En traction :
il y a un message d'erreur Herezh. C'est envoyé par la classe QuadraMemb.cc pour updater l'épaisseur (méthode CalEpaisseurMoyenne_et_transfert_pti => problème compressibilité). La variation d'épaisseur finit par bloquer à partir de eps11 log d'environ 0.2. Et le calcul finit par planter (n'atteint pas la déf log = 1.)
En compression :
le calcul tourne jusqu'au bout. Mais la variation d'épaisseur dévisse très vite (et beaucoup) du résultat attendu. Et pas que quantitativement. Qualitativement aussi : l'épaisseur diminue en compression !!!
Ce problème intervient également avec une loi orthoelas3D.
Pour remédier à ça, je me suis dit :
1) pourquoi ne pas utiliser la déf eps33 pour calculer directement l'épaisseur dans QuadraMemb.cc
j'imagine que ça ne serait pas cohérent avec la logique de ce que tu as mis en place. A savoir un mécanisme d'évolution d'épaisseur qui fonctionne pour un assemblage additif de lois (qui pourrait chacune faire remonter un eps33 différent).
2) améliorer le coef de compressibilité qui est remonté par les lois de comportement
je pense que c'est là-dessus qu'il faut jouer. Par exemple, si je prend une loi additive ISOHYPERBULK + mooney rivlin, j'obtiens ça :
si la loi fait correctement la séparation volume/forme, on peut espérer une cohérence DEF_EPAISSEUR / EPAISSEUR_MOY_FINALE sur une plage de déformation bien plus grande. ça finit par dévisser en compression, mais on est déjà rendu à -0.6 ou -0.8 de déformation de compression (qui a besoin de ça sur un élément membrane ? => pas nous en tout cas).
Donc si on rétablit le bon module de compressibilité de la loi ISOELAS et ORTHO_ELAS, alors ça devrait corriger le problème sans tout chambouler dans la méthode de calcul de l'épaisseur.
Que penserais-tu par exemple pour la loi ISOELAS de calculer le module de compressibilité en passant par la déf log par les étapes :
- calcul déf principales almansi 1, 2 et 3
- conversion de ces déf en déf log
- calcul trace déf log => tr_epsLog
- calcul trace sigma => tr_sig = sig_11 + sig_22 + sig_33
- renvoi de la valeur de K :
===> si tr_epsLog différent de 0 : K = tr_sig/(3.*tr_epsLog)
===> si tr_epsLog == 0 : K = K "almansi" (i.e le K actuellement calculé par Herezh. Peu importe, normalement, ce cas concerne les petites déf)
avant de modifier Herezh, je peux essayer de voir si ça marche en testant en dur une valeur de K dans le fichier QuadraMemb.cc, c'est-à-dire :
- reprendre mon exemple de loi log E=200, NU=0.4 => K au sens log = constante = 333.333
- mettre en dur cette valeur K au niveau par exemple de la ligne :
const double& troisK = 3. * (*lesPtIntegMecaInterne)(i).ModuleCompressibilite_const();
((( qui deviendrait : const double& troisK = 1000.; )))
- voir si l'évolution d'épaisseur redevient cohérente
qu'en penses-tu ?
Mis à jour par Julien Troufflard il y a 3 mois
- Fichier graphe_3.png graphe_3.png ajouté
pour info, c'est bien ça concernant K de ISOELAS.
Si je mets 3K = 1000. en dur ligne 2284 dans QuadraMemb.cc, j'obtiens ça :
L'évolution de l'épaisseur se recale comme il faut. Par contre, ça diverge toujours en traction (divergence exactement au même instant de chargement).
Mis à jour par Gérard Rio il y a 3 mois
j'ai l'impression que l'utilisation des def log, directement dans la loi de comp, devrait répondre à ton pb ?
a priori c'est ce que je prévois de faire à partir de mars.
D'ici là, peut-être que tu pourrais utiliser une loi hypo_ortho_3D ce qui te permettrait d'utiliser nativement des déformations cumulés log ?
Ce qui me parait étrange c'est que le module de compressibilité calculé dans la loi iso_ortho, est déterminé à l'aide d'une hypothèse log:
cf. source:
module_courant = untiers * sigBH.Trace() / (log_var_vol);
et ensuite la variation d'épaisseur est calculée à l'aide de ce module, en incrémental, en considérant une variation log !
Mis à jour par Julien Troufflard il y a 3 mois
houlà oui, tu as tout à fait raison pour la loi ortho_elas3D. C'est bien le bon module qui est remonté!! J'avais pas tracé eps33 via l'épaisseur pour cette loi et elle est conforme à DEF_EPAISSEUR.
Mais du coup, il faut appliquer ce même calcul à ISOELAS!! On voit bien que la variation d'épaisseur de cette loi est vraiment pas bonne.
Je pourrais en avoir besoin pour faire des lois non linéaires et compatible critère pli. Si ce n'est pas modifié, je peux toujours utiliser une loi orthoelas3D et la rendre isotrope, mais c'est un peu dommage.
Je ne peux pas utiliser les lois Hypo ou autre future loi Log.
Je suis obligé de passer par des lois Almansi pour avoir le critère pli.
Mis à jour par Julien Troufflard il y a 3 mois
dans ISOELAS3D, j'avais tenté un calcul de K via les valeurs propres de epsBH, puis conversion en def log. ça marchait pas mal. Mais j'ai remplacé tout ça par la méthode de orthoelas3D. ça donne pareil en plus court dans le code.
Pour info, j'ai à peu près trouvé la raison de la divergence de mon calcul en traction. En fait, pour se comporter comme une loi log, ça me conduit à avoir un nu "almansi" assez exotique. Assez tôt dans le calcul, j'ai des termes négatifs dans l'opérateur tangent d_sigma_depsHHHH. Herezh passe par le calcul de 2 coefs pour calculer le tenseur sigBH et l'opérateur tangent : coef1 et coef2.
Par exemple :
coef1 : -1025.3953
coef2 : 160.6144
d_sigma_depsHHHH 1111 : -4131.8385
d_sigma_depsHHHH 1122 : -15019.656
d_sigma_depsHHHH 1133 : -3659.5756
d_sigma_depsHHHH 2222 : -23263.207
d_sigma_depsHHHH 2233 : -6820.8096
d_sigma_depsHHHH 3333 : -1402.0724
d_sigma_depsHHHH 1212 : 723.92779
d_sigma_depsHHHH 1313 : 174.96021
d_sigma_depsHHHH 2323 : 576.88192
Le plus drôle, c'est que ça ne dérange pas trop la convergence. Le calcul avance et calcule comme il faut (ce qui donne le graphe précédent). Tout semble ok jusqu'à ce que le nu "almansi" se rapproche de 1 et que l'on ait peu à peu coef1 == coef2. Quand ces 2 coefs sont proches, il y a des termes assez petits sur la diagonale de d_sigma_depsHHHH.
C'est vraiment curieux comme histoire. bon un peu hors sujet du coup.
Mis à jour par Julien Troufflard il y a 3 mois
pour en revenir à orthoelas3D, j'ai regardé après le calcul du "module_compressibilite", comment était calculé le module de cisaillement.
dans le code il y a ce calcul de G moyen :
if ((cas_calcul == 0) || (cas_calcul == 1)) {module_cisaillement = untiers * 2. * (G12+G13+G23);}
il y aurait pas un 2 en trop ?
Mis à jour par Julien Troufflard il y a 3 mois
- Fichier find_if_Const_Petit.txt find_if_Const_Petit.txt ajouté
désolé pour les nombreux messages. S'il n'y en a qu'un seul à lire c'est bien celui-là :
il y a un problème dans le calcul de K de la loi orthoelas3D. Le test ligne 1547 du .cc pose problème :
if (log_var_vol > ConstMath::petit)
en compression, log_var_vol est négatif donc toujours inférieur à "petit" et ne passe jamais dans ce "if".
Il faut mettre une valeur absolue :
if (Dabs(log_var_vol) > ConstMath::petit)
... et voir s'il n'y a pas ce même genre de problème ailleurs dans tous les .cc.
J'ai tenté d'afficher toutes les lignes concernées dans les fichiers .cc de Herezh_dev/ (avec commande find et en filtrant les résultats où il y avait déjà Dabs())
voir pièce jointe pour avoir le listing des fichiers .cc et les lignes concernées
parmi les fichiers, il y a quelques lois de comportement dans la liste (maxwell, iso_elas_expo3D, Projection_anisotrope_3D, ...)
Mis à jour par Gérard Rio il y a 3 mois
en compression, log_var_vol est négatif donc toujours inférieur à "petit" et ne passe jamais dans ce "if".
Ah oui, je suis d'accord, j'ai modifié !!
- dans toutes les lois anisotropes, dans la loi Iso_elas_expo3D
- dans les lois de Maxwell j'ai fait une modif du même genre
version 7.039
Pour les lois isoelas classique type Hooke je conserve la compressibilité classique pour l'instant (c-a-d celle qui est définie en petite def) car isoelas linéaire avec Almansi est clairement une loi qui n'a pas pour vocation de modéliser les grandes déformations. Lorsque j'aurai la version log avec un opérateur tangent efficace (ce qui n'est pas le cas actuellement, mais ce sera le cas courant 2025 normalement) je pourrai mettre en log un calcul avec les volumes. C'est un peu incohérent avec les lois anisotropes, mais pour l'instant je laisse comme cela.
NB:J'avais introduit à un moment le calcul avec variation de volume et cela a posé des pb (je ne me rappelle plus lesquels) du coup je suis revenu à la def classique:
Pour mémoire j'ai écrit dans le code:
// -- calcul des modules
// 22 fev 2019 ** non, en fait on a tendance à utiliser le module sécant du coup, c'est le module de compressibilité
// habituelle qui correspond, donc on revient à la forme générique cf. doc,
// // on n'utilise plus la forme linéaire, mais à la place la variation relative de volume
// // constaté, au sens d'une mesure logarithmique, sauf dans le cas où cette variation est trop petite
// //module_compressibilite = E/(3.(1.-2.*nu));
// // calcul de la valeur de la variation relative de volume en log
// double log_var_vol = log(()/((ex.jacobien_0)));
// if (log_var_vol > ConstMath::petit)
// {module_compressibilite = sigBH.Trace() * untiers / log_var_vol;}
// else // si la variation de volume est trop faible on passe par la formule traditionnelle
Mis à jour par Julien Troufflard il y a 3 mois
en fait ce calcul de K via ln(V) pose problème si ce K est utilisé pour autre chose que la variation d'épaisseur. Je pense au calcul du pas de temps critique par exemple, ou bien peut-être le contact (qui requiert un module K je crois ?), c'est-à-dire en général tout endroit du code qui demande une caractéristique mécanique réelle.
Il y a des cas de chargement pour lesquels le calcul K= trace(sig)/(3ln(V)) ne donne pas la caractéristique réelle du matériau. Par exemple, si sigBH a une trace nulle (cas du cisaillement simple), on obtient K = 0. Ce qui n'est pas la réalité du matériau, mais pour la variation d'épaisseur, c'est exactement ce qu'il faut renvoyer pour obtenir une non-variation d'épaisseur en cisaillement simple.
C'est un peu comme si ce calcul de K via ln(V) devait être stocké dans une variable séparée, bien distincte avec un nom qui va bien. Et ensuite, utiliser cette variable uniquement pour la variation d'épaisseur.
Pour ce qui est de laisser ISOELAS en l'état, pourquoi pas, même si je ne comprends pas ce choix.
Pas de problème puisque je peux utiliser ortho_elas3D pour faire une loi isotrope.
Mis à jour par Gérard Rio il y a 3 mois
C'est un peu comme si ce calcul de K via ln(V) devait être stocké dans une variable séparée
oui, et il y a aussi le choix entre K tangent et/ou K sécant, et... le calcul d'un G matériau pour l'intégration dans le calcul du pas critique: c'est dans un coin de ma tête
bon... en attente
Mis à jour par Julien Troufflard il y a 3 mois
j'ai poursuivi l'écriture de ma loi ORTHO_ELAS3D avec la nouvelle version.
J'obtiens exactement ce que je veux en traction (contrainte non linéaire, coef poisson constant au sens log dans la largeur et l'épaisseur).
Mais ça ne passe pas en compression à cause de la variation d'épaisseur (module 3K inférieur à delta trace de sigma).
à propos de ce bout de code du .cc de la loi ortho_elas :
double log_var_vol = log((*(ex.jacobien_tdt))/(*(ex.jacobien_0))); // pour le module de compressibilité, choix entre les différents cas if ((cas_calcul == 0) || (cas_calcul == 2)) {if (Dabs(log_var_vol) > ConstMath::petit) {module_compressibilite = untiers * sigBH.Trace() / (log_var_vol);}
il s'agit bien là du module sécant Ks ?
Tandis que la variation d'épaisseur requiert un module tangent Kt avec par exemple cet extrait du .cc membrane quadrangle (quadramemb) :
{if (atdt) {double epaisseur_moy_tdt = (epaisseur_moy_t * jacobien_moy_ini) / jacobien_moy_fin * troisK_moy / (troisK_moy - traceSig_moy+traceSig_moy_ini);
je me demande :
1) pourquoi est-ce que ça marche quand même en traction ?
2) pourquoi ça passe pas en compression ?
Mis à jour par Julien Troufflard il y a 3 mois
je viens de comprendre pour mon pb en compression.
Il reste ma question qui concerne traction et compression :
pourquoi ça fonctionne avec un Ks alors que la méthode de variation d'épaisseur dans quadramemb demande un Kt ?