Le problème
Je travaille actuellement sur une simulation d'élément fini Navier Stokes et j'aimerais étudier les effets d'une variété de paramètres. Certains paramètres sont spécifiés dans un fichier d'entrée ou via une option de ligne de commande; d'autres paramètres sont fournis sous forme d'indicateurs dans un Makefile, mon code doit donc être recompilé chaque fois que je modifie ces options. Je serais intéressé à obtenir des conseils sur une bonne façon d'explorer systématiquement l'espace des paramètres.
- Existe-t-il des bibliothèques / frameworks C ++ / Python utiles qui peuvent aider avec ce genre de choses? Par exemple, découvrir boost.Program_options a été d'une grande aide car il est possible de surcharger les options du fichier d'entrée avec des arguments de ligne de commande. J'ai également vu certaines personnes utiliser un fichier de travail décrivant chaque cas assez efficacement et un collègue a suggéré que l'écriture de paramètres dans des fichiers vtu sous forme de blocs de commentaires pourrait également fonctionner.
- Peut-être que cela ne vaut pas la peine d'investir beaucoup de temps dans tout cela? Est-ce juste une distraction et une perte de temps et il est préférable de se muscler à travers le processus de test par force brute et ad hoc?
Quelques idées
Je fais actuellement des choses principalement à la main et j'ai rencontré les problèmes suivants:
- Nommer les cas de test . J'ai essayé de stocker les résultats dans des dossiers nommés avec les paramètres d'exécution séparés par des traits de soulignement, par exemple
Re100_dt02_BDF1...
. Celles-ci deviennent rapidement longues ou difficiles à lire / cryptiques si elles sont trop abrégées. En outre, les paramètres de nombre réel incluent un.
qui est maladroit / laid. - Journalisation des données d'exécution . Parfois, j'aimerais voir les résultats écrits sur le terminal et également enregistrés dans un fichier texte. Cette réponse de StackOverflow par exemple est quelque peu utile mais les solutions semblent un peu intrusives.
- Tracer les données selon les paramètres . Il faut un certain temps pour collecter des données pertinentes à partir d'une variété de fichiers journaux dans un seul fichier que je peux ensuite tracer, avec un meilleur système, cela deviendrait peut-être plus facile.
- Enregistrement des commentaires sur les données . Après avoir examiné les résultats, j'écris quelques commentaires dans un fichier texte, mais garder cette synchronisation avec les dossiers de résultats est parfois difficile.