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.
- D'abord, on créé deux objets
Metafor, l'un étant associé au domaine FEM (interactionFieldApplicator), l'autre au domaine SE (interactionGuyanSuperElementInteractionouCraigBamptonSuperElementInteractionselon le type choisi). - D'une part, on construit le modèle FEM, et on récupère le
FieldApplicatorassocié au futur super-élément. - D'autre part, on construit le modèle SE :
- On créé l'interaction
Guyan/CraigBamptonSuperElementInteraction. - On fixe le
superElemBuiltFlagàFalse. - On associe le
FieldApplicatorà laGuyan/CraigBamptonSuperElementInteractionafin 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/CraigBamptonSuperElementValueExtractorassocié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).
Le super-élément ainsi construit est sauvegardé dans le sous-dossier <currentWorkDirectory>/Creation au travers des fichiers de sortie suivants :
- step_SE.gz → fichier binaire qui contient toutes les données du super-élément construit :
- Nombre de noeuds
- Nombre de DDLs
- Matrice réduite K
- Matrice réduite M
- Nombre de modes statiques de liaisons (= nombre de DDLs Retenus)
- Modes statiques de liaisons
- retainedNodesFile.txt → fichier qui contient la liste des noeuds retenus et leurs coordonnées.
- groupsSENodesFile.txt → fichier qui contient la liste des groupes de noeuds Retenus (uniquement) pouvant être utiles lors de l'utilisation du super-élément.
- modesValues_Group_<No>_<Nature>_<Variant>.txt → fichier utilisé à l'étape d'utilisation du super-élément pour l'extraction de données en des noeuds condensés. Il contient la valeur des modes statiques de liaison et des modes propres (dans le cas Craig-Bampton) pour la composante (<Nature>,<Variant>) de chaque noeud appartenant au groupe n°<No> (e.g., modesValues_Group_3_TX_RE.txt).
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().
- On importe le super-élément stocké dans le sous-dossier <currentWorkDirectory>/Creation via un
SuperElementImporter(dans le même esprit queBaconImporter) :- 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)
où
SEVolumecorrespond au volume géométrique sur lequel va reposer la cellule élémentaire, etvecSuperElementPointscorrespond au vecteur des points topologiques de la cellule i.e. les noeuds retenus.
- 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…) - On fixe le
superElemBuiltFlagàTrue. - 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).
- On associe le volume géométrique
SEVolume(resp. la side géométriqueSESide), créé(e) lors de l'importation du super-élément, à l'interaction. - On applique les conditions aux limites via les groupes de noeuds Retenus.
- On définit le type d'intégration et tous les paramètres classiques de calcul.
- 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 unGuyan/CraigBamptonSuperElementValueExtractorUse, les valeurs des modes étant stockées dans les fichiers modesValues_Group_<No>_<Nature>_<Variant>.txt.
Implémentation
- Ajout de deux nouveaux types de cellules élémentaires :
CELL_SE_SIDE(2D),CELL_SE_VOLUME(3D) - Ajout de deux nouveaux IDs :
SESIDE_ID(2D),SEVOLUME_ID(3D) - Par conséquent, ajout de deux nouveaux builders :
SuperElemSideBuilder(2D) défini uniquement par un PointSet et une Side (pas de Curve, pas de Wire, etc.),SuperElemVolumeBuilder(3D) défini uniquement par un PointSet et un Volume (pas de Curve, pas de Wire, pas de Side, etc.)
- Ajout de deux nouveaux ValueExtractors utilisables à l'étape d'utilisation du super-élément :
GuyanSuperElementValueExtractorUseetCraigBamptonSuperElementValueExtractorUse - Ajout de deux opérateurs
operator«etoperator»dans les classesMatrixetVectorpour la sauvegarde (resp. le chargement) des matrices réduites et des modes statiques de liaison dans une archive viaOutArchive(resp. à partir d'une archiveInArchive)
- Modification du fichier
battery.pyafin que tous les cas-tests des modulesmtSuperElement.testsetabrawal.banc18ER.batterypuissent fonctionner (fichiers execfile). - Implémentation d'une fonction
writeTSC()dansSuperElementrelative à l'étape de création du super-élément (temps de construction du SE, nb de noeuds, nb de ddls). - Nettoyage des memory leaks (il en reste encore un peu)
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
- Utilisation systématique des éléments EAS pour les cas-tests de mtSuperElement
- Sauf pour
defoCentrCBSESRIPR,defoCentrGSESRIPR,Beam2DTri, etBeam3DTetra. - Avant les super-éléments construits dans les cas-tests de la batterie étaient des éléments STD :
⇒ je me suis assurée que les résultats obtenus avec des éléments STD dans la nouvelle structure donnaient les mêmes résultats que ceux de l'ancienne structure.
- Problème au niveau de la destruction lorsqu'on utilise un DSSolver pour tous les cas-tests avec super-élément de Craig-Bampton :
⇒ pas de problème avec le SkyLineSolver, j'ai donc laissé ce solver pour l'instant. Le problème est lié à la destruction de l'objetfreqAnalysis, et en particulier à celle demechanicalMatrices, et des matrices de type StrMatrixBase qui la définissent (utilisation de getClone() ou pas ?).
⇒ Première correction : ajouts de incRef() et decRef() dansFrequencyAnalysisMethod,GuyanSuperElement, etSolverManagercar la classeLinearSolverdérive deRefCounted.
⇒ A régler définitivement pour mon prochain commit.
- Une toute petite différence sur les résultats des cas-tests
defoCentrCBSESRIPRetdefoCentrGBSESRIPRentre l'ancienne et la nouvelle structure est observée ⇒ à vérifier.
Cas-tests abrawal
- Les fichiers de base
banc18ER.py,bladeCasingCheck.py, etbladeCentrifugeLoad.pyont été conservés dans un premier temps ⇒ la migration de tous les cas-tests abrawal vers la nouvelle structure (pas seulement ceux de la batterie) n'est pas terminée.
- Les nouveaux fichiers
banc18ER_1.py,bladeCasingCheck_1.py, etbladeCentrifugeLoad_1.pyvont être mergés par la suite.
- Une toute petite différence sur les résultats du cas-test
bladeCentrifugeLoadBSECraigentre l'ancienne et la nouvelle structure est observée ⇒ à vérifier.
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
