虽然我已经在理论和模拟的交叉领域做了一些工作,但我对这个领域还是很陌生,我需要一些指导。如果有人可以就有关计算科学的介绍性文献以及如何规划科学软件提供一些建议,我将不胜感激。下面是一些更具体的问题。
在我的论文工作期间,我做过并且仍在做量子力学系统的数值模拟,我遇到了以下问题。基本上,这些模拟的三个重要步骤是:求解 ODE 系统,使用该解决方案计算物理可观察量,以及绘制可观察量。我的第一个问题是,在编写软件时,分离这些步骤的最佳实践是什么?程序应该执行所有这些步骤,还是在不同脚本之间划分步骤并在其间保存数据更好?
我担心的是我目前的方法混乱且效率不高。我的第一个脚本一次完成了所有步骤。当 ODE 求解器花费大量时间来求解时,我更改了脚本以保存原始解以供以后使用。我目前的方法是一次性计算解决方案和感兴趣的数量,并将数据保存到文本文件中。绘图由单独的脚本完成。目前,修改一个数字大约需要 0.5-3 小时,恕我直言,这非常慢。
由于参数很多,所以选择哪些变量是固定的、哪些是可变的、x轴是什么等等都有很大的空间。这导致我编写了许多小脚本,每个脚本都针对参数空间的特定区域和特定的 observables 选择而定制,这随后导致了复杂且碎片化的文件夹和文件结构。这是一种好的风格还是应该选择编写涵盖所有可能情况和可观察的程序?