Как работать с сим-данными по дифференциальным уравнениям

Я изучал динамическое моделирование, такое как движение планет или молекул.

Выходные данные огромны, и сохраняются в виде текстовых данных.

Exp.

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 может быть хорошим.
Дайте мне знать хорошее решение.

Заранее спасибо.

0

Решение

Я работал с базами данных в некоторой степени, и я работал с большим количеством численного моделирования. Мой совет — использовать базу данных SQL, такую ​​как Postgres или MySQL (я рекомендую Postgres поверх MySQL, хотя, вероятно, любая из них будет работать).

Таблица для хранения позиций частиц может иметь один или несколько столбцов, которые индексируют контекстную информацию в других таблицах. Например: таблица позиций может иметь временную метку моделирования (т. Е. Время в мире моделирования), координаты x, y и z и индекс для частицы, которая указывает на другую таблицу, в которой есть столбцы для начальной позиции частица и, возможно, другие описательные данные.

С такой структурой базы данных вы можете выполнять запросы, чтобы найти положение всех частиц в данный момент времени, или положение между двумя моментами, или все позиции для одной частицы.

Из того, что я знаю, SQL лучше подходит для такого использования, чем MongoDB или другие базы данных «NoSQL».

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]