La création proprement dite du SE, dans l'état précontraint, se décompose en plusieurs étapes :
Guyan/CraigBamptonSuperElementInteraction
n°<no>, qui ne sera pas ajoutée à l'interactionSet du domain.setNumberOfEigenValues
setDomain
.superElemBuiltFlag
à False
→ setSuperElemBuiltFlag
Guyan/CraigBamptonSuperElementInteraction
. Le but est de calculer correctement les différents blocs des matrices k et m du modèle FEM, sur lesquelles le calcul des matrices réduites K et M est basé → addInteraction
puis setSuperElementNodes
setRetainedNodes
superElement<no>.py
qui sera exécuté lors de l'importation du super-élément → createPyFileForSuperElemUse
superElement<no>.py
→ groupsNodesToSave
Guyan/CraigBamptonSuperElement
→ generateElements()
computeSuperElement()
belongingToSuperElem
à false
dans le cas où un autre super-élément est construit dans le même calcul → clearSuperElementNodes()
superElement<no>.py
→ lancée via la construction des Guyan/CraigBamptonSuperElementValueExtractor
⇒ Doit être fait après computeSuperElement() car le super-élément créé doit avoir été ajouté à l'elementSet de l'interaction.Exemple dans le cas Craig-Bampton :
SEInteraction = CraigBamptonSuperElementInteraction(1) # Création de la SuperElementInteraction\\ SEInteraction.setDomain(domain)\\ SEInteraction.setNumberOfEigenValues(self.nbOfNormalModes)\\ SEInteraction.setSuperElemBuiltFlag(False) # False = Création du SE + sauvegarde\\ for inter in interactionsList:\\ SEInteraction.addInteraction(inter) # Ajout des interactions associées au futur SE\\ SEInteraction.setSuperElementNodes() # Identification de tous les noeuds associés aux interactions ajoutées via addInteraction (flag "belongingToSuperElem")\\ SEInteraction.setRetainedNodes(retainedNodesGp) # Détermination des noeuds retenus (flag "belongingToSuperElem" = true / "fixed" = true)\\ SEInteraction.setSymmetrizeK(symmetrizeK)\\ if solver:\\ SEInteraction.setSolver(solver)\\ createPyFileAndSaveGroups(1, groupList)\\ SEInteraction.generateElements() # génération du super-élément\\ SEInteraction.computeSuperElement() # calcul des matrices réduites + sauvegarde du super-élément\\ SEInteraction.clearSuperElementNodes()\\