Assistance #223
Calcul avec contact 4 et penalisation 8
Description
Gérard,
J'ai un cas BSO élémentaire (maillage 20x1) dans lequel j'ai ajouté de éléments hexaèdre pour représenter la symétrie. Ces éléments sont mobiles via une fonction 1D pour être hors champ lors du déploiement. A t=2 ils sont positionnés correctement.
J'ai conservé les CLL sur les nœuds des cotés sauf sur les 2 nœuds du pôle nord qui sont déclarés en contact avec chacune une face des hexaèdres.
Ce cas tourne parfaitement et très rapidement avec le contact type 2 avec pénalisation 1. Lorsque j'utilise le contact 4 avec pénalisation 8 Herezh plante lorsque les faces rentrent en contact (INC 3). Je maitrise pas encore tous les paramètres...
Merci de jeter un œil pour voir s'il n'y a pas un pb coté Herezh et pour me donner quelques conseils pour piloter au mieux ce contact nouveau.
Frank
Fichiers
Mis à jour par Gérard Rio il y a presque 5 ans
- Fichier modele_deplace.mov modele_deplace.mov ajouté
- Fichier modele.info modele.info ajouté
- Fichier sortie.log sortie.log ajouté
- Fichier modele.CVisu modele.CVisu ajouté
- Statut changé de Nouveau à En cours
- % réalisé changé de 0 à 50
Bonjour, Frank, j'ai mis un petit moment (!) à répondre because cela a nécessité un peu de réflexion !
Bilan:
- au début du calcul Herezh signale des noeuds à masse nulle. En fait, il s'agit des noeuds des plans fixés qui servent pour le contact. Ces plans n'interviennent pas dans calcul de la raideur, car ils ont une loi rien3D. Du coup, comme la pseuso-masse est calculée ici en fonction de la raideur, c'est normal qu'aucun calcul de masse ne soit possible.
. le pb est que le message d'erreur n'était pas très lisible, car il définissait un numéro de noeud erroné et sans numéro de maillage associé.
-> j'ai modifié et maintenant, on a le bon numéro de noeud et de maillage ... ce qui est quand même le minimum pour un bon message !
. même si ces masses nulles n'ont pas d'importance dans ce calcul, ce commentaire me perturbait, j'ai donc mis, dans la mise en données (modele.info) des masses ponctuelles arbitraires de 1. sur ces noeuds -> plus de messages. Mais cela ne change pas le calcul.
- dans le cas d'un restart: .il y avait un pb de dimensionnement de vecteur intermédiaire -> réparé . un pb de définition du facteur de pénalisation tangentielle: il était réinitialisé à la même valeur que celui de pénalisation normale -> réparé, du coup on a bien des efforts tangentiels nuls
- Dans le type de calcul que tu proposes, je pense qu'il faut utiliser un contact collant, ce qui permet d'imposer le noeud sur la surface de contact, quelque soit sa position dans ou hors surface: -> donc au lieu de "zone_contact" j'ai mis "glue_contact"
- au niveau des paramètres de contact, voici les paramètres que j'ai utilisés:
para_contact ----------
CONTACT_TYPE 0#2# 0 jusqu'au temps 1s puis 2 ensuite
TYPE_PENALISATION_PENETRATION 8 # impose et est cohérent avec le type collant, PENALISATION_PENETRATION 0.01 # arbitraire
PENETRATION_CONTACT_MAXI 0.1 # arbitraire
FCT_ND_BASCUL_CONTACT_TYPE_4 f_ct4 # ne sert pas ici
NB_DECOLLEMENT_MAXI 10000 # pas de décollement
DISTANCE_MAXI_AU_PT_PROJETE 20. # pour que les contacts initiaux soient bien pris en compte
PENALISATION_TANGENTIELLE 0. # pas de force tangentielle
TYPE_PENALISATION_TANGENTIELLE 8 # ne sert donc à rien
NIVEAU_COMMENTAIRE_CONTACT 3#3#7 pour comprendre ce qui se passe ...
- le choix: TYPE_PENALISATION_PENETRATION 8
fait que le facteur de pénalisation final, utilise la raideur du volume maître, du coup, j'ai changé la loi de comportement du matériau des plans de contact -> pour_solide_en_contact ISOELAS
1.8830e+1 3.0000e-01
la valeur est arbitraire, en fait elle se combine avec PENALISATION_PENETRATION (cf. doc), en regardant les résultats on voit son influence sur la force normale, par exemple : contact: reaction ==> F_N max 1.10777 F_T max 0, maxi gap_N : -0.000108622 gap_T : 33.7168
Du coup cela supprimerait également les masses nulles ... bon j'ai laissé mes masses additionnelles !
- l'introduction du contact à tendance à diminuer la stabilité, du coup dans la phase de contact je suis passé à un lambda arbitrairement de 5.
bon, c'est surement possible d'optimiser, mais je n'ai pas cherché.
- on obtient au finale:
INCREMENT DE CHARGE : 1 intensite 1 t= 0.5 dt= 0.5 ... convergence en 3234 iterations
INCREMENT DE CHARGE : 2 intensite 1 t= 1 dt= 0.5 ... convergence en 26 iterations
INCREMENT DE CHARGE : 3 intensite 1 t= 2 dt= 1 contact: reaction ==> F_N max 3.31591 F_T max 0, maxi gap_N : -0.000325141 gap_T : 33.7181 ... convergence en 1002 iterations
donc on a une pénétration de 0.3 mm avec une force de réaction de 3N
Je joins:
- une petite vidéo qui montre le déplacement des noeuds en contact, au début des itérations de contact,
- la mise en donnée finale
- le fichier log correspondant
La nouvelle version 6.930 intègre les changements que j'ai mentionnés, donc à utiliser avec la mise en données que je joins
Mis à jour par Frank Petitjean il y a presque 5 ans
Bonjour Gérard,
Merci pour ce premier test/débogage, je comprends que cela t'ai demandé du temps...
Je n'ai pas encore bien compris ta solution mais la vidéo est parlante !
Deux questions :
1. la progressivité de la condition limite (c'est ce qui est recherché ici en remplacement des CLL) est donc assurée par le déplacement des volumes de contact et non par une évolution de la force de pénétration. Est-ce bien cela ? Il faut donc régler au mieux ce déplacement pour favoriser la convergence...
2. Dans le modèle BSO standard il y a des nœuds qui se trouvent à l'intérieur du secteur angulaire. C'est pour cette raison qu'en appliquant les CLL il y apparition de contraintes orthoradiales. Est-ce ces nœuds vont être projetés sur la surface de contact bien qu'ils soient hors du volume ?
Merci
Frank
Mis à jour par Gérard Rio il y a presque 5 ans
*"1. la progressivité de la condition limite (c'est ce qui est recherché ici en remplacement des CLL) est donc assurée par le déplacement des volumes de contact et non par une évolution de la force de pénétration. Est-ce bien cela ?"
-> les deux sont possibles, mais en fait ici on a tout d'abord un déplacement du solide, et c'est ensuite l'équilibre (donc les déplacements des noeuds en contact) qui se met progressivement en place contrairement à une CLL, pour laquelle le déplacement des noeuds du bord, est imposé dès les premières itérations
" Il faut donc régler au mieux ce déplacement pour favoriser la convergence..."
-> en fait on pourrait également jouer sur le facteur de pénalisation... je pense qu'il faut sans doute essayer et adapter ??
"2. Dans le modèle BSO standard il y a des nœuds qui se trouvent à l'intérieur du secteur angulaire. C'est pour cette raison qu'en appliquant les CLL il y apparition de contraintes orthoradiales. Est-ce ces nœuds vont être projetés sur la surface de contact bien qu'ils soient hors du volume ?"
-> seules les noeuds qui ont été définis dans les zones possibles de contact, sont pris en compte comme candidat potentiel au contact. En fait (cf. doc), dès que l'on définis des zones de contact possible, cela restreint la recherche du contact (donc cela diminue les temps de recherche) et cela permet de contrôler le contact que l'on désire.
Donc ici, les noeuds ne seront jamais en contact, quelque soit leur position.
Mis à jour par Frank Petitjean il y a presque 5 ans
Ok pour la question 1, il y a un travail d'optimisation à faire, et c'est mon job ;-)
Pour la question 2 je ne suis pas encore assurer de la réponse. Pour les besoins du test j'ai volontairement limité la recherche de contact. Pour le modèle standard je compte bien sûr définir des zones de contact contenant les nœuds des bords, chaque bord avec le volume correspondant.
Est-ce que dans ce cas les nœuds appartenant aux zones de contact mais extérieurs au volume seront considérés comme devant être en contact ?
Mis à jour par Gérard Rio il y a presque 5 ans
oui avec le contact collant, à condition que la distance ne soit pas trop grande c-a-d > à DISTANCE_MAXI_AU_PT_PROJETE. Si la projection est > le contact n'est pas pris en compte.
Il faut donc regarder ce paramètre. Par contre s'il est trop grand, il y a le risque de considérer le contact avec l'arrière des plans de contact. Mais en restreignant le plan de contact (dans "glue_contact) on évite le pb.
Ensuite on peut également jouer sur PENETRATION_BORNE_REGULARISATION et PENETRATION_CONTACT_MAXI pour avoir une pénalisation qui diminue à mesure que la pénétration diminue (cf. doc), mais c'est du réglage fin.
Mis à jour par Frank Petitjean il y a presque 5 ans
Gérard,
Je fais des tests avec le modèle élémentaires de contact pour bien comprendre ce qu'il se passe (d'un point de vue utilisateur).
Si les plans de contact mobiles sont déplacés au temps t=0 j'ai le même résultat que s'ils sont déplacés au début du contact (t=2), comme dans le modèle initial.
Si les plans sont positionnés à leur bonne place dans le .info (j'ai pour cela enlevé les cartes translation dans la définition des def_mouvement_solide_initiaux_), j'ai le warning attendu :
attention, noeud esclave dans elem. avant incre. 1 charge
Par contre la convergence est plus lente (itérations +20%) et les nœuds ont davantage pénétré dans les solides.
As-tu une explication à ce phénomène ? Pas de problème pour démarrer le calcul avec les plans hors ballon mais j'aimerai comprendre...
Sinon le cas tourne bien maintenant, merci. J'espère que sera aussi le cas avec tous les nœuds des bords en contact !
Frank
Mis à jour par Gérard Rio il y a presque 5 ans
peut-être une explication pour la vitesse de convergence: le fait d'avoir du contact diminue la stabilité d'une manière générale car les éléments de contact ont une raideur qui n'est pas forcément du même ordre que celle des éléments finis. Du coup il faudrait un lambda plus grand pour avoir une stabilité analogue.
La relaxation dynamique avec amortissement cinétique a de son coté, tendance à stabiliser la convergence. Ce qui fait que même avec un lambda non optimum, on arrive quand même à converger, ce qui serait le cas avec du contact. Il est possible qu'avec un lambda plus grand la convergence soit meilleurs !
Pour la pénétration, cela m'étonne ... les éléments qui pilotent étant la pénétration maxi, la régularisation et la raideur de l'élément maître, qui a priori sont les mêmes ???
Mis à jour par Frank Petitjean il y a presque 5 ans
Bonjour Gérard,
J'ai mis en place le contact sur l'ensemble du ballon et cela fonctionne bien même pour la loi HE pour un petit maillage (40x2). Je test actuellement sur un maillage plus important (60x4).
Le problème n'est pas simple pour Herezh car le contact doit à la fois repousser les noeuds qui sont à l'extérieur du secteur angulaire, ce qui demande très peu de force, et à attirer ceux qui se trouvent initialement à l'intérieur, ce qui demande une force normale importante.
Avec un facteur de pénalisation (PENALISATION_PENETRATION) à 0.01 la mise en contact des noeuds aux pôles reste selon moi un peu trop brutale (5 itérations) et les éléments sont un peu trop malmenés, ce qui n'est pas favorable pour la loi HE. Pour autant ce facteur n'est pas suffisant pour obtenir la bonne valeur de contrainte orthoradiale. Même en diminuant le gap (PENETRATION_CONTACT_MAXI) d'un facteur 10 il reste encore un écart entre les noeuds et les faces de solides. La contrainte ortho augmente mais pas suffisamment. J'ai donc fait le choix d'activer les CLL après la phase de contact. Du coup je peux me contenter d'un contact "mou" avec gap de 0.1 et un facteur de pénalisation de 0.001. Il n'y a pour l'instant aucun problème de stabilité (lambda à 0.554). Les CLL n'ont plus ensuite qu'à assurer la condition cinématique, ils sont fait pour ça, et cela demande très peu d'itérations !
Cette combinaison fonctionne donc très bien puisque contact et CLL jouent leur rôle au mieux : force pour plier délicatement le maillage au pôles et condition cinématique pour la précision de la position.
Voici maintenant l'enchainement du calcul :
inc1 : déploiement en ISOELAS2D_C
inc2 : passage à la loi 2 (HE) + critère plis (quelques dizaines d'itérations suffisent)
inc3 : activation du contact (étape la plus couteuse)
inc4 : contact à 0 et activation CLL
Si le calcul en cours sur le BSO 60x4 avec loi HE se passe bien je mettrai à jour Omher avec cette nouvelle stratégie.
Merci Gérard pour tous tes développements, on avance :-)
Frank
Mis à jour par Gérard Rio il y a presque 5 ans
Bonjour Frank,
c'est vraiment une bonne idée d'induire une position approchée avec le contact, puis ensuite d'imposer une position exacte via une CLL !!
On croise les doigts pour que cela fonctionne avec un maillage dense !!
Mis à jour par Frank Petitjean il y a presque 5 ans
Tu peux décroiser les doigts Gérard (ce qui est plus pratique pour taper sur un clavier !) le cas 60x4 est passé comme une lettre à la poste et avec une précision de 1e-3 ! Mais il s'agit de la loi IE.
Voici le détail du nombre d'itérarions :
inc1 : 12996, lambda 0.6
inc2 : 14502 (contact + pli), lambda 2
inc3 : 1422 (CLL), lambda 2
Il y a seulement 106 relaxation au total, ce qui montre que l'algo est stable. Note le faible nombre d'itérations avec les CLL.
Le cas avec une loi HE est plus problématique. J'ai dû augmenter le lambda à 4. La norme de convergence oscille pas mal. Le calcul patine à l'inc2 (contact). A l'itération 22000 le calcul a atteint la convergence fixée à 1e-3 :
- E_cinetique/E_statique_ET_Res/Reac_et_Fext --> 0.000912724
mais il ne s'est pas arrêté !!! Pourquoi ?
Vu les oscillation de la norme je pense qu'un petit coup de viscosité serait le bien venu. Ce calcul est un bon candidat pour tester l'intérêt des algo combinés.
Le cas avec loi HH a entrainé une erreur sur le calcul du module de compressibilité, je l'ai repris avec une pénalisation plus faible.
A suivre...
PS. Heureusement que nous sommes en hiver car mes 2 ordi tournent h24 !
Mis à jour par Gérard Rio il y a presque 5 ans
bonnes nouvelles !!
- le calcul ne s'arrête peut-être pas car comme tu es en:
ARRET_A_EQUILIBRE_STATIQUE_ 2
c'est le critère en déplacement qui n'est pas encore satisfait
max_deltaX_pourRelaxDyn_ 0.1
??
oui, la viscosité est vraiment adapté pour stabiliser les contraintes, ensuite l'implicite donne le coup de grâce !!
@voire avec Hugo !
NB: c'est vrai que j'ai vue des ordi loués pour chauffer des appartements !! c'est une idée ....
Mis à jour par Frank Petitjean il y a presque 5 ans
Merci pour ce rappel Gérard. J'utilise en effet la valeur par défaut max_deltaX_pourRelaxDyn_ 0.1
Mais ce cas de non arrêt ne c'était encore jamais présenté. Est-ce que la norme infini sur l'écart de déplacement entre 2 itérations est relatif ou absolu ? S'il est absolu, et vu la taille du ballon et les grands déplacements, j'ai peut-être intérêt à augmenter cette valeur à 0.5 par exemple.
Qu'est-ce que tu en penses ?
Mis à jour par Gérard Rio il y a presque 5 ans
oui c'est une norme absolue ! c'est donc directement dans l'unité que tu utilises.