Metafor

ULiege - Aerospace & Mechanical Engineering

User Tools

Site Tools


commit:2011:05_03

Commit 2011-05-03

Modifications

Transfert de champs entre deux maillages

Modification de la procédure de transfert lors d'un remaillage. Le transfert est effectué entre deux objets “Interaction” de deux Metafor différent (deux “Domain”, etc.). Après le transfert un fichier Fac est sauvegardé afin de continuer le calcul après remaillage. Donc pour faire du remaillage il faut 3 étapes:

  • Calcul sur l'ancien maillage
  • transfert de l'ancien maillage vers le nouveau maillage
  • Calcul sur le nouveau maillage

ALE

Rapprochement entre la version ALE avec transfert pour remaillage et la version ALE avec convection:

Inversion des boucles sur les champs et sur les cellules.

Avant :

  • Boucle sur les champs
    • Boucle sur les cellules
      • Calcul du transfert

Maintenant:

  • Boucle sur les cellules
    • Boucles sur les champs
      • Calcul du transfert

Cette inversion entraine une augmentation de la RAM (stockage des valeurs pour tous les champs) et permet un gain en temps de calcul (augmentation des performances en parallèle : plus de calcul dans les boucles).

Modification de la manière d'utiliser l'ALE (convection). Les cellules sur lesquelles la convection était calculé sont coupées en deux:

  • La première partie permet de calculer la convection.
  • La deuxième partie est utilisée pour l'évaluation des champs (reconstruction constante ou linéaire)

Ceci permet d'utiliser la reconstruction linéaire dans les méthodes de transfert pour le remaillage.

Dans les cas test ALE (convection), il faut choisir le type d'élément “InriaCell” avec le type de cellule utilisée pour la reconstruction.

elementProperties = ElementProperties(InriaCell)
elementProperties.put (FVCELLTYPE, CELLTYPE) avec CELLTYPE = GODUNOVCELL ou LINEARRECCELL

Cas tests

Modification des cas tests sur le transfert (remaillage). Il sont maintenant découpés en trois:

  • Calcul sur l'ancien maillage (cas_test_1.py)
    1. Création d'un maillage
    2. Résolution du problème
  • Transfert de l'ancien maillage au nouveau. Deux objets Metafor sont crées (deux “Domain”, “Mesh”, etc.)(cas_test_2.py)
    1. Importation des résultats calculés dans le cas test 1
    2. Création d'un nouveau maillage (nouveau Metafor)
    3. Transfert des données
    4. Sauvegarde des données sur le nouveau maillage (nouveau Metafor)
  • Calcul sur le nouveau maillage (cas_test_3.py)
    1. Reprise du calcul à partir des données sauvegardées après transfert.

Fichiers ajoutés/supprimés

[a]: oo_meta\mtALE\FECell.cpp
[a]: oo_meta\mtALE\FECell.h
[a]: oo_meta\mtALE\FECouplingMeshes.cpp
[a]: oo_meta\mtALE\FECouplingMeshes.h
[r]: oo_meta\mtALE\MTMInteraction.cpp
[r]: oo_meta\mtALE\MTMInteraction.h
[a]: oo_meta\mtALE\FEInteraction.cpp
[a]: oo_meta\mtALE\FEInteraction.h
[r]: oo_meta\mtALE\MTMCell.cpp
[r]: oo_meta\mtALE\MTMCell.h
[a]: oo_meta\mtALE\FETMCell.cpp
[a]: oo_meta\mtALE\FETMCell.h
[a]: oo_meta\mtALE\FVCell.cpp
[a]: oo_meta\mtALE\FVCell.h
[a]: oo_meta\mtALE\FVCellElShcuts.cpp
[a]: oo_meta\mtALE\FVCellElShcuts.h
[a]: oo_meta\mtALE\FVCellType.cpp
[a]: oo_meta\mtALE\FVCellType.h
[a]: oo_meta\mtALE\FVCouplingMeshes.cpp
[a]: oo_meta\mtALE\FVCouplingMeshes.h
[a]: oo_meta\mtALE\FVTMCell.inl
[a]: oo_meta\mtALE\FVTransferCell.cpp
[a]: oo_meta\mtALE\FVTransferCell.h
[a]: oo_meta\mtALE\FVTransferCell.inl
[a]: oo_meta\mtALE\IPETMCell.cpp
[a]: oo_meta\mtALE\IPETMCell.h
[a]: oo_meta\mtALE\IPFECell.cpp
[a]: oo_meta\mtALE\IPFECell.h
[a]: oo_meta\mtALE\IPFETMCell.cpp
[a]: oo_meta\mtALE\IPFETMCell.h
[a]: oo_meta\mtALE\NodalETMCell.cpp
[a]: oo_meta\mtALE\NodalETMCell.h
[a]: oo_meta\mtALE\NodalFECell.cpp
[a]: oo_meta\mtALE\NodalFECell.h
[a]: oo_meta\mtALE\NodalFETMCell.cpp
[a]: oo_meta\mtALE\NodalFETMCell.h
[a]: oo_meta\mtALE\SimpleLimiter.cpp
[a]: oo_meta\mtALE\SimpleLimiter.h
[a]: oo_meta\mtALE\TransferValueExtractor.cpp
[a]: oo_meta\mtALE\TransferValueExtractor.h
[r]: oo_meta\mtALE\TransferCell.inl

Tests ajoutés/supprimés

[r]:apps\complex\rotMeshInter_1.py
[r]:apps\complex\rotMeshInter_2.py
[r]:apps\complex\rotMeshInter_3.py
[a]:apps\complex\rotMesh_ETMCell_1.py
[a]:apps\complex\rotMesh_ETMCell_2.py
[a]:apps\complex\rotMesh_ETMCell_3.py
[a]:apps\ale\convAnneau.py
[a]:apps\ale\convAnneau_ETMCell.py
[a]:apps\ale\convAnneau_FVTMCell.py
[a]:apps\ale\convAnneau_FVTMCell2.py
[a]:apps\ale\convAnneau_GlobMTMCell.py
[a]:apps\ale\convAnneau_LocMTMCell.py
[a]:apps\ale\convRot_ConvLine.py
[a]:apps\ale\convRot_ETMCell.py
[a]:apps\ale\convRot_FVTMCell.py
[a]:apps\ale\convRot_FVTMCell2.py
[a]:apps\ale\convRot_GlobMTMCell.py
[a]:apps\ale\convRot_LocMTMCell.py
[a]:apps\ale\rotAnneau2_ETMCell.py

Philippe BUSSETTA 2011/05/03

commit/2011/05_03.txt · Last modified: 2018/05/04 16:35 by boman

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki