Как я могу проверить правильность моего результата симуляции жидкости?

9

Я написал программу моделирования жидкости на основе частиц. Трудно сказать, получаю ли я правильный результат. Визуализированный результат кажется разумным, но некоторая его часть выглядит странно. Я не знаю, это особенность жидкости. Есть ли какой-нибудь точный метод проверки правильности моей программы?

Исправление некоторых деталей:

Моя программа представляет собой программу моделирования на основе двумерных частиц. Жидкость сжимаема. Реализация практически основана на классической статье:

Мюллер, Матиас, Давид Чарипар и Маркус Гросс. «Моделирование жидкости на основе частиц для интерактивных приложений». Слушания ACM SIGGRAPH 2003 года

Я решил уравнение Навье-Стокса итерационным методом. Учитывались только давление, сила тяжести, вязкость и поверхностное натяжение.

Yyao
источник
Может быть, вы можете пересчитать условия уравнения NS с числовым дифференцированием и проверить, как они сокращаются.
Ив Дауст

Ответы:

2

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

Некоторые тесты:

  1. Поток мимо цилиндра. В 2d возьмите прямоугольную область, цилиндр посередине, приток слева, отток по бою и рассчитайте силу на цилиндре. Вот эталонный тест, сравнивающий несколько кодов.

  2. Плавучесть потока. Закрытая коробка, горячая плита снизу, холодная плита сверху, горячая жидкость начинает подниматься из-за силы плавучести. Вот эталон .

  3. Восходящий пузырь, ориентир .

Но, к сожалению, это может быть довольно сложно сравнить ваш код с научными кодами в этих тестах. Я предполагаю, что вы реализовали что-то вроде SPH или стабильных жидкостей, которые созданы не для точности, а для стабильности.

Возьмите, например, поток мимо цилиндра. Я бы начал тестирование с очень небольшого числа Рейнольдса и затем измерял бы силу на цилиндре, когда вы увеличиваете точность моделирования (уменьшаете временной шаг, увеличиваете деление или увеличиваете количество частиц). Сходится ли сила к некоторому числу? Если нет, то у вас есть проблема, если да, то посмотрите на контрольный тест и сравните свой результат с другими.


Этот метод очень похож на технику, которую я использую для тестирования моего raytracer. Я просто визуализирую тестовую сцену с чьим-либо рендером и сравниваю ее с моим результатом. Они сходятся к одному и тому же результату? Если да, то я правильно понял, если нет, то неправильно.

Том
источник
Вместо программного обеспечения, чтобы проверить против Yest против известных измерений реального мира и bechmarks динамики жидкости. В противном случае ваша ошибка испорчена. Я видел тот же вопрос, опубликованный в другом месте в сети stackexhange кстати
joojaa
1
Я думаю, что тестирование в реальном измерении хорошо для тестирования, если вы правильно поняли физику. Если вы хотите только отладить свою программу, лучше протестировать ее на чужом коде. Плюс в компьютерном моделировании вы можете измерить все, что не влияет на эксперимент. Например, измерение скорости жидкости в любой точке просто невозможно в реальном эксперименте, но тривиально в компьютерном моделировании.
Том
Да, но вы также наследуете проблемы их решателей. Я признаю, что делал это несколько раз, разрабатывая многотельный симулятор и проверяя результаты из MSC Adams, но в ретроспективе это не было действительно звездно полезным
joojaa
Проверка против эксперимента в реальном мире была лучше? Я сомневаюсь в этом, но я могу ошибаться. Ситуация с многотельной физикой сильно отличается от физики жидкости. Даже такие простые вещи, как бильярд, ведут себя хаотично. Более того, динамика твердого тела с контактами не является даже хорошо поставленной математической проблемой, знаете ли вы парадокс Пенлеве? Поэтому численное моделирование физики многих тел обречено на провал в целом. Некоторые ссылки: plus.maths.org/content/chaos-billiard-table en.wikipedia.org/wiki/Painlev%C3%A9_paradox
том
1
Да, я знаю, как работает динамика нескольких тел, я как бы учу этому (и кратко исследовал это в течение года или двух). Но никакие проверки по известным аналитическим решениям не было проще. Но настоящая жидкость так же хаотична, как и динамика нескольких тел. Так что нужно уметь проверять ситуацию с ламинарным потоком и т. Д. Однако трение - это сука.
Джуджаа