我目前正在进行MD模拟。它将分子位置存储在向量中。对于每个时间步长,该矢量都会存储起来,以显示在第二个矢量中,从而

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


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

因此,还有其他减少数据量的可能性吗?我当前的工作流程是,我首先计算所有分子,将它们存储起来,然后通过使用每个步骤的每个分子的数据来渲染它们,渲染使用Irrlicht完成。 (也许以后用搅拌器)。

最佳答案

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

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

c&#43;&#43; - 用于分子计算的内存保存系统-LMLPHP

关于c++ - 用于分子计算的内存保存系统,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40149260/

10-11 18:25