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 10:02] – [Méthodes de transfert de données (optionnelle)] 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 94: Line 100:
   * un calcul exact (plus couteux en temps de calcul, car nécessitant la construction d’un super-maillage).   * un calcul exact (plus couteux en temps de calcul, car nécessitant la construction d’un super-maillage).
  
-La définition de l' ''ElementProperties'' permettant d'utiliser cette méthode est la suivante+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 110: Line 118:
     * ''TRAPEZOIDQUADRATURE'' : méthode des trapèzes     * ''TRAPEZOIDQUADRATURE'' : méthode des trapèzes
     * ''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 ''MTMCell'' par ''ExactMTMCell'' et importer ''wrap.mtExactDataTransfer_CGAL''. L'''ElementProperties'' est donc défini par :
 +  from wrap.mtExactDataTransfer_CGAL import *
 +  transferElementProperties = ElementProperties(ExactMTMCell)
 +  transferElementProperties.put (MTMSOLVERTYPE, solver  )
  
 ==== Méthode de transfert utilisant des volumes finis ==== ==== Méthode de transfert utilisant des volumes finis ====
Line 122: Line 135:
   * un calcul exact (plus couteux en temps de calcul, car nécessitant la construction d’un super-maillage).   * un calcul exact (plus couteux en temps de calcul, car nécessitant la construction d’un super-maillage).
  
-La définition de l' ''ElementProperties'' permettant d'utiliser cette méthode est la suivante:+La définition de l' ''ElementProperties'' permettant d'utiliser cette méthode avec le calcul approché est la suivante:
   transferElementProperties = ElementProperties(FVTMCell)   transferElementProperties = ElementProperties(FVTMCell)
   transferElementProperties.put (INTPT_NB     , intePtNb)   transferElementProperties.put (INTPT_NB     , intePtNb)
   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 133: Line 148:
     * ''TRAPEZOIDQUADRATURE'' : méthode des trapèzes     * ''TRAPEZOIDQUADRATURE'' : méthode des trapèzes
     * ''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 importer ''wrap.mtExactDataTransfer_CGAL''. L'''ElementProperties'' est donc défini par :
 +  from wrap.mtExactDataTransfer_CGAL import *
 +  transferElementProperties = ElementProperties(ExactFVTMCell)
  
 === 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 166: 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.1417510923.txt.gz · Last modified: 2016/03/30 15:22 (external edit)

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki