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 SuperElementBuilderboundary) 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)SuperElementImportersei.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