Assistance #335
Lois de comportement ORTHOELA2D_C et fonctions nD
Description
Bonjour Gérard,
Dans mon modèle axi de BSO je cherche à faire dépendre les coefficients d'une loi ORTHOELA2D_C d'une fonction nD pour obtenir un comportement non linéaire de type ISO_ELAS_ESPO1D (modèle non linéaire des rubans proposé par Julien).
J'y arrive dans le cas d'un cylindre (en axi) et avec une fonction nD de la forme :
- Fonction raideur ruban
f_E_ruban FONCTION_COURBE1D
courbe= f_eps_loi1D
un_argument= EPS22
fin_fonction_courbe1D_
où f_eps_loi1D et la loi 1D non linéaire identifiée par Julien.
La fonction nD intervient dans la loi de comportement :
loi_film ORTHOELA2D_C
E1= E1_fonction_nD: f_E_ruban
.....
J'ai besoin de complexifier cette dépendance pour 2 raisons :
1. Le repère d'orthotropie (repère local de l'élément) ne coïncide pas avec le repère global du tenseur EPS, il faudrait remplacer la variable EPS22 par Almansi_local11. Cela n'est pas accepté par Herezh, pourquoi ?
2. La proportion de ruban par rapport au film dans la largeur du fuseau est variable.
J'ai essayé de construire une unique fonction nD f_E_ruban de type FONCTION_EXPRESSION_LITTERALE_nD. La dépendance avec les composantes du vecteurs normal N_surf_1,... est possible mais les composantes globales et/ou locales du tenseur des déformations (Almansi) ne sont pas acceptées. Est-ce une limitation actuelle de Herezh ou une impossibilité de principe ?
Est-ce que la grandeur Almansi_local11 est bien la composante locale du tenseur d'Almansi ? Dans ce cas elle devrait dans mon cas coïncider avec EPS22, ce qui n'est pas le cas (voir le fichier .Maple).
Ci-joint mon cas test élémentaire à 1 élément axi.
Merci d'éclairer ma lanterne !
Frank
Fichiers
Mis à jour par Gérard Rio il y a plus d'un an
- Statut changé de Nouveau à En cours
j'ai commencé à regarder ...
- les grandeurs disponibles pour les fct nD sont effectivement restreintes par rapport à l'ensemble des grandeurs dispo pour la sortie en post-traitement mais suivant les grandeurs, ce n'est pas définitif.
à suivre
Mis à jour par Frank Petitjean il y a plus d'un an
Merci Gérard pour ta réponse. Après pas mal d'essais j'ai fini par comprendre qu'en effet toutes les variables n'étaient pas disponibles... C'était déjà le cas pour les lois hyperélastiques et tu avais pu y remédier.
Ça m'intéresse vivement si tu peux ajouter au moins les variables contraintes et déformations locales aux éléments. Si ce n'est que les variables globales je peux toujours les projeter dans le repère local si les composantes n_surf sont accessibles.
Frank
Mis à jour par Gérard Rio il y a plus d'un an
- le calcul est axisymétrique avec un élément 1D qui génère donc une surface par rotation: il s'agit donc d'une membrane.
Le repère ad hoc qui est utilisé dans ce cas, est construit à partir de la normale puis de la projection de l'axe 1 sur la membrane ce qui détermine la première direction, et la seconde est obtenue avec les deux premières (projection et normale) cf. doc : chap. 88.12
Donc c'est normal que eps22 représente la déformation suivant l'axe de l'élément 1D
- Almansi_local11 correspond à la déformation d'almansi exprimée dans le repère dual local \vec g^i: effectivement elles ne sont pas dispo directement pour l'utilisateur dans le cas d'une fct nd au niveau de la loi de comp, mais a priori ce n'est pas cette grandeur qui t'intéresse, car pour l'utiliser il faut également que tu disposes du repère dual !! (à moins que je n'ai pas compris ta demande ...).
En fait les def d'Almansi en orthonormé local ad hoc correspondent directement aux epsij : en général ce ne sont pas les def dans le repère global !
Actuellement c'est les seules composantes directement accessibles, car j'ai supposé que c'était celles pertinentes pour l'utilisateur (je n'ai peut-être pas fait le bon choix !!)
Mis à jour par Frank Petitjean il y a plus d'un an
Ok, merci pour cette précision concernant le repère global. Donc d'après la doc (chap. 88.12), si je veux m'assurer de l'orientation du repère local il me faut tester la valeur du produis scalaire n_sur dot x1. S'il est nul alors c'est bien eps22 qui représente la déformation dans la direction n1-n2 de l'élément avec n1, n2 les 2 noeuds de l'élément ligne. Sinon c'est EPS11 comme je le pensais initialement.
Tu confirmes aussi que les composantes EPS (= Almansi) sont bien dans le repère ad hoc ?
Tu écris "Actuellement c'est les seules composantes directement accessibles". Tu fais allusions aux composantes EPS et pour la version 7.003 de Herezh ou viens-tu d'ajouter ces variables dans une nouvelle version ?
Frank
Mis à jour par Gérard Rio il y a plus d'un an
"Ok, merci pour cette précision concernant le repère global. Donc d'après la doc (chap. 88.12), si je veux m'assurer de l'orientation du repère local il me faut tester la valeur du produis scalaire n_sur dot x1. S'il est nul alors c'est bien eps22 qui représente la déformation dans la direction n1-n2 de l'élément avec n1, n2 les 2 noeuds de l'élément ligne. Sinon c'est EPS11 comme je le pensais initialement."
oui
"Tu confirmes aussi que les composantes EPS (= Almansi) sont bien dans le repère ad hoc ?"
oui
"Tu écris "Actuellement c'est les seules composantes directement accessibles". Tu fais allusions aux composantes EPS et pour la version 7.003 de Herezh ou viens-tu d'ajouter ces variables dans une nouvelle version ? "
non, ce n'est pas un ajout récent
Mis à jour par Frank Petitjean il y a plus d'un an
Gérard,
Tout est ok pour moi. Il y avait une erreur dans ma fonction nD que j'ai mal interprétée : les composantes EPS sont bien accessibles dans les fonctions nD qui pilotent les modules des lois de comportement (ce que tu m'as dit et redit !). Désolé pour ce faux problème !
Ce ticket m'a aussi été utile en pointant sur le chapitre 88.12 et la façon de choisir la bonne composante de EPS pour mon problème. Je peux maintenant inclure la loi non linéaire des rubans BSO dans le nouveau modèle axi qui est beaucoup plus rapide et aussi précis sur sur les grandeurs globales que le modèle 3D. Il sera inclus je pense dans la prochaine version de Omher.
J'ai développé un script Python pour déterminer l'altitude (donnée d'entrée du calcul) pour une masse nacelle donnée (sortie normal du calcul). Une simple méthode de Newton (module Python) permet de résoudre ce problème inverse.
Merci pour ton aide,
Frank
Mis à jour par Gérard Rio il y a plus d'un an
- Statut changé de En cours à Résolu
merci pour ton retour,
je ferme le ticket