Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


doc:user:elements:general:start

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
Next revisionBoth sides next revision
doc:user:elements:general:start [2013/07/11 17:47] – created jorisdoc:user:elements:general:start [2013/07/12 15:42] – external edit 127.0.0.1
Line 1: Line 1:
 +====== 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 [[doc:user:elements:general:def_element_properties|définition d'ElementProperties]]). Par exemple, on trouve le [[doc:user:elements:general:materials|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 [[doc:user:geometry:import:tuto2|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 [[doc:user:elements:general:materials|matériau]] (En interne dans Metafor un matériau est un "adapter" vers ''MaterialProperties'') ou une [[doc:user:elements:volumes:start|loi matérielle]] (''MaterialLawProperties''). Pour les connaisseurs du [[doc:user:general:glossaire#C++]], ces trois classes sont, en fait, 3 instanciations d'un même template. Ils possèdent donc les mêmes fonctions : un ''put()'' pour définir une nouvelle entrée et un ''depend()'' pour faire évoluer cette valeur en fonction de divers paramètres.
 +
 +
 +
 +
 +===== Interaction =====
 +
 +
 +Initialement dans Metafor, on appelait “''[[doc:user:start#interactions|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:
 +{{ doc:user:interact.gif |Interactions}}
 +
 +__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 ''[[doc:user:start#interactions|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) )
doc/user/elements/general/start.txt · Last modified: 2016/03/30 15:23 by 127.0.0.1

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki