问题
我目前正在研究有限元 Navier Stokes 模拟,我想研究各种参数的影响。一些参数在输入文件中或通过命令行选项指定;其他参数在 Makefile 中作为标志提供,因此每当我更改这些选项时都必须重新编译我的代码。我有兴趣获得一些关于系统探索参数空间的好方法的建议。
- 是否有有用的 C++/Python 库/框架可以帮助解决这类问题?例如,发现boost.Program_options是一个很大的帮助,因为可以使用命令行参数重载输入文件选项。我还看到有些人使用作业文件非常有效地描述每种情况,一位同事建议将参数作为注释块写入 vtu 文件也可以。
- 也许根本不值得在这方面投入太多时间?这只是分散注意力和浪费时间,最好只是通过测试过程蛮力和临时性的吗?
一些想法
我目前主要是手工做事,我遇到了以下问题:
- 命名测试用例。我尝试将结果存储在使用下划线分隔的运行参数命名的文件夹中,例如
Re100_dt02_BDF1...
. 如果缩写太多,它们很快就会变得冗长或难以阅读/晦涩难懂。此外,实数参数包括.
尴尬/丑陋的 a。 - 记录运行数据。有时我希望看到写入终端的结果并保存到文本文件中。例如,来自 StackOverflow 的这个答案有点帮助,但解决方案似乎有点侵入性。
- 根据参数绘制数据。将各种日志文件中的相关数据收集到一个文件中需要相当长的时间,然后我可以绘制该文件,如果使用更好的系统,这可能会变得更容易。
- 记录对数据的评论。检查结果后,我在文本文件中写了一些评论,但有时很难将其与结果文件夹保持同步。