Module FEM et analyse avec contacts entre pièces

Forum destiné aux questions et discussions en français
Forum rules
Règles du forum et informations utiles.

VEUILLEZ LIRE CECI AVANT DE DEMANDER DE L'AIDE
-alex-
Posts: 145
Joined: Wed Feb 13, 2019 9:42 pm
Location: France

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

Postby -alex- » Wed Jun 26, 2019 7:53 pm

-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....
-alex-
Posts: 145
Joined: Wed Feb 13, 2019 9:42 pm
Location: France

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

Postby -alex- » Thu Jun 27, 2019 8:50 pm

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 125 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 12 times
-alex-
Posts: 145
Joined: Wed Feb 13, 2019 9:42 pm
Location: France

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

Postby -alex- » Tue Jul 16, 2019 10:32 am

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 66 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 66 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 57 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 :!: