C++ 分子计算的存储系统

C++ 分子计算的存储系统,c++,C++,我目前正在进行MD模拟。它将分子位置存储在一个向量中。对于每个时间步,该向量被存储以在第二个向量中显示,从而产生 std::vector<std::vector<molecule> > data; std::矢量数据; 数据的大小是时间步长**sizeof(molecular),其中sizeof(molecular)是(已经减小)3*sizeof(double),作为位置向量。但我仍然会因为时间步长和分子数量的增加而出现记忆问题 因此,是否存在减少数据量的额外可能性?

我目前正在进行MD模拟。它将分子位置存储在一个向量中。对于每个时间步,该向量被存储以在第二个向量中显示,从而产生

std::vector<std::vector<molecule> > data;
std::矢量数据;
数据的大小
时间步长**sizeof(molecular)
,其中sizeof(molecular)是(已经减小)
3*sizeof(double)
,作为位置向量。但我仍然会因为时间步长和分子数量的增加而出现记忆问题


因此,是否存在减少数据量的额外可能性?我目前的工作流程是首先计算所有分子,存储它们,然后使用每个步骤中每个分子的数据进行渲染,渲染是用Irrlicht完成的。(可能稍后使用blender)。

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


但最终需要将结果存储在文件中并脱机渲染

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


但最终需要将结果存储在文件中并脱机渲染

< P>如果轨迹平滑,则可以考虑仅通过存储第N个步骤来压缩数据,并通过插值恢复中间位置。 如果时间步长很小,可以进行线性插值。三次样条曲线可以提供最高质量。无论如何,样条曲线系数的计算是一个全局操作,您最终只能执行该操作,并且需要额外的存储(!),您可能更喜欢基数样条曲线,它可以从四个连续位置在本地构建


您真的需要保留所有的时间步长吗?您真的需要保留所有的时间步长吗?