Под «самым простым» я подразумеваю самое простое для изучения и реализации с нуля. Я надеюсь, что на мой вопрос можно более или менее ответить.
Под «самым простым» я подразумеваю самое простое для изучения и реализации с нуля. Я надеюсь, что на мой вопрос можно более или менее ответить.
Ответы:
В двух измерениях формулировку скорости-завихренности проще всего реализовать, потому что переменные расположены совместно, но граничные условия могут быть сложными, и это менее прямая формулировка проблемы. Для примитивных формулировок переменных, разностная методика разностных сеток Харлоу и Уэлча (1965) - отличное место для начала.
Вы можете найти полностью документированную реализацию очень простого, но достаточно эффективного метода решения (метод расщепления Хорина) здесь .
Для выбора других популярных методов, посмотрите на Главу 21 в этой книге .
Отказ от ответственности: я (со) автор как демонстрационной программы, так и книги. Книгу можно скачать бесплатно.
Самое простое всегда будет зависеть от ваших конкретных интересов и потребностей. Я согласен с Андерсом в том, что для несжимаемого потока в областях с простой геометрией вам будет трудно превзойти метод проекции (то есть метод расщепления Хорина), если вы отдадите предпочтение простоте использования и точности.
Чтобы вдаваться в подробности, метод вопроса введен в [1]. Более современный приближенный метод проекции второго порядка хорошо объяснен в [2]. Мотивация состоит в том, что решение полных несжимаемых уравнений Навье-Стокса требует решения для поля скоростей и давления одновременно, и получающаяся в результате линейная система довольно плохо обусловлена. Метод проекции устраняет эту проблему путем разделения каждого временного шага на решение по скорости, используя давление с предыдущего временного шага, с последующим обновлением давления, которое, по существу, обеспечивает, чтобы поле скорости оставалось несжимаемым.
Для этого вам понадобятся несколько других компонентов, но все они могут быть легко изучены и запрограммированы.
Для решения проблемы давления, если вы заинтересованы в системах с постоянной плотностью, вам нужно решить уравнение Пуассона. Есть, конечно, десятки алгоритмов для решения этой проблемы, но на сегодняшний день самым простым для реализации - если, возможно, не до конца - является алгоритм сопряженного градиента (CG). Одно из лучших объяснений CG, которое я читал, было написано Джонатаном Шевчуком и может быть найдено здесь . Тем не менее, вам не обязательно читать всю статью, чтобы иметь возможность просто реализовать алгоритм.
Вам понадобится другой алгоритм для обработки адвекции в Навье-Стоксе. В нескольких измерениях программирование надежных реализаций наиболее гибких методов, например Годунова, может быть довольно сложным. Однако, если вас интересуют потоки с относительно небольшим числом Рейнольдса (т. Е. С незначительной вязкостью), один из по существу не колебательных (ENO) методов прекрасно подходит для удобства использования. Отличный обзор теории и реализации приведен в [3].
Вам нужно будет обработать вязкий термин, используя неявный метод, обычно Crank-Nicolson. Это подробно объясняется в работах по методу проекции, и вы можете легко использовать CG для матричного решения при условии, что вязкость постоянна.
[1] А.Я. Чорин, Численное решение уравнений Навье-Стокса , J. Math. Comput., 22 (1968), с. 745-762
[2] А. Альмгрен, Дж. Б. Белл и В. Шимчак . Численный метод для несжимаемых уравнений Навье-Стокса, основанный на приближенной проекции , SIAM J. Sci. Вычи. 17 (1996), с. 258-369.
[3] С. Ошер, Р. Федкив, Методы установки уровня и динамические неявные поверхности . Спрингер-Верлаг Нью-Йорк. Прикладные математические науки, 153, 2002
В последние годы в компьютерной графике и играх наблюдается огромный интерес к симуляции жидкости. Вот отличная статья от Jos Stam, в которой обсуждается применение решателя для приложений реального времени. Он поставляется с очень простым для понимания исходным кодом. Я не знаю, насколько это точно, но это может быть то, что вы ищете.
Другой действительно хороший и простой метод - использование клеточных автоматов для дискретизации. Есть много таких моделей, в том числе LBA, FHP и многое другое. Они действительно хороши, так как они могут обеспечить симуляцию в реальном времени на современных компьютерах, а также могут быть паралеллизированы и запущены на графических процессорах. У них также есть некоторые недостатки, и результаты сильно зависят от формы применяемой решетки. Квадратная решетка недостаточна, потому что ей не хватает свободы вращения, то есть вихри фон Каармана будут квадратной формы, что нехорошо :)