用于分子计算的记忆保存系统

时间:2016-10-20 08:29:35

标签: c++

我目前正在进行MD模拟。它将分子位置存储在载体中。对于每个时间步,存储该向量以在第二个向量中显示,得到

std::vector<std::vector<molecule> > data;

data的大小为time steps*<number of molecules>*sizeof(molecule),其中sizeof(分子)是(已经减少)3*sizeof(double),作为位置向量。对于更大量的时间步长和分子数量,我仍然会遇到记忆问题。

因此,还有可能减少数据量吗?我目前的工作流程是我首先计算所有分子,存储它们,然后通过使用每个分子的每个分子的数据来渲染它们,渲染用Irrlicht完成。 (也许稍后会用搅拌机)。

2 个答案:

答案 0 :(得分:3)

如果轨迹平滑,您可以考虑通过仅存储每第N步并通过插值恢复中间位置来压缩数据。

如果时间步长很小,则可以进行线性插值。顶级质量可以通过三次样条提供。无论如何,样条系数的计算是一个全局操作,您只能在最后执行并且需要额外的存储(!),您可能更喜欢可以从四个连续位置本地构建的基数样条。

enter image description here

答案 1 :(得分:0)

通过以单精度而不是双精度存储位置,您可以获得2倍的改进 - 如果不是模拟,它将足以进行渲染。

但最终您需要将结果存储在文件中并脱机呈现。