El problema
Actualmente estoy trabajando en una simulación de elementos finitos Navier Stokes y me gustaría investigar los efectos de una variedad de parámetros. Algunos parámetros se especifican en un archivo de entrada o mediante las opciones de una línea de comando; otros parámetros se proporcionan como indicadores en un Makefile, por lo que mi código debe volver a compilarse cada vez que cambio esas opciones. Me interesaría recibir algunos consejos sobre una buena forma de explorar sistemáticamente el espacio de parámetros.
- ¿Existen bibliotecas / frameworks C ++ / Python útiles que puedan ayudar con este tipo de cosas? Por ejemplo, descubrir boost.Program_options fue de gran ayuda ya que es posible sobrecargar las opciones del archivo de entrada con argumentos de línea de comando. También he visto a algunas personas usar un archivo de trabajo que describe cada caso con bastante eficacia y un colega sugirió que escribir parámetros en archivos vtu como bloques de comentarios también podría funcionar.
- ¿Quizás no valga la pena invertir mucho tiempo en esto? ¿Es solo una distracción y una pérdida de tiempo, y lo mejor es simplemente músculo durante el proceso de prueba de fuerza bruta y ad hoc?
Algunos pensamientos
Actualmente estoy haciendo las cosas principalmente a mano y me he encontrado con los siguientes problemas:
- Nombramiento de casos de prueba . Traté de almacenar resultados en carpetas nombradas con los parámetros de ejecución separados con guiones bajos, por ejemplo
Re100_dt02_BDF1...
. Estos se vuelven rápidamente largos o difíciles de leer / crípticos si se abrevian demasiado. Además, los parámetros de números reales incluyen uno.
que es incómodo / feo. - Registro de datos de ejecución . A veces me gustaría ver los resultados escritos en el terminal y también guardados en un archivo de texto. Esta respuesta de StackOverflow, por ejemplo, es algo útil, pero las soluciones parecen ser un poco intrusivas.
- Trazado de datos según el parámetro . Toma bastante tiempo recopilar datos relevantes de una variedad de archivos de registro en un solo archivo que luego puedo trazar, con un sistema mejor tal vez esto sea más fácil.
- Registro de comentarios sobre los datos . Después de examinar los resultados, escribo algunos comentarios en un archivo de texto, pero a veces es difícil mantener esto sincronizado con las carpetas de resultados.