====== Super-element creation ====== La création proprement dite du SE, dans l'état précontraint, se décompose en plusieurs étapes : * Création de l'interaction ''Guyan/CraigBamptonSuperElementInteraction'' n°, qui ne sera pas ajoutée à l'interactionSet du domain. * Définition du nb de modes propres à interfaces fixes (Craig-Bampton) -> ''setNumberOfEigenValues'' * Association du domaine FEM à l'interaction créée -> ''setDomain''. * Fixation de ''superElemBuiltFlag'' à ''False'' -> ''setSuperElemBuiltFlag'' * Association de toutes les interactions qui définissent le futur SE à l'interaction ''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'' Les matrices k et m du modèle FEM, à partir desquelles les matrices réduites vont être construites, prennent en compte le raidissement centrifuge du à la mise en rotation préalable du modèle FEM. * Détermination des nœuds **Retenus** -> ''setRetainedNodes'' * Création du fichier de sauvegarde ''superElement.py'' qui sera exécuté lors de l'importation du super-élément -> ''createPyFileForSuperElemUse'' \\ => Le n° est le UserNo de l'interaction "super-élément" qui sera créée au moment de l'utilisation du SE ; à chaque n° correspond 1 super-élément. * Sauvegarde des groupes de noeuds RETENUS dans le fichier ''superElement.py'' -> ''groupsNodesToSave'' * Création de l'objet ''Guyan/CraigBamptonSuperElement'' -> ''generateElements()'' * Calcul des matrices réduites et sauvegarde du super-élément -> ''computeSuperElement()'' * Mise à jour des flags ''belongingToSuperElem'' à ''false'' dans le cas où un autre super-élément est construit dans le même calcul -> ''clearSuperElementNodes()'' * Sauvegarde des valeurs des modes statiques de liaison et des modes propres à interfaces fixes (Craig-Bampton) des DDLs Condensés dans le fichier ''superElement.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()\\