0

我研究过像行星或分子运动这样的动态模拟。

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

经验。

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可以很好。让我知道很好的解决方案。

提前致谢。

4

1 回答 1

0

我在一定程度上使用过数据库,并且进行过很多数值模拟。我的建议是使用 SQL 数据库,例如 Postgres 或 MySQL(我推荐 Postgres 而不是 MySQL,尽管可能其中任何一个都可以)。

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

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

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

于 2013-10-24T15:44:03.710 回答