Module FEM et analyse avec contacts entre pièces

Forum destiné aux questions et discussions en français
Forum rules
Be nice to others! Read the FreeCAD code of conduct!
User avatar
-alex-
Veteran
Posts: 1861
Joined: Wed Feb 13, 2019 9:42 pm
Location: France

Re: Module FEM et analyse avec contacts entre pièces

Post by -alex- »

-alex- wrote: Sun Jun 23, 2019 9:30 am
flachyjoe wrote: Sat Jun 22, 2019 7:39 pm Salut,
pour info il y a un paramètre "Number of CPU's to use" dans l'onglet CalculiX des préférences FEM.
Merci pour l'info, je crois que j'avais vu l'option dans le temps mais j'avais complétement oublié.
Quand j'augmente le nombre de CPU à 2 il n'y pas de changement, je veux dire que Calculix indique dans son rapport qu'un seul CPU est utilisé. Par contre le temps de calcul est un peu augmenté. Es-ce que c'est mon pc (x86 win10 Intel core 2duo T9300 2 coeurs 2,5GHz) qui n'est pas adapté?...
Du coup je n'ai jamais poussé plus loin la chose. Si certains d'entre vous on fait des comparaisons sur des modèles un peu gros, ça peut être intéressant à savoir.
Du coup j'ai cherché un peu plus sur le forum et évidement il y avait des infos :oops:
Dans ce post notament, ouvert par un certain flachyjoe ;) :
https://forum.freecadweb.org/viewtopic.php?f=18&t=30423
Et dans celui ci j'ai trouvé la solution à mon problème:
https://forum.freecadweb.org/viewtopic. ... 20#p151713
en rentrant donc le code de fandal dans la console, Calculix me retourne bien "jusqu'à 2CPU utilisé":

Code: Select all

import multiprocessing
import os
cpu_cores = multiprocessing.cpu_count()  # this finds number of your CPUs and use them all
os.putenv('OMP_NUM_THREADS', str(cpu_cores))
En revanche l'option dans les préférences FEM n'a aucun impact, que ce soit sur mon PC WIN X86 ou sur une autre machine WIN X64 ...
Concernant le gain de performance c'est plutôt mitigé, parfois le temps de calcul est plus long, souvent à peine plus court. Il me semble que plus le calcul est lourd plus ça vaut le coup, mais pas sure.

Par exemple pour le modèle "lamelles":
- 1 CPU: 606.5sec
- 2 CPU: 585sec

A fouiller un peu plus....
User avatar
-alex-
Veteran
Posts: 1861
Joined: Wed Feb 13, 2019 9:42 pm
Location: France

Re: Module FEM et analyse avec contacts entre pièces

Post by -alex- »

Je reviens sur le sujet de départ, les modèles multi-solides avec contacts.
D'ailleurs je dois faire une précision, dans le premier post j'ai parlé de modèles volumique, surfacique ou poutre (filaire). Je parlais en général, car pour les contacts seul les faces appartenant à des solides sont supportées (ou alors je ne sais pas faire). Avec un modèle surfacique vous aurez un message d'erreur du type:

Code: Select all

*ERROR in allocont: master surface IND1 
does not exist or does not contain 
element faces
Ici je joins un modèle composé d'une barre sur laquelle tire un crochet en tôle pliée. La barre est en flexion pure car j'ai appliqué dans ses trous un blocage d'axe X puis une transformation de contrainte cylindrique. Après transformation cylindrique le choix du blocage des trous suivant l'axe X revient à bloquer radialement chaque trou, c'est à dire à en faire des pivots d'axe Z. Plus de détail ici:
https://forum.freecadweb.org/viewtopic.php?f=18&t=17127
Retenez que la tranformation cylindrique donne:
- pour un blocage en X -> un blocage radial
- pour un blocage en Y -> un blocage tangantiel
- pour un blocage en z -> un blocage axial

Place à l'image de la barre fléchie par contact du crochet (contact surface-to-surface, sans friction):
FEM-contact-barre-flexion.png
FEM-contact-barre-flexion.png (81.86 KiB) Viewed 2077 times

Donc si vous remplacez la contrainte de blocage en X dans le modèle par un blocage en Y vous observerez un blocage tangentiel des trous et une déformée de barre différente. Si vous bloquez Z alors le blocage transformé sera axial dans les trous et vous n'aurez pas de résultat exploitable puisque la barre ne sera plus bloquée dans le plan XY.

Ci-dessous le fichier purgé de son maillage et de ses résultats:
Attachments
FEM-contact-barre-flexion-meshsuppr.FCStd
(54.6 KiB) Downloaded 82 times
User avatar
-alex-
Veteran
Posts: 1861
Joined: Wed Feb 13, 2019 9:42 pm
Location: France

Re: Module FEM et analyse avec contacts entre pièces

Post by -alex- »

Je termine ce sujet en détaillant l'influence de la qualité du maillage sur les résultats, qui peut être grande.


Un maillage (rappel: du 1er ordre) trop grossier peut produire des résultats faux ou un message d'erreur du solveur (pas de convergence).

Ci-dessous un modèle composé de 2 blocs percés et reliés par un boulon monobloc, une face du bloc inférieur est fixée et un déplacement de +2mm en Z est imposé à une face du bloc supérieur:
FEM-contact-modele-blocs-boulon-traction-flexion.png
FEM-contact-modele-blocs-boulon-traction-flexion.png (54.69 KiB) Viewed 2019 times



L'image ci-dessous montre la déformée (x40) et les valeurs de contrainte obtenues avec un maillage assez grossier aux zones de contact:

FEM-contact-maillage-grossier-erreur.png
FEM-contact-maillage-grossier-erreur.png (188.98 KiB) Viewed 2019 times
On voit sur ce modèle que la déformation n'est pas réaliste au niveau des trous, la matière est éloignée du boulon et celui-ci est comprimé alors que c'est un étirement oblong du trou avec compression d'un coté et décollement de l'autre qui devrait être constaté.


Ci-dessous l'image du même modèle avec un maillage affiné dans les régions de contact seulement, cette fois la déformée (x40) est réaliste et les valeurs de contraintes sont bien moins élevées que précédemment:
FEM-contact-maillage-region-OK.png
FEM-contact-maillage-region-OK.png (187.19 KiB) Viewed 2010 times

D'une façon générale il faut toujours veiller à ce que la déformation du modèle soit réaliste. Lorsque le maillage est trop grossier il peut se produire des déformations irréalistes ou des attachements entre noeuds avec des pics numériques.
Si le modèle est complexe, avec un grand nombre d'éléments (de maillage), il peut s'avérer long est délicat de trouver la source du problème.
Dans de tel cas, préparez soigneusement votre modèle, coupez les surfaces des zones de contact afin de bien les délimiter et d'y affecter plus facilement une région de maillage. Pour cela usez et abusez de la fonction Part->XOR et d’esquisses sur les faces concernées. Ainsi votre maillage sera fin aux zones de contact ou dans les zones complexes et à détailler, sans pour autant atteindre un nombre total d'éléments qui conduirait à un calcul très long ou une saturation de la mémoire machine (pour rappel seuls les éléments volumiques sont utilisables dans une analyse avec contacts, donc le nombre d'éléments tétraédriques augmente vite sur les gros modèles et une taille de maillage optimisée au plus juste peu s'avérer nécessaire).

Une façon de cibler les zones à problème, si le solveur a tout de même réussi:
- créez un filtre VTK ImageFEM_PostPipelineFromResult
- puis créez un ImageFEM_PostCreateWarpVectorFilter avec une grande amplification de déformation sur les contraintes, vous verrez mieux les déformations irréalistes
- enfin, utilisez éventuellement le filtre scalaire ImageFEM_PostCreateScalarClipFilter réglé sur contraintes VonMises et ajustez le curseur pour isoler les éléments de contrainte élevés où se situent les pics numériques. Ainsi vous verrez parfois un/des nœud(s) soudé(s) qui ne devrait pas l'être. Supprimez les résultats, affinez le maillage localement, puis relancez le solveur.

Remarque: si vous modifiez votre modèle 3D en cours d'analyse et que de nouvelles faces sont créées (avec Part->XOR par exemple), votre analyse aura des erreurs à cause du problème actuel de nommage topologique. Il vous faudra sans doute ré-affecter vos faces de chargement, faces de contacts et conditions aux limites, ou bien refaire l'analyse. Il est donc important d'anticiper tous ces points pour préparer son modèle le mieux possible avant de créer l'analyse. Avec la pratique ça devient plus ou moins naturel :D

Si vous avez un doute sur les valeurs obtenues pour un ensemble de pièces, isolez une pièce (la pièce que vous estimez critique), faites une analyse "simple" (sans contacts, sur solide unique), avec des conditions aux limites les plus réalistes et proches possible du modèle multi-solides, en lui appliquant des efforts obtenus avec un calcul analytique sommaire (ou statique graphique), et comparez les résultats aux abords des zones en contact.
Une autre façon de vérifier un modèle défaillant, par exemple, est de supprimer tous les contacts, lancer le solveur, vérifier que les résultats sont obtenus sans message d'erreur. Puis commencer à ajouter progressivement des contacts le long de la chaine cinématique. Relancer le solveur, etc... procéder ainsi par itérations successives jusqu'à trouver la zone qui fait échouer le solveur et essayer de trouver une solution au problème (en ajoutant des conditions aux limites pour stabiliser le modèle par exemple).

Pour conclure: j'ai dit ce que je pouvais concernant les analyses avec contacts sur modèles multi-solids avec Calculix, dans la limite de mes connaissances.
Pour les novices je me répète: ayez toujours un regard critique sur les résultats obtenus, surtout si votre modèle a un caractère structurel et/ou qu'il y a un risque pour les personnes :!:
Ritchy76
Posts: 9
Joined: Sat Dec 21, 2019 7:37 am

Re: Module FEM et analyse avec contacts entre pièces

Post by Ritchy76 »

Bonjour,

J'hésitais à faire un nouveau poste ou écrire ici. Bref, je n'arrive pas à créer les contacts.

Pour info, je démarre tout juste sur FreeCAD (version 0.18.16131) essentiellement pour l’atelier FEM, les objets 3D étant créé sous un autre logiciel puis exportés en fichier IFC.

Sous FreeCAD j’import le fichier IFC, fusion des 2 objets avec l'atelier PART et lance FEM. J’ajoute le conteneur d'analyse et mon matériau (en sélectionnant mes 2 items dans la fusion), le point fixe (sur l’item maitre) et la charge (sur l’item esclave).

Je sélectionne les surfaces de contact et mis le coef de friction à 0,1. D’ailleurs, ici je n’ai pas compris/trouver où mettre le type de contact possible. Je sélectionne la fusion (pour ne pas créer 2 mesh que CalculiX ne serait gérer) et lance la création du mesh (de second ordre et finesse : fin).

Cas sans écart de 0.1 mm au niveau du contact
FreeCAD ne veut pas créer le mesh, je laisse tourner mais ça ne s’arrête jamais… Ctrl+Alt+Sup pour reprendre la main sur Freecad avec redémarrage.

Cas avec écart de 0.1 mm au niveau du contact
Le mesh est terminé. Je lance le solveur en commençant par le .ini, puis lancement de CalculiX. Je laisse tourner mais ca n’aboutit pas. Ctrl+Alt+Sup pour reprendre la main sur Freecad avec redémarrage. Dernier essai, j’ai laissé tourner pendant 5226 sec.

Pour mes premiers essai, j'ai simplifié la structure qui devrait avoir 2 matériaux mais j’ai voulu faire simple pour le moment.

Voici une vue des 2 pièces et vous mets mon fichier en PJ.
Broche.jpg
Broche.jpg (22.5 KiB) Viewed 1647 times

Broche avec écart.FCStd

Si quelqu’un pouvait m’orienter sur mon/mes erreurs.

Merci d’avance,
Cordialement,
Ritchy76

PS je tourne sous windows 10, si ca à de l'importance.
Last edited by Ritchy76 on Tue Jan 28, 2020 5:48 pm, edited 4 times in total.
User avatar
-alex-
Veteran
Posts: 1861
Joined: Wed Feb 13, 2019 9:42 pm
Location: France

Re: Module FEM et analyse avec contacts entre pièces

Post by -alex- »

Ritchy76 wrote: Sun Dec 22, 2019 4:53 pm Bonjour...
Bienvenu sur le forum, l'analyse de ton modèle est en cours, mais cette période de fête laisse peu de temps.
Résultats sous quelques jours... :)

En première approche:
- il faut mailler au 1er ordre
- préférer gmsh
- avoir des surfaces cylindriques continues
- iso-contraindre la broche
User avatar
-alex-
Veteran
Posts: 1861
Joined: Wed Feb 13, 2019 9:42 pm
Location: France

Re: Module FEM et analyse avec contacts entre pièces

Post by -alex- »

Bonjour Ritchy76,
Ritchy76 wrote: Sun Dec 22, 2019 4:53 pm J'hésitais à faire un nouveau poste ou écrire ici. Bref, je n'arrive pas à créer les contacts.
Tu es au bon endroit, re-bienvenu sur le forum ;)

Ritchy76 wrote: Sun Dec 22, 2019 4:53 pm Pour info, je démarre tout juste sur FreeCAD (version 0.18.16131) essentiellement pour l’atelier FEM, les objets 3D étant créé sous un autre logiciel puis exportés en fichier IFC.
Ton import de fichier IFC créé des objets facétisés, ce n'est pas grave en soit, mais pour les faces cylindriques cela oblige à sélectionner un grand nombre de facettes lors de la création de contacts, ce qui est délicat et fastidieux. D'autre part, suivant le seuil de tesselation on peut se demander quel jeu réel est laissé entre un axe et son trou. Je dis cela car le jeu de 0.1mm que je conseil dans les précédents postes n'est pas une valeur en or, il peut être nécessaire de l'augmenter parfois suivant le rayon de courbure des faces cylindriques pour éviter qu'une tesselation trop faible liée à un maillage un peu grossier ne créé des noeuds trop proches ou "croisés" dans les zones de contact (ce qui provoque les erreurs d'analyse que j'ai mentionné plus haut https://forum.freecadweb.org/viewtopic. ... 10#p321221). Dans ce cas il y a deux solutions:
- affiner le maillage dans les zones en contact
- augmenter le jeu (avec pour conséquence d'augmenter artificiellement les résultats des valeurs de déplacement, et également de créer des difficultés de convergence du solveur)
On peu également s'interroger sur le réalisme d'un ensemble de facettes en contact comparé à 2 surfaces cylindriques continues. De mon point de vue je te conseille vivement d'utiliser des modèles à surfaces continues comme base à ton analyse. Essai d'importer tes modèles au format step ou iges. Sinon modélise les en natif sous FreeCAD, ou retouche les à minima.

Ritchy76 wrote: Sun Dec 22, 2019 4:53 pm Sous FreeCAD j’import le fichier IFC, fusion des 2 objets avec l'atelier PART et lance FEM. J’ajoute le conteneur d'analyse et mon matériau (en sélectionnant mes 2 items dans la fusion), le point fixe (sur l’item maitre) et la charge (sur l’item esclave).
Sur ton modèle j'ai réalisé des enlèvements de matière sur la broche et dans le trou, respectivement en diminuant et en augmentant légèrement les diamètres, dans le but d'obtenir des surfaces cylindriques continues. J'ai également activé la propriété "refine" sur TRUE sur les fonctions adéquates pour que les surfaces en contact ne comportent plus de lignes de séparation, liées aux fonctions Cut que j'ai utilisées (car dans ma configuration FreeCAD la propriété REFINE est FALSE par défaut).
Ceci étant dit, dans le cas de ce modèle simple, le plus facile aurait été de le refaire en natif sous Freecad.
Remarque: sur ton modèle tu as sélectionné des faces appartenant aux sous objets "body" alors que ton maillage est basé sur "fusion" (à raison). Ok pourquoi pas, cela offre des facilités de sélection en cachant et montrant successivement les différents objets. Mais attention, il faut être certain que les dites surfaces correspondent exactement aux surfaces de l'objet final utilisé pour la création du maillage, sous peine d'obtenir des résultats invalides. Suivant la complexité du modèle cela demande une connaissance approfondie du modèle et de FreeCAD. Personnellement je préfère utiliser les surfaces de l'objet servant au maillage.

Ritchy76 wrote: Sun Dec 22, 2019 4:53 pm Je sélectionne les surfaces de contact et mis le coef de friction à 0,1. D’ailleurs, ici je n’ai pas compris/trouver où mettre le type de contact possible. Je sélectionne la fusion (pour ne pas créer 2 mesh que CalculiX ne serait gérer) et lance la création du mesh (de second ordre et finesse : fin).
Le coeff. de friction stabilise le modèle, pas obligatoire mais souhaitable dans certains cas légèrement sous contraints (même si l'on ne souhaite pas tenir compte de la friction).
Sur ton modèle, seul la paire de surfaces en fond de trou est en contact, mais il en faut aussi sur la paire de surfaces cylindrique pour guider la broche. Il faut bien avoir conscience que les différents solides du maillage vont être traités comme des éléments séparés dans l'analyse, libres dans l'espace. Chaque élément doit être iso-contraint avec les conditions aux limites nécessaires sans quoi le modèle sera instable à l'analyse.
Dans ton cas, la broche est bloquée à sa pointe mais pas radialement, donc la force de 5KN que tu as défini la pousse à l'infini suivant -X.

Le maillage doit être du 1er ordre pour les analyses avec contacts. Tu as utilisé Netgen, pourquoi pas, mais à condition de régler "second order" sur FALSE. J'utilise rarement Netgen dans le module FEM FreeCAD. Il est adaptatif, et très performant, mais il est associé dynamiquement au modèle. Donc à chaque retouche du modèle le maillage est mis à jour automatiquement, ce qui rend les retouches de gros modèle très lourdes (il y a peut-être une variable à modifier dans l'éditeur de paramètres....à fouiller).
De plus il semble poser problème pour les analyses avec contacts (hors sujet: de plus il n'est pas pris en charge pour les modèles surfaciques pour le moment). Je lui préfère le mailleur Gmsh qui ne pose pas ces problèmes, mais nécessite la création de régions de maillage pour obtenir un ratio jacobien convenable, et également éviter les problèmes de tesselation aux zones de contact courbes.

Concernant le type de contact, il est mentionné dans le 1er poste de ce fil: https://forum.freecadweb.org/viewtopic. ... 62#p315672. A ce jour l'interface graphique ne propose que le type "surface-to-surface", pour chnager le type de contact il faut éditer le fichier .inp généré lors de la première étape du calcul, modifier les lignes idoines, puis lancer le calcul. Un choix dans le menu graphique serait souhaitable, il a été demandé dans le forum anglosaxon, mais n'est pas encore implémenté à ma connaissance. Patience...

Ritchy76 wrote: Sun Dec 22, 2019 4:53 pm Cas sans écart de 0.1 mm au niveau du contact
FreeCAD ne veut pas créer le mesh, je laisse tourner mais ça ne s’arrête jamais… Ctrl+Alt+Sup pour reprendre la main sur Freecad avec redémarrage.
Je n'ai pas le modèle sans jeu, mais je suppose que la broche et le trou étaient facétisées sur ce modèle là aussi. Donc la fusion a du produire multitude de petites cavités et peut-être aussi des tangences face/arrêtes qui ont produit des épaisseurs nulles ou des angles très aigus, ce qui est rédhibitoire pour un mailleur adaptatif qui va produire une quantité énorme de petits éléments dans ces zones pour conserver un ratio jacobien convenable. Cela conduit à une saturation de la RAM j'imagine. Bref, une autre raison de ne pas utiliser Netgen dans ce cas la. Gmsh lui va échouer ou alerter par un message indiquant un mauvais jacobien, laissant l'utilisateur libre des choix à faire ensuite.

Ritchy76 wrote: Sun Dec 22, 2019 4:53 pm Cas avec écart de 0.1 mm au niveau du contact
Le mesh est terminé. Je lance le solveur en commençant par le .ini, puis lancement de CalculiX. Je laisse tourner mais ca n’aboutit pas. Ctrl+Alt+Sup pour reprendre la main sur Freecad avec redémarrage. Dernier essai, j’ai laissé tourner pendant 5226 sec.
Je pense que c'est lié au maillage du 2nd ordre que tu as choisi, Il faut mailler au 1er ordre. Cela est peut-être également due à la facétisations des zones de contact, également au manque de contacts radiaux entre tige et trou.

Ci-dessous le fichier retouché (calcul de 43s sur mon laptop).
FEM-contact-broche-avec-ecart.png
FEM-contact-broche-avec-ecart.png (121.18 KiB) Viewed 1775 times
Broche avec écart-gmsh.FCStd
(865.09 KiB) Downloaded 69 times
Ritchy76
Posts: 9
Joined: Sat Dec 21, 2019 7:37 am

Re: Module FEM et analyse avec contacts entre pièces

Post by Ritchy76 »

Bonjour Alex,

Merci pour tout ce travail, j'imagine que ca ta pris du temps. Et désolé de ma réponse tardive avec les congés et le travail, bref...

En faite, la broche n'est qu'un tout petit morceau de ce que je souhaite étudier sous FreeCAD et l'atelier FEM : la conception d'une CNC avec une structure en béton hormis l'axe Z qui est en alu.

Du coup en suivant tes conseils, j'ai commencé à redessiner la structure (pour le moment l'axe Z et la broche mais le fichier sera complété au fur et à mesure).
Axe Z avec Broche v4.FCStd

Bon, je n'ai pas réussi le mesh avec Gmsh j'ai une erreur :
Warning : Unknown element type for UNV export (MSH type 15) - output file might be invalid
J'ai aussi bloquer sur l 'installation de la macro de sélection des faces. Du coup, j’essaie de sélectionner en basculant les vues.

Dis moi ce que tu en penses ?

Merci à toi,

Ritchy76
User avatar
-alex-
Veteran
Posts: 1861
Joined: Wed Feb 13, 2019 9:42 pm
Location: France

Re: Module FEM et analyse avec contacts entre pièces

Post by -alex- »

Ritchy76 wrote: Thu Jan 23, 2020 4:54 pm désolé de ma réponse tardive avec les congés et le travail, bref...
Bonjour Ritchy76, pas de souci le principale c'est de répondre, tu as appliqué le slogan Freecad: c'est fait quand c'est fait ;)
Ritchy76 wrote: Thu Jan 23, 2020 4:54 pm En faite, la broche n'est qu'un tout petit morceau de ce que je souhaite étudier...
Plusieurs choses:
- si ton modèle/projet n'est pas trop confidentiel dis nous en plus à son sujet (quelle type de cnc, dimensions machine, analyse statique, fréquentielle, etc...) et ouvre un nouveau sujet pour un vaste projet comme celui là.
- j'ai eu des problème avec ton fichier (que tu peux joindre directement à tes messages si taille <1Mo). Mais ça vient peut-être de ma version de Freecad (0.18). J'ai des problèmes de référencement de formes. Impossible de mailler.
- sans tes informations Freecad difficile d'en dire plus https://forum.freecadweb.org/viewtopic. ... 110#p40124
- si tu es sur Windows vérifie que Gmsh.exe est présent dans le répertoire Bin et que le bon chemin est présent dans les préférences FEM.

A bientôt dans un nouveau sujet (je vais poursuivre celui ci avec d'autres informations sur les contacts).
User avatar
-alex-
Veteran
Posts: 1861
Joined: Wed Feb 13, 2019 9:42 pm
Location: France

Re: Module FEM et analyse avec contacts entre pièces

Post by -alex- »

Des informations complémentaires sur les mécanisme de sélection dans FC 0.19 ici:
https://forum.freecadweb.org/viewtopic. ... 04#p470928
User avatar
Galahad
Posts: 130
Joined: Thu Jul 12, 2018 7:56 am

Re: Module FEM et analyse avec contacts entre pièces

Post by Galahad »

TOP!!
Faudra que je test sur un cadre de moto ^^ question que je me pose, dois je faire le cadre de moto dans un seul corps de pièce,
Ou un assemblage de chaque tubes... Hummm a voir :)
Post Reply