This is an old revision of the document!
Table of Contents
Introduction
ElementProperties
Les ElementProperties de Metafor permettent de lier la physique du problème au maillage de la structure (éléments de volume ou de coque). Les ElementProperties permettent donc d'associer les propriétés d'éléments à ceux-ci. Chaque ElementProperties regroupe un ensemble de propriétés relatives à un groupe d'éléments (voir définition d'ElementProperties). Par exemple, on trouve le numéro du matériau associé à l'élément, des choix concernant les méthodes d'intégration utilisée (SRI/EAS), etc. Ils permettent aussi d'appliquer des conditions aux limites (par exemple de pression, de flux thermique…) ou d'imposer un contact entre deux structures.
Remarques
- Dans Bacon, un numéro de
ElementPropertiesest similaire à un numéro d'attribut. - L'utilisation d'un
ElementPropertiesest très similaire à celle d'un matériau (En interne dans Metafor un matériau est un “adapter” versMaterialProperties) ou une loi matérielle (MaterialLawProperties). Pour les connaisseurs du C++, ces trois classes sont, en fait, 3 instanciations d'un même template. Ils possèdent donc les mêmes fonctions : unput()pour définir une nouvelle entrée et undepend()pour faire évoluer cette valeur en fonction de divers paramètres.
Interaction
Initialement dans Metafor, on appelait “Interaction” l'objet qui générait les éléments de condition aux limites et de contact. Actuellement, le concept a été étendu à la génération de n'importe quel type d'élément, y compris les éléments de volumes. On a le schéma suivant:
Attention:
Le numéro de chaque Interaction doit être unique! Un FieldApplicator (interaction de volume) ne peut donc pas avoir le même numéro qu'un ContactInteraction (interaction de contact).
Lien entre interaction et ElementProperties
En pratique, il faut associer un ElementProperties à chaque Interaction. Metafor se chargera alors de transmettre l' ElementProperties à chaque élément qui sera créé par cette Interaction. De plus, l' Interaction lit le type d'élément à générer à partir du ElementProperties qu'on lui associe. Les interactions sont spécifiques au type d'éléments créés, on retrouve donc des interactions de volume, de contact, de conditions aux limites… La liaison entre l'Interaction et l'ElementProperties se fait par la commande addProperty:
interactionset(no).addProperty(prp)
qui ajoute à l'Interaction numéro no l'ElementProperties prp.
Dans le jeu de données, la manière la plus “propre” d'écrire est la suivante (exemple pour les éléments de volume):
#1. Definition des proprietes des elements finis volumiques
#----------------------------------------------------------
prp1 = ElementProperties (Volume2DElement) #Creer une propriete prp1 pour les elements finis volumiques
#et definir le type d elements
prp1.put (MATERIAL, 1) #Numero du materiau associe
prp1.put (OMEGA_PT1, 101) #Numero du 1er point definissant l axe de rotation
prp1.put (OMEGA_PT2, 102) #Numero du 2e point definissant l axe de rotation
prp1.put (OMEGA, Omega) #Valeur de la vitesse de rotation (en degre/s)
fct1 = PieceWiseLinearFunction() #Definition d une fct rampe pour l evolution
fct1.setData(0.,0.) #de la vitesse de rotation
fct1.setData(1.,1.)
prp1.depend (OMEGA, fct1, Field1D(TM,RE)) #La vitesse de rotation effective vaut Omega*fct1
#(elle depend donc du temps)
prp1.put (STIFFMETHOD,STIFF_ANALYTIC) #Methode de calcul de la matrice de raideur analytique
prp1.put (CAUCHYMECHVOLINTMETH,VES_CMVIM_STD) #Methode d'integration des contraintes sur l'element
#standard (integrer les contraintes deviatoriques et
#pression a chaque point d'intégration, attention au locking!)
#2. Generation des elements finis volumiques sur le maillage
#-----------------------------------------------------------
app = FieldApplicator(1) #Creation d un generateur (numero 1) d elements volumiques (interaction)
app.push(sideset(1)) #Support = face 1 (supposee maillee)
app.addProperty(prp1) #Assigner la propriete prp1 aux futurs elements volumiques de la face 1
interactionset.add(app) #Ajouter le generateur 1 (interaction) a la liste des interactions
Attention: la commande addProperty ajoute une référence à l' ElementProperties dans l' Interaction et incrémente son nombre de références. En conséquence, modifier prp après cette commande modifiera le comportement de l' Interaction!
On peut également écrire :
prp = ElementProperties(typeEl) interactionset(no).addProperty(prp) prp.put(param1, valeur1) prp.depend(param1, fct1, lock1) # facultatif prp.put(param2, valeur2) prp.depend(param2, fct2, lock2) # facultatif ...
A ce jour, addProperty ne renvoie pas de référence vers l'objet. On ne peut donc PAS écrire
prp = interactionset(no).addProperty( ElementProperties(typeEl) )
