如何通过微分方程处理sim数据

时间:2013-10-14 03:26:36

标签: c++ simulation numerical

我研究了行星或分子运动等动态模拟。

输出数据很大,并保存为文本数据。

浓淡

FILE* f = fopen("xyzFile.txt", "w");
for (int i=0;i<max;i++) {
    // Ordinary differential equation.
    ode(particle);
    fprintf(f, "%.8f %.8f %.8f\n", particle.x, particle.y, particle.z);
}
fclose(f);

我无法从文件名中找到初始值,创建日期等。

我想有效地保存这些数据。

我必须使用任何数据库吗?我猜Mongodb可以很好。 让我知道很好的解决方案。

提前致谢。

1 个答案:

答案 0 :(得分:0)

我在某种程度上使用过数据库,并且我已经进行了大量的数值模拟。我的建议是使用一个SQL数据库,如Postgres或MySQL(我建议使用Postgres而不是MySQL,尽管其中任何一个都可以使用)。

存储粒子位置的表可以有一个或多个列,用于索引其他表中的上下文信息。例如:位置表可以具有模拟时间戳(即模拟世界中的时间),x,y和z坐标,以及指向另一个表的粒子的索引,该表具有用于初始位置的列。粒子和其他描述性数据。

使用这种数据库结构,您可以执行查询以查找给定时间内所有粒子的位置,或两次之间的位置,或单个粒子的所有位置。

据我所知,SQL比MongoDB或其他“NoSQL”数据库更适合此类用途。