Table of Contents

Commit 2016-04-07

Implémentation d'une nouvelle structure pour les super-éléments. Maintenant, la phase de création est complètement découplée de la phase d'utilisation du super-élément (SE).

Avant, ces deux étapes étaient réalisées dans un même calcul Metafor. Cela nous permettra, notamment, de pouvoir construire des super-éléments à vitesse variable.

Nouvelle structure

Création d'un super-élément

Le jeu de données, dans lequel le super-élément est créé, est écrit sous la forme d'un fichier execfile.

  1. D'abord, on créé deux objets Metafor, l'un étant associé au domaine FEM (interaction FieldApplicator), l'autre au domaine SE (interaction GuyanSuperElementInteraction ou CraigBamptonSuperElementInteraction selon le type choisi).
  2. D'une part, on construit le modèle FEM, et on récupère le FieldApplicator associé au futur super-élément.
  3. D'autre part, on construit le modèle SE :
    • On créé l'interaction Guyan/CraigBamptonSuperElementInteraction.
    • On fixe le superElemBuiltFlag à False.
    • On associe le FieldApplicator à la Guyan/CraigBamptonSuperElementInteraction afin de construire les matrices k et m du modèle FEM sur lesquelles le calcul des matrices réduites K et M est basé.
    • On définit les noeuds Retenus parmi les noeuds du modèle FEM ⇒ les DDLs associés sont fixés à zéro dans le modèle FEM afin d'obtenir la répartition DDLs Retenus/DDLs Condensés des matrices k et m du modèle FEM.
    • On définit le nombre de modes propres dans le cas Craig-Bampton.
    • On créé des groupes de noeuds Retenus qui serviront à l'utilisation du super-élément.
    • On créé des groupes de noeuds Condensés pour lesquels on souhaite extraire des données à l'utilisation du super-élément (voir point suivant).
    • On construit les Guyan/CraigBamptonSuperElementValueExtractor associés, à partir desquels on lance la sauvegarde des valeurs des modes statiques de liaison (et des modes propres dans le cas Craig-Bampton) au(x) DDL(s) considéré(s).
L'extraction de données en un noeud condensé doit être prévue à l'avance, i.e. avant la construction du super-élément.

Le super-élément ainsi construit est sauvegardé dans le sous-dossier <currentWorkDirectory>/Creation au travers des fichiers de sortie suivants :

Utilisation du super-élément créé

Le jeu de données, dans lequel on utilise le super-élément, est écrit sous la forme d'un fichier load()-meta().

  1. On importe le super-élément stocké dans le sous-dossier <currentWorkDirectory>/Creation via un SuperElementImporter (dans le même esprit que BaconImporter) :
    • Création des groupes de noeuds retenus précédemment stockés.
    • Création de la cellule élémentaire associée au super-élément via :
       mesh.define(UserNo, CELL_SE_VOLUME, SEVolume, vecSuperElementPoints)

      SEVolume correspond au volume géométrique sur lequel va reposer la cellule élémentaire, et vecSuperElementPoints correspond au vecteur des points topologiques de la cellule i.e. les noeuds retenus.

  2. On crée l'interaction Guyan/CraigBamptonSuperElementInteraction (le type d'interaction est récupéré à partir du jeu de données de création du super-élément ⇒ à modifier si l'on veut utiliser un super-élément créé par un autre code que Metafor…)
  3. On fixe le superElemBuiltFlag à True.
  4. On définit le nombre de modes propres dans le cas Craig-Bampton (idem, nombre récupéré à partir du jeu de données de création du super-élément).
  5. On associe le volume géométrique SEVolume (resp. la side géométrique SESide), créé(e) lors de l'importation du super-élément, à l'interaction.
  6. On applique les conditions aux limites via les groupes de noeuds Retenus.
  7. On définit le type d'intégration et tous les paramètres classiques de calcul.
  8. On ajoute les extracteurs au ValuesManager : l'extraction de données en un noeud Retenu se fait via un DbNodalValueExtractor, et l'extraction de données en un noeud Condensé se fait via un Guyan/CraigBamptonSuperElementValueExtractorUse, les valeurs des modes étant stockées dans les fichiers modesValues_Group_<No>_<Nature>_<Variant>.txt.
Afin de nous repérer dans les UserNo des noeuds Retenus à l'utilisation du super-élément, ceux-ci sont définis comme étant le DBNo des noeuds du maillage FEM. Attention, un décalage d'indice peut être utilisé dans le cas où le maillage, qui contient le super-élément, contient également des éléments finis classiques.

Implémentation

Il y aura des choses à modifier lorsque la SuperElementInteraction pourra contenir plusieurs super-éléments (par ex. pour les ValueExtractor : calcul de la valeur du déplacement Ux d'un noeud condensé interne appartenant à un seul super-élément).

Cas-tests mtSuperElement

Cas-tests abrawal

Fichiers ajoutés/supprimés

Added: oo_meta\mtSuperElement\src\GuyanSuperElementValueExtractorUse.h
Added: oo_meta\mtSuperElement\src\GuyanSuperElementValueExtractorUse.cpp
Added: oo_meta\mtSuperElement\src\CraigBamptonSuperElementValueExtractorUse.h
Added: oo_meta\mtSuperElement\src\CraigBamptonSuperElementValueExtractorUse.cpp
Added: oo_meta\mtGeo\mtGeoSuperElemSideBuilder.h
Added: oo_meta\mtGeo\mtGeoSuperElemSideBuilder.cpp
Added: oo_meta\mtGeo\mtGeoSuperElemVolumeBuilder.h
Added: oo_meta\mtGeo\mtGeoSuperElemVolumeBuilder.cpp
Added: oo_meta\mtGeo\mtGeoSESide.h
Added: oo_meta\mtGeo\mtGeoSESide.cpp
Added: oo_meta\mtGeo\mtGeoSEVolume.h
Added: oo_meta\mtGeo\mtGeoSEVolume.cpp

Cas-tests supprimés

Deleted : mtSuperElement\tests\Beam2D.py
Deleted : mtSuperElement\tests\Beam2DComp.py
Deleted : mtSuperElement\tests\Beam2DCompFX.py
Deleted : mtSuperElement\tests\Beam2DCompFY.py
Deleted : mtSuperElement\tests\Beam2DCompTX.py
Deleted : mtSuperElement\tests\Beam2DCompTX_FX.py
Deleted : mtSuperElement\tests\Beam2DCompTX_FY.py
Deleted : mtSuperElement\tests\Beam2DCompTY.py
Deleted : mtSuperElement\tests\Beam2DCompTY_FX.py
Deleted : mtSuperElement\tests\Beam2DCompTY_FY.py
Deleted : mtSuperElement\tests\Beam2DCompX.py
Deleted : mtSuperElement\tests\Beam2DFrequencyAnalysis.py
Deleted : mtSuperElement\tests\Beam2DFrequencyAnalysisFree.py
Deleted : mtSuperElement\tests\Beam2DTri.py
Deleted : mtSuperElement\tests\Beam2DGuyanDynamic.py
Deleted : mtSuperElement\tests\Beam2DGuyanStatic.py

Deleted : mtSuperElement\tests\Beam3D.py
Deleted : mtSuperElement\tests\Beam3DComp.py
Deleted : mtSuperElement\tests\Beam3DCompFX.py
Deleted : mtSuperElement\tests\Beam3DCompFY.py
Deleted : mtSuperElement\tests\Beam3DCompFYAmp.py
Deleted : mtSuperElement\tests\Beam3DCompTX.py
Deleted : mtSuperElement\tests\Beam3DCompTX_FY.py
Deleted : mtSuperElement\tests\Beam3DCompTY.py
Deleted : mtSuperElement\tests\Beam3DCompTY_FX.py
Deleted : mtSuperElement\tests\Beam3DCompX.py
Deleted : mtSuperElement\tests\Beam3DFrequencyAnalysis.py
Deleted : mtSuperElement\tests\Beam3DFrequencyAnalysisFree.py
Deleted : mtSuperElement\tests\Beam3DTetra.py
Deleted : mtSuperElement\tests\defoCentrCBSESRIPR.py
Deleted : mtSuperElement\tests\defoCentrGSESRIPR.py

---------------------------------------------------------------------

Deleted : abrawal\banc18ER\battery\bladeCasingEngagementFSEGuyan.py
Deleted : abrawal\banc18ER\battery\bladeCentrifugeLoadBSECraig.py

Deleted : abrawal\banc18ER\bladeCasingEngagement\refRefAnalysis\refBAm01FSECraig.py
Deleted : abrawal\banc18ER\bladeCasingEngagement\refRefAnalysis\refBAm01FSEGuyan.py

Deleted : abrawal\banc18ER\bladeCentrifugeLoad\RefBlade\coarseMeshEasBSECraig.py
Deleted : abrawal\banc18ER\bladeCentrifugeLoad\RefBlade\refMeshEasFSECraig.py
Deleted : abrawal\banc18ER\bladeCentrifugeLoad\RefBlade\refMeshEasFSEGuyan.py
Deleted : abrawal\banc18ER\bladeCentrifugeLoad\RefBlade\refMeshSriFSECraig.py
Deleted : abrawal\banc18ER\bladeCentrifugeLoad\RefBlade\refMeshSriFSEGuyan.py

Deleted : abrawal\banc18ER\casingRotAnalysis\RefBlade\Ref2600EasVE5P300Mu035FSECraig.py
Deleted : abrawal\banc18ER\casingRotAnalysis\RefBlade\Ref2600EasVE5P300Mu035FSEGuyan.py

Cas-tests ajoutés

Added : mtSuperElement\tests\Beam2D_1.py
Added : mtSuperElement\tests\Beam2D_2.py
Added : mtSuperElement\tests\Beam2DComp_1.py
Added : mtSuperElement\tests\Beam2DComp_2.py
Added : mtSuperElement\tests\Beam2DCompFX_1.py
Added : mtSuperElement\tests\Beam2DCompFX_2.py
Added : mtSuperElement\tests\Beam2DCompFY_1.py
Added : mtSuperElement\tests\Beam2DCompFY_2.py
Added : mtSuperElement\tests\Beam2DCompTX_1.py
Added : mtSuperElement\tests\Beam2DCompTX_2.py
Added : mtSuperElement\tests\Beam2DCompTX_FX_1.py
Added : mtSuperElement\tests\Beam2DCompTX_FX_2.py
Added : mtSuperElement\tests\Beam2DCompTX_FY_1.py
Added : mtSuperElement\tests\Beam2DCompTX_FY_2.py
Added : mtSuperElement\tests\Beam2DCompTY_1.py
Added : mtSuperElement\tests\Beam2DCompTY_2.py
Added : mtSuperElement\tests\Beam2DCompTY_FX_1.py
Added : mtSuperElement\tests\Beam2DCompTY_FX_2.py
Added : mtSuperElement\tests\Beam2DCompTY_FY_1.py
Added : mtSuperElement\tests\Beam2DCompTY_FY_2.py
Added : mtSuperElement\tests\Beam2DCompX_1.py
Added : mtSuperElement\tests\Beam2DCompX_2.py
Added : mtSuperElement\tests\Beam2DFrequencyAnalysis_1.py
Added : mtSuperElement\tests\Beam2DFrequencyAnalysis_2.py
Added : mtSuperElement\tests\Beam2DFrequencyAnalysisFree_1.py
Added : mtSuperElement\tests\Beam2DFrequencyAnalysisFree_2.py
Added : mtSuperElement\tests\Beam2DTri_1.py
Added : mtSuperElement\tests\Beam2DTri_2.py
Added : mtSuperElement\tests\Beam2DGuyan_1.py
Added : mtSuperElement\tests\Beam2DGuyan_2.py
Added : mtSuperElement\tests\Beam2DGuyanStatic_1.py
Added : mtSuperElement\tests\Beam2DGuyanStatic_2.py

Added : mtSuperElement\tests\Beam3D_1.py
Added : mtSuperElement\tests\Beam3D_2.py
Added : mtSuperElement\tests\Beam3DComp_1.py
Added : mtSuperElement\tests\Beam3DComp_2.py
Added : mtSuperElement\tests\Beam3DCompFX_1.py
Added : mtSuperElement\tests\Beam3DCompFX_2.py
Added : mtSuperElement\tests\Beam3DCompFY_1.py
Added : mtSuperElement\tests\Beam3DCompFY_2.py
Added : mtSuperElement\tests\Beam3DCompFYAmp_1.py
Added : mtSuperElement\tests\Beam3DCompFYAmp_2.py
Added : mtSuperElement\tests\Beam3DCompTX_1.py
Added : mtSuperElement\tests\Beam3DCompTX_2.py
Added : mtSuperElement\tests\Beam3DCompTX_FY_1.py
Added : mtSuperElement\tests\Beam3DCompTX_FY_2.py
Added : mtSuperElement\tests\Beam3DCompTY_1.py
Added : mtSuperElement\tests\Beam3DCompTY_2.py
Added : mtSuperElement\tests\Beam3DCompTY_FX_1.py
Added : mtSuperElement\tests\Beam3DCompTY_FX_2.py
Added : mtSuperElement\tests\Beam3DCompX_1.py
Added : mtSuperElement\tests\Beam3DCompX_2.py
Added : mtSuperElement\tests\Beam3DFrequencyAnalysis_1.py
Added : mtSuperElement\tests\Beam3DFrequencyAnalysis_2.py
Added : mtSuperElement\tests\Beam3DFrequencyAnalysisFree_1.py
Added : mtSuperElement\tests\Beam3DFrequencyAnalysisFree_2.py
Added : mtSuperElement\tests\Beam3DTetra_1.py
Added : mtSuperElement\tests\Beam3DTetra_2.py
Added : mtSuperElement\tests\defoCentrCBSESRIPR_1.py
Added : mtSuperElement\tests\defoCentrCBSESRIPR_2.py
Added : mtSuperElement\tests\defoCentrGSESRIPR_1.py
Added : mtSuperElement\tests\defoCentrGSESRIPR_2.py

Added : mtSuperElement\tests\tools\superElementNew.py
Added : mtSuperElement\tests\tools\loadings.py
Added : mtSuperElement\tests\tools\Beam.py

---------------------------------------------------------------------

Added : abrawal\banc18ER\battery\bladeCasingEngagementFSEGuyan_1.py
Added : abrawal\banc18ER\battery\bladeCasingEngagementFSEGuyan_2.py
Added : abrawal\banc18ER\battery\bladeCentrifugeLoadBSECraig_1.py
Added : abrawal\banc18ER\battery\bladeCentrifugeLoadBSECraig_2.py

Added : abrawal\banc18ER\bladeCasingEngagement\refRefAnalysis\refBAm01FSECraig_1.py
Added : abrawal\banc18ER\bladeCasingEngagement\refRefAnalysis\refBAm01FSECraig_2.py
Added : abrawal\banc18ER\bladeCasingEngagement\refRefAnalysis\refBAm01FSEGuyan_1.py
Added : abrawal\banc18ER\bladeCasingEngagement\refRefAnalysis\refBAm01FSEGuyan_2.py

Added : abrawal\banc18ER\bladeCentrifugeLoad\RefBlade\coarseMeshEasBSECraig_1.py
Added : abrawal\banc18ER\bladeCentrifugeLoad\RefBlade\coarseMeshEasBSECraig_2.py
Added : abrawal\banc18ER\bladeCentrifugeLoad\RefBlade\refMeshEasFSECraig_1.py
Added : abrawal\banc18ER\bladeCentrifugeLoad\RefBlade\refMeshEasFSECraig_2.py
Added : abrawal\banc18ER\bladeCentrifugeLoad\RefBlade\refMeshEasFSEGuyan_1.py
Added : abrawal\banc18ER\bladeCentrifugeLoad\RefBlade\refMeshEasFSEGuyan_2.py
Added : abrawal\banc18ER\bladeCentrifugeLoad\RefBlade\refMeshSriFSECraig_1.py
Added : abrawal\banc18ER\bladeCentrifugeLoad\RefBlade\refMeshSriFSECraig_2.py
Added : abrawal\banc18ER\bladeCentrifugeLoad\RefBlade\refMeshSriFSEGuyan_1.py
Added : abrawal\banc18ER\bladeCentrifugeLoad\RefBlade\refMeshSriFSEGuyan_2.py

Added : abrawal\banc18ER\casingRotAnalysis\RefBlade\Ref2600EasVE5P300Mu035FSECraig_1.py
Added : abrawal\banc18ER\casingRotAnalysis\RefBlade\Ref2600EasVE5P300Mu035FSECraig_2.py
Added : abrawal\banc18ER\casingRotAnalysis\RefBlade\Ref2600EasVE5P300Mu035FSEGuyan_1.py
Added : abrawal\banc18ER\casingRotAnalysis\RefBlade\Ref2600EasVE5P300Mu035FSEGuyan_2.py

Added : abrawal\banc18ER\tools\banc18ER_1.py
Added : abrawal\banc18ER\tools\banc18ER_2.py
Added : abrawal\banc18ER\tools\bladeCasingCheck_1.py
Added : abrawal\banc18ER\tools\bladeCasingCheck_2.py
Added : abrawal\banc18ER\tools\bladeCentrifugeLoad_1.py
Added : abrawal\banc18ER\tools\bladeCentrifugeLoad_2.py
Added : abrawal\banc18ER\tools\superElementNew.py

Claire Hennuyer 2016/04/07