commit:2007:01_05
Table of Contents
Commit 2007-01-05
Modifs
- Pilotage en force de matrices de contact rigides:
- J'ai réimplémenté le “pilotage en force”. Ca consiste à appliquer une force sur une matrice rigide de contact au lieu de son déplacement. Le déplacement résultant est automatiquement calculé grâce à un ou plusieurs ddls supplémentaires au niveau de la matrice.
- Au niveau de l'implémentation, c'est beaucoup plus simple qu'à l'époque de la version fortran:
- Pour spécifier qu'on veux générer des éléments de pilotage en force au lieu des éléments de contact rigide-défo habituels, il suffit de dire à l'interaction de contact
useFreeTool
. Avec cette option, l'interaction créra un meshpoint et un noeud associé à la matrice de contact. L'interaction spécifiera à l'élément qu'il est de type “pilotage en force” (CIT_FDTYPE
dans le code), ce qui permet à l'élément d'assembler ses forces autrement. - Au niveau de l'élém de contact, rien ne change. Vu que le nouveau noeud est associé à la matrice, tout se passe comme si l'elem etait défo-défo pour la génération du locel.
- Limitations:
- J'ai pas testé le 3D mais c'est implémenté.
- Le thermomec n'est pas implémenté (vraiment pas difficile à faire).
- La largeur de bande n'est pas mise à jour. Il faudra le faire (mais ce n'est qu'une question d'optimisation du CPU).
- Vu l'architecture actuelle, l'élément retourne des forces externes uniquement. Idéalement, il faudrait sortir la force sur la matrice en tant que force interne mais cela entraîne la création d'un nombre incroyable de nouvelles routines et une duplication de code énorme. Conséquence, appliquer la force sur la matrioce se fait en appliquant une force interne et pas une force externe.
- Pour garder une matrice de raideur symétrique, la force à appliquer est de signe opposé à celui auquel on s'attend.
- Correction GMRES:
- Un paramètre n'était pas passé correctement
- Correction
vizu.conf
:- Suite aux modifs de Ludo, les locks de la vizu étaient shiftées (et les forces n'apparaissaient plus à l'écran par défaut).
- Correction Sloan:
- Modif du calcul de la taille maximale de la DB qui ne tenait pas compte du
PositionSet
.
Exemple
Je veux piloter ma matrice de contact en force, je fais quoi?
Imaginons le plotage de la matrice définie par la courbe 11 en contact avec la courbe 2:
Définir une interaction et spécifier useFreeTool
:
ci1 = ContactInteraction(2) ci1.push(2, CURVE_ID) ci1.push(11, CURVE_ID) ci1.useFreeTool() # <= ! intset.copy(ci1)
Piloter la matrice:
fixaSet.define(11, CURVE_ID, Key(TY|GD|RE)) # blocage selon Y loadSet.define(11, CURVE_ID, TX|GF|I2, 1000, fct1) # force de 1000 selon X
Remarquez le I2
dans la lock du loadSet
.
Fichiers ajoutés/supprimés
— Romain BOMAN 2007/01/05 09:32
commit/2007/01_05.txt · Last modified: 2016/03/30 15:23 by 127.0.0.1