Table of Contents

Commit 2016-07-25

SuperElement : Nettoyage structure 2

Le gros du présent travail consiste en la séparation des structures de construction et d'utilisation des super-éléments.

La construction passe par de nouvelles classes SuperElementBuilder et l'utilisation via la structure usuelle de Metafor : les Super-Elements dérivent de mtElement, utilisent l'ElementFactory, a ses propriétés élémentaires spécifiques, …

SuperElementBuilder : Build Of

seBuilder = CraigBamptonSuperElementBuilder(no, domain) # no : numéro du SE / domain : du modèle FEM
seBuilder = GuyanSuperElementBuilder(no, domain)        # no : numéro du SE / domain : du modèle FEM
seBuilder.setNbModes(nbModes)                           # nombre de modes à interface fixes (CB only)
seBuilder.addInteraction(inter)                         # ajout des interactions constitutives du SE
seBuilder.addBoundary(boundary)                         # ajout des objets définissant la frontière retenue du SE
seBuilder.addExportedGroup(grp)                         # ajout de groups sauvegardés dans le SE
seBuilder.setSolver(solver)                             # Définition du solver utilisé pour construire le SE (dss par défaut)
seBuilder.setSymmetriseK(_symK)                         # force la symétrisation des matrices de construction du SE
SEBuilder.addValueExtractor(no, DbNodalValueExtractor(gobject, Field1D(TX, RE))) # ajout d'extracteurs de déplacement (Field1D(TX, RE), Field1D(TY, RE), Field1D(TZ, RE)) sur les noeuds condensés
seBuilder.computeSuperElement()                         # appel à la fonction de calcul et de sauvegarde du SE

* Une fonction objective de construction des SE (démontrant l'utilisation des builders) se trouve dans le module mtSuperElement.tools.utilities : SuperElementBuilderObjF * le Builder génère 2 fichiers : superElement“no”.py et SE_“no”.gz dans le répertoire de construction

SuperElementInteraction : Use of

def getSuperElementImporter(seNo, domain, buildWDir, seIndex=0):
    seName = 'superElement'+str(seNo)
    #wDirCreate = os.path.split(os.getcwd())[0]+os.sep+'Creation'
    import imp
    (file, pathName, description) = imp.find_module(seName, [buildWDir])    
    seModule = imp.load_module(seName, file, pathName, description)
    #
    sei = seModule.SuperElementImporter(domain, buildWDir, seIndex)
    #sei.execute()
    #sei.importAllGroups()
    #sei.generateAllExtractors(seInter)
    #
    return sei
    prpSE = ElementProperties(GuyanSuperElement)
    seInter= GuyanSuperElementInteraction(no)
    seInter.addProperty(prpSE)
    seInter.push(volumeSet(p['SEIndex'] + 1))
    interactionSet.add(seInter)
    prpSE = ElementProperties(CraigtBamptonSuperElement)
    seInter= CraigtBamptonSuperElementInteraction(no)
    seInter.setNbModes(p['nbNormalModes'])
    seInter.addProperty(prpSE)
    seInter.push(volumeSet(p['SEIndex'] + 1))
    interactionSet.add(seInter)

Forces centrifuges sur SE

Divers sur SE

Divers

Fichiers ajoutés/supprimés

added : oo_meta\mtSuperElement\tools
added : oo_meta\mtSuperElement\tools\utilities.py
added : oo_meta\mtSuperElement\src\CraigBamptonSuperElementBuilder.h/cpp
added : oo_meta\mtSuperElement\src\GuyanSuperElementBuilder.h/cpp
added : oo_meta\mtSuperElement\src\SuperElementBuilder.h/cpp
added : oo_meta\mtSuperElement\src\SuperElementElShcuts.h/inl
added : oo_meta\mtSuperElement\src\SuperElementValueExtractor.h/cpp
deleted: oo_meta\mtSuperElement\tests\tools\utilities.py
deleted: oo_meta\mtSuperElement\tests\tools\postObjectiveFunctions.py
deleted : oo_meta\mtSuperElement\src\CraigBamptonSuperElementValueExtractor.h/cpp
deleted : oo_meta\mtSuperElement\src\CraigBamptonSuperElementValueExtractorUse.h/cpp
deleted : oo_meta\mtSuperElement\src\GuyanSuperElementValueExtractor.h/cpp
deleted : oo_meta\mtSuperElement\src\GuyanSuperElementValueExtractorUse.h/cpp

Tests ajoutés/supprimés

added : oo_meta\apps\sticking\centrifugeLoad3d.py
added : oo_meta\apps\sticking\centrifugeCyclicLoad3d.py
deleted : oo_meta\mtSuperElement\tests\beamCentrifugeLoad\beam3DEas20000Rpm20ModesSkyLineSymK_1.py
deleted : oo_meta\mtSuperElement\tests\beamCentrifugeLoad\beam3DEas20000Rpm20ModesSkyLineSymK_2.py

Luc Papeleux 2016/07/25