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
ElementProperties
est similaire à un numéro d'attribut. - L'utilisation d'un
ElementProperties
est 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) )