Ce commit a pour but de régler quelques petits défauts de l'algo de remaillage, pour que son utilisation soit vraiment plaisante et agréable. Le but est qu'un utilisateur ne voit pas de différences entre une simulation avec et sans remaillage, au niveau de la vizu, des courbes…
D'ailleurs, maintenant que cette procédure a été réécrite, étendue, automatisée et optimisée, et que je commence à en avoir marre de toujours écrire “la procédure automatique de remaillage”, c'est le bon moment de lui donner un petit nom. Je propose : “a Finally Efficient and Nicely Redesigned Implentation of Remeshing”, donc FENRIR
Jusqu'à présent, le fichier log (nommé dans le workspace resfile.txt
, qui enregistre le flux d'information que metafor sort lors d'un calcul), était ouvert au début dans la fonction integration()
du schéma d'intégration. Ce n'était pas idéal, car tout ce qui se passe avant d'entrer dans cette fonction ou après en être sorti n'était donc pas enregistré.
Dans le cas de calculs classiques (sans remaillage), la perte d'info existe mais est en générale assez minime. Par contre, avec Fenrir, c'est assez gênant car toutes les opérations de reconstruction de domaine, remaillage, transfert de données et rééquilibrage, qui se passent entre deux intégrations temporelles, sont donc perdues. Pareillement, les différents timers, affichés après la dernière intégration, sont aussi perdus.
Pour pouvoir enregistrer ces informations, ce fichier (resFile.txt
) sera dorénavant ouvert “un cran plus haut”, c'est-à-dire dans la fonction meta
de toolbox.utilities
. Pour un calcul classique, cela permet déjà de récupérer une partie du texte qui était précédemment perdue lors de l'initialisation.
Un autre fichier sera aussi ouvert lorsqu'on fait appel à la fonction restart
de toolbox.utilities
. Ce fichier est nommé restartResFile.txt
pour le différencier du précédent, ce qui permet de conserver ces deux fichiers lors d'un restart.
Enfin, un troisième fichier, remeshingResFile.txt
sera ouvert lorsqu'on utilise Fenrir. Il n'est donc plus nécessaire de devoir copier-coller à la main la sortie de Metafor pour conserver des données sur le remaillage.
Du coup, tous les openLogFile()
ont été supprimés des différents schémas d'intégration.
Comme chaque remaillage nécessite de créer un nouveau Metafor, on avait initialement, pour chaque opération de remaillage, de nouvelles fenêtres qui étaient créées. Cela faisait vite beaucoup de fenêtres, et donc lors d'un commit précédent j'avais fait en sorte que la même fenêtre soit utilisée toute la simulation.
Cependant, à chaque remaillage, la caméra se recalibrait automatiquement, à cause d'un resetCamera
présent dans VizWinWidget::addSlot
, c'est-à-dire à chaque fois que l'on rajoute de nouveaux Drawables sur une figure (donc dans mon cas, à chaque remaillage). J'ai mis ce reset en option pour qu'il ne m'ennuie plus. Spéciale dédicace à notre spécialiste Vizu pour m'avoir guidé dans tous les machins VTK-Qt.
Ensuite, toujours à chaque remaillage, lorsque les fenêtres étaient rafraîchies, elle repassaient en premier plan du moniteur. C'est assez gênant d'avoir des fenêtres qui s'imposent quand on essaie de regarder quelque chose, donc j'ai enlevé ça. C'était en fait un vizWinGuiObserver→open()
qui était réalisé au début de chaque intégration temporelle, dans Metafor::initialiseVizwinObservers()
. Cet open
est inutile vu que la fenêtre est déjà ouverte à ce moment là, mais n'était pas gênant pour du calcul classique.
Comme vous le savez, si on lance un test alors qu'il y a des fichiers dans le workspace correspondant, une petite fenêtre s'ouvre pour vérifier que l'on veut bien supprimer les résultats. J'ai adapté ça à Fenrir, pour supprimer d'un coup tous les sous dossiers STEP_XXX
(et uniquement ceux-là, pas les autres), au lieu de devoir le faire un par un.
A : R :
A : R :
— Pierre Joris 2016/01/29