Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


doc:user:meshtransfer:datatransferbetweenmeshes

Differences

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

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
doc:user:meshtransfer:datatransferbetweenmeshes [2014/12/02 11:40] bussettadoc:user:meshtransfer:datatransferbetweenmeshes [2016/03/30 15:23] (current) – external edit 127.0.0.1
Line 36: Line 36:
 On suppose que ''oldMetafor'' réfère à l'ancien ''Metafor'' et que ''newMetafor'' réfère au nouveau ''Metafor''.\\ On suppose que ''oldMetafor'' réfère à l'ancien ''Metafor'' et que ''newMetafor'' réfère au nouveau ''Metafor''.\\
 On souhaite transférer les données de l'interaction ''oldInteraction'' de ''oldMetafor'' vers l'interaction ''newInteraction'' de ''newMetafor''. On souhaite transférer les données de l'interaction ''oldInteraction'' de ''oldMetafor'' vers l'interaction ''newInteraction'' de ''newMetafor''.
 +Pour utiliser le calcul des transfert de donnée il faut importer ''wrap.mtDataTransfer''.
  
 +  from wrap.mtDataTransfer import *
   transferOperator = MetaforTransferOperator(oldMetafor, newMetafor)   transferOperator = MetaforTransferOperator(oldMetafor, newMetafor)
   transferOperator.setCouplingInteraction(oldInteraction, newInteraction)   transferOperator.setCouplingInteraction(oldInteraction, newInteraction)
Line 48: Line 50:
  
 <note important>Les commandes optionnelles sont à placer avant la commande ''execute()'' de l'objet ''transferOperator''</note> <note important>Les commandes optionnelles sont à placer avant la commande ''execute()'' de l'objet ''transferOperator''</note>
 +
 +L'objet ''region'' est utilisé pour gérer le transfert de donnée entre deux ''Interaction'' (de ''oldInteraction'' vers ''newInteraction'').
 +Il est créé automatiquement par l'objet ''MetaforTransferOperator''.
 +Pour pouvoir le récupérer, il faut utiliser l'objet ''oldInteraction''.
  
   region = transferOperator.get(oldInteraction)   region = transferOperator.get(oldInteraction)
Line 56: Line 62:
 Il est également possible de spécifier une méthode de transfert pour un champ particulier:  Il est également possible de spécifier une méthode de transfert pour un champ particulier: 
   region.add(IF_DEV_SIG_XX, transElemPropSpec)   region.add(IF_DEV_SIG_XX, transElemPropSpec)
-Le transfert des contraintes et de toutes les autres grandeurs définies sur les mêmes points d'intégration utilisera les propriétés de ''transElemPropSpec''.+Le transfert des contraintes et de toutes les autres grandeurs définies sur les mêmes points d'intégration utilisera les propriétés de ''transElemPropSpec'' (objet du même type que ''transferElementProperties'').
  
   region.ignore(IF_FTOTAL)   region.ignore(IF_FTOTAL)
Line 95: Line 101:
  
 La définition de l' ''ElementProperties'' permettant d'utiliser cette méthode avec le calcul approché est : La définition de l' ''ElementProperties'' permettant d'utiliser cette méthode avec le calcul approché est :
-  transferElementProperties = ElementProperties(METMCell)+  transferElementProperties = ElementProperties(MTMCell)
   transferElementProperties.put (MTMSOLVERTYPE, solver  )   transferElementProperties.put (MTMSOLVERTYPE, solver  )
   transferElementProperties.put (INTPT_NB     , intePtNb)   transferElementProperties.put (INTPT_NB     , intePtNb)
Line 104: Line 110:
     * ''LOCALSOLVER'' : calcul local (explicite)     * ''LOCALSOLVER'' : calcul local (explicite)
  
-  * ''intePtNb'' = Nombre de points d'intégration par direction pour le calcul du couplage +  * ''intePtNb'' = Nombre de points d'intégration pour le calcul du couplage 
 +    * nombre de points par direction pour les quadrangles, hexaèdres, etc. 
 +    * nombre de points d'intégration total pour les triangles, tétraèdres, etc.
  
   * ''QuadType'' = schéma d'intégration utilisé dans le calcul approché du couplage:   * ''QuadType'' = schéma d'intégration utilisé dans le calcul approché du couplage:
Line 111: Line 119:
     * ''LOBATTOQUADRATURE'' : méthodes de quadrature de Lobatto     * ''LOBATTOQUADRATURE'' : méthodes de quadrature de Lobatto
  
-Pour utiliser le calcul exact (nécessite la construction d'un supermaillage) il faut remplacer ''METMCell'' par ''ExactMTMCell'' et inclure ''wrap.mtExactDataTransfer_CGAL''. L'''ElementProperties'' est donc défini par :+Pour utiliser le calcul exact (nécessite la construction d'un supermaillage) il faut remplacer ''MTMCell'' par ''ExactMTMCell'' et importer ''wrap.mtExactDataTransfer_CGAL''. L'''ElementProperties'' est donc défini par :
   from wrap.mtExactDataTransfer_CGAL import *   from wrap.mtExactDataTransfer_CGAL import *
   transferElementProperties = ElementProperties(ExactMTMCell)   transferElementProperties = ElementProperties(ExactMTMCell)
Line 132: Line 140:
   transferElementProperties.put (QUADRATURETYPE, QuadType)   transferElementProperties.put (QUADRATURETYPE, QuadType)
  
-  * ''intePtNb'' = Nombre de points d'intégration par direction pour le calcul du couplage +  * ''intePtNb'' = Nombre de points d'intégration pour le calcul du couplage  
 +    * nombre de points par direction pour les quadrangles, hexaèdres, etc. 
 +    * nombre de points d'intégration total pour un triangle, tétraèdre, etc.
  
   * ''QuadType'' = schéma d'intégration utilisé dans le calcul approché du couplage:   * ''QuadType'' = schéma d'intégration utilisé dans le calcul approché du couplage:
Line 139: Line 149:
     * ''LOBATTOQUADRATURE'' : méthodes de quadrature de Lobatto     * ''LOBATTOQUADRATURE'' : méthodes de quadrature de Lobatto
  
-Pour utiliser le calcul exact (nécessite la construction d'un supermaillage) il faut remplacer ''FVTMCell'' par ''ExactFVTMCell'' et inclure ''wrap.mtExactDataTransfer_CGAL''. L'''ElementProperties'' est donc défini par :+Pour utiliser le calcul exact (nécessite la construction d'un supermaillage) il faut remplacer ''FVTMCell'' par ''ExactFVTMCell'' et importer ''wrap.mtExactDataTransfer_CGAL''. L'''ElementProperties'' est donc défini par :
   from wrap.mtExactDataTransfer_CGAL import *   from wrap.mtExactDataTransfer_CGAL import *
   transferElementProperties = ElementProperties(ExactFVTMCell)   transferElementProperties = ElementProperties(ExactFVTMCell)
Line 145: Line 155:
 === Option pour la reconstruction constante === === Option pour la reconstruction constante ===
   transferElementProperties.put (FVCELLTYPE  , GODUNOVCELL)   transferElementProperties.put (FVCELLTYPE  , GODUNOVCELL)
-  transferElementProperties.put (UPWIND_COEFF, 1.0) 
- 
-L'utilisateur peut choisir un coefficient d'upwind (UPWIND_COEFF). 
-Une valeur de 1.0 (par défaut) donne un schéma appelé "full donor cell differencing" (corresponds à un décentrage arrière complet). 
-Il est fort diffusif mais est TVD (total variation diminishing - pas d'oscillations) et très rapide. 
  
 === Option pour la reconstruction linéaire === === Option pour la reconstruction linéaire ===
Line 175: Line 180:
   transferElementProperties = ElementProperties(NeighbourTMCell)   transferElementProperties = ElementProperties(NeighbourTMCell)
   transferElementProperties.put (FVCELLTYPE, GODUNOVCELL)   transferElementProperties.put (FVCELLTYPE, GODUNOVCELL)
 +
 +===== Exemple  =====
 +
 +On souhaite transférer les données de ''oldInteraction1'' vers ''newInteraction1'' et de ''oldInteraction2'' vers ''newInteraction2''
 +
 +  transferElementProperties = ElementProperties(FVTMCell)
 +  transferElementProperties.put (FVCELLTYPE , LINEARRECCELL)
 +  transferElementProperties.put (STENCILTYPE, LEASTSQUARE_STENCIL)
 +  transferElementProperties.put (LIMITERTYPE, SIMPLE_LIMITER )
 +  transferElementProperties.put (INTPT_NB     , 5)
 +
 +  transferOperator = MetaforTransferOperator(oldMetafor, newMetafor)
 +  transferOperator.setCouplingInteraction(oldInteraction1, newInteraction1)
 +  transferOperator.setCouplingInteraction(oldInteraction2, newInteraction2)
 +
 +  region1 = transferOperator.get(oldInteraction1) # optionnelle
 +  region1.add(transferElementProperties) # optionnelle
 +
 +  region2 = transferOperator.get(oldInteraction2) # optionnelle
 +  region2.add(transferElementProperties) # optionnelle
 +
 +  transferOperator.execute()
  
 ===== Extracteur de valeurs ===== ===== Extracteur de valeurs =====
doc/user/meshtransfer/datatransferbetweenmeshes.1417516835.txt.gz · Last modified: 2016/03/30 15:22 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki