Rien

Modifs
- Amélioration de la gestion des Connexions & MachinStr
- Création d'un ConnexionSet. je l'ai commité dans oofelie vu que tous les outils de connexion sont là. Chaque Connexion qui se crée s'enregistre automatiquement dans le ConnexionSet associé au Domain de la Connexion. Ceci permet à n'importe quelle classe qui à accès au Domain d'avoir accès aux Connexions relatives à ce Domain.
- Création d'une liste de VectorStr et MatrixStrBase dans chaque Connexion. Grâce à ces nouveaux liens, il est possible de connaître tous les matrices/vecteurs structuraux relatives à une Connexion. Lorsque celle-ci est modifiée, il est donc possible de mettre à jour ces objets.
- Création d'une fonction "rebuild" pour le VectorStr (cette fonction existait déjà pour les MatrixStrBase pour le défo/défo). Cette fonction permet de mettre à jour un VectorStr quand une Connexion change. Actuellement, on fait l'hypothèse que le nombre de noeuds reste identique (en d'autres mots, lorsqu'une partition diminue, c'est au profit d'une autre). Attention, les VectorStr se remettent à jour sur le pas de temps actuel et non pas sur leur pas de temps d'origine. Pour bien faire, il faudrait que le VectorStr possède un lien vers le Step auquel il se rapporte.
- Amélioration des DofFlags
- Possibilité de désactiver des DofFlags (on pouvait seulement les activer avant ce commit). On peut donc ainsi changer le statut d'un ddl de libre à fixé et inversement autant de fois qu'on le veux en cours de calcul.
- Modification du ElementSet
- Je vais essayer de déplacer le stockage des éléments. Actuellement, il se fait dans un ElementSet situé au niveau du Domain. Cette manière de faire pose des problèmes lorsqu'on envisage d'ajouter/supprimer des éléments ou des interactions ou encore lorsqu'on imagine une future opération de remaillage. La principale difficulté vient du fait que l'ElementSet mélange tous les types d'éléments. On perd donc leur type dès qu'ils sont créés. De plus, il est difficile de supprimer des éléments donnés sans laisser des "trous". Ces trous nécessite une renumérotation qui va rendre difficile le suivi des résultats à un endroit donné du maillage. Il serait donc beaucoup plus judicieux de stocker les éléments dans leur Interaction. A ce moment, ajouter ou supprimer des élements ne pose plus de problèmes. Le fac peut être facilement modifié en conséquence. Il est même plus simple d'aborder le problème du remaillage puisque tous les éléments qui n'interviennent pas dans l'opération (éléments non volumiques) sont mis à part et triés par type.
- Toutes les boucles sur les éléments ont été rapatriées dans l'ElementSet (principalement à partir de Metafor)
- Modification de casts type C (avec parenthèses) en static_cast
- Je croyais que c'était équivalent. Et bien, non, c'est pas la même chose surtout si on utilise l'héritage multiple. Le compilateur C++ est capable de compiler un cast de type C sans rien connaître sur la classe (puisqu'une bête déclaration de type class A; suffit pour écrire (A*)). Si bien que le cast peut être faux !
Fichiers ajoutés/supprimés
A oeKernel/oeConnexionSet.cpp
A oeKernel/oeConnexionSet.h
Modifs
- Amelioration des Loadings
- Comme les DofFlags, les chargements peuvent être activés et désactivés en cours de calcul. Puisque les Loadings ne sont pas numérotés, il faut récupérer une référence lors de leur création (la commande loadset.define retourne maintenant un Activable).
- Possibilité d'activer et désactiver des fixations en cours de calcul
- Interfaçage python (SWIG) des classes Activable et associées pour pouvoir activer et désactiver des objets en cours de calcul.
- FixationSet.define retourne maintenant un objet DofFlag qui est Activable. On peut ainsi activer/désactiver une fixation en écrivant fix1 = fixset.define(...); fix1.deactivate(stm[1]). où stm est le StageManager qui peut être récupéré dans l'analyse Metafor (metafor.getStageManager()). La fonction "print fixset" permet de voir quand les fixations sont actives à des fins de debug.
- Modification des algorithmes d'intégration temporelle pour effectuer le passage de Stage. La détection de passage est automatique et répercutée pour l'instant sur le FixationSet et le LoadingSet uniquement (plus tard ce sera au tour de l'InteractionSet). Celui-ci peut alors informer le StageManager si l'état général de fixation du problème à changé. Dans ce cas, on reconstruit toutes les Connexions et les matrices/vecteurs structuraux associés
Remarque
Dans TimeIntegration, j'ai l'impression que la Connexion mise à jour n'est pas la bonne. J'ai essayé de changer mais on obtient pas toujours de meilleurs temps CPU. Après la modif, le système d'équations possède toujours une largeur de bande max plus faible mais la largeur moyenne est parfois plus élevée. En pratique, cyl3D passe plus lentement mais les autres tests défo/défo sont plus rapides... J'ai donc annulé la modif tant que Ludo n'a pas jeté un oeil au truc.
Fichiers ajoutés/supprimés
A mtElements/MetaElShcuts.cpp