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, …
GuyanSuperElementBuilder
, CraigtBamptonSuperElementBuilder
, avec la classe mère SuperElementBuilder
boundary
) peut dorénavant être introduite en plusieurs objets computeSuperElement()
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
superElement“no”.py
). CraigBamptonSuperElementInteraction
ou GuyanSuperElementInteraction
)SE_“no”.gz
) dans le répertoire d'utilisation. 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
sys.path
(auquel cas le premier SuperElement“no”.py
trouvé sera chargé (pas nécessairement le bon)SuperElementImporter
sei.importAllGroups()
sei.importGroup“no”()
sei.generateAllExtractors(seInter)
)sei.generateExtractor“no”(seInter, fname)
) vm.add(newVMNo, SuperElementValueExtractor(seInter, no), 'newName')
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)
InArchive &operator»
)InArchive &operator»
)mtSuperElement.tests.beamCentrifugeLoad.beam3DEas20000Rpm20ModesSkyLineSymK
)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
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