Як я міг перевірити правильність результатів симуляції рідини?


9

Я написав програму моделювання рідини на основі частинок. Важко сказати, чи отримаю я правильний результат. Візуалізований результат видається розумним, але частина його виглядає дивно. Я не знаю, чим це особливість рідини. Чи є якийсь точний метод, щоб перевірити, чи правильно моя програма?

Зміни деяких деталей:

Моя програма - це двомовна імітаційна програма на основі частинок. Рідина стискається. Реалізація майже заснована на класичному документі:

Мюллер, Маттіас, Девід Чаріпар та Маркус Гросс. "Моделювання рідини на основі частинок для інтерактивних додатків." Праці СИГРАФУ 2003 року

Я вирішив рівняння Нав'є-Стокса методом ітерації. Він вважав лише тиск, гравітацію, в'язкість і поверхневий натяг.


Можливо, ви можете перерахувати умови рівняння НС з числовою диференціацією та перевірити, як вони скасовуються.
Ів Дауст

Відповіді:


2

Порівняйте його з чужим програмним забезпеченням. Запустіть стандартизований тест і з’ясуйте, чи отримаєте ви приблизно таку ж відповідь, як і інші. Якщо ви отримаєте таку ж відповідь, то ймовірність правильного коду є досить високою.

Деякі тести:

  1. Протік повз циліндр. У 2d візьміть прямокутний домен, циліндр посередині, приплив зліва, витік на бій і обчисліть силу на циліндр. Ось еталон порівняння кількох кодів.

  2. Плавучість потоку. Закрита коробка, плита знизу, холодна плита зверху, гаряча рідина починає підніматися через силу плавучості. Ось орієнтир .

  3. Піднімається міхур, орієнтир .

Але, на жаль, порівняння вашого коду з науковими кодами в цих орієнтирах може бути досить важким. Я думаю, ви реалізували щось на зразок SPH або стабільних рідин, які зроблені не для точності, а для стабільності.

Візьмемо для прикладу потік повз циліндра. Я би розпочав випробування з дуже малого числа Рейнольдса, а потім виміряв би силу на циліндр, оскільки ви збільшуєте точність вашого моделювання (нижчий часовий крок, збільшення підрозділу або збільшення кількості частинок). Чи зближується сила до якоїсь кількості? Якщо ні, то у вас виникають проблеми, якщо так, то подивіться на контрольний папір і порівняйте свій результат з іншими.


Цей метод дуже схожий на методику, яку я використовую для тестування свого raytracer. Я просто відтворюю тестову сцену з чужим рендерінгом і порівнюю її з моїм результатом. Чи сходяться вони до одного результату? Якщо так, то я маю це правильно, якщо ні, то я неправильно.


Замість програмного забезпечення для тестування проти дріжджів на відомих реальних вимірах та динаміці рідини. В іншому випадку ваша помилка буде пошкоджена. Я бачив те саме питання, розміщене в іншому місці в мережі stackexhange btw
joojaa

1
Я думаю, що тестування на вимірювання реального світу добре для тестування, якщо ти маєш право фізики. Якщо ви хочете лише налагодити програму, тоді краще тестувати код інших. Плюс у комп’ютерному моделюванні ви можете виміряти що завгодно, не впливаючи на експеримент. Наприклад, вимірювати швидкість рідини в будь-якій точці просто неможливо в реальному експерименті, але тривіально в комп'ютерному моделюванні.
Том

Так, але ви також успадковуєте проблеми їх вирішувачів. Я визнаю, що я робив це кілька разів, розробляючи багатомобільний симулятор і перевіряючи результати MSC Adams, але заднім числом, що насправді не було надзвичайно корисно
joojaa

Перевірка експерименту в реальному світі була кращою? Я сумніваюся в цьому, але я можу помилитися. Ситуація з фізикою багатотіл сильно відрізняється від фізики рідини. Навіть щось таке просте, як більярд, має хаотичну поведінку. Більше того, жорстка динаміка тіла з контактами навіть не є хорошою математичною проблемою, чи знаєте ви парадокс Пенлеве? Таким чином, чисельне моделювання фізики багатьох тел загалом приречене на провал. Деякі посилання: plus.maths.org/content/chaos-billiard-table en.wikipedia.org/wiki/Painlev%C3%A9_paradox
Tom

1
Так, я знаю, як працює динаміка різних тіл, я свого роду вчу цього (і коротко досліджував це протягом року-двох). Але перевірити відомі аналітичні рішення не було простіше. Але справжня рідина настільки ж хаотична, як і динаміка з кількома тілами. Тож треба вміти перевіряти ситуацію із ламінарним потоком тощо. Хоча тертя сука.
joojaa
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.