Уравнение навье стокса сжимаемой жидкости

НАВЬЕ́ – СТО́КСА УРАВНЕ́НИЯ
  • В книжной версии

    Том 21. Москва, 2012, стр. 650

    Скопировать библиографическую ссылку:

    • Уравнение навье стокса сжимаемой жидкости
    • Уравнение навье стокса сжимаемой жидкости
    • Уравнение навье стокса сжимаемой жидкости
    • Уравнение навье стокса сжимаемой жидкости
    • Уравнение навье стокса сжимаемой жидкости

    НАВЬЕ́ – СТ О́КСА УРАВНЕ́НИЯ, диф­фе­рен­ци­аль­ные урав­не­ния дви­же­ния сплош­ной сре­ды (жид­ко­сти или га­за), учи­ты­ваю­щие её вяз­кость. Вы­ве­де­ны Л. На­вье в 1822 (опубл. в 1827) на ос­но­ве уп­ро­щён­ной мо­де­ли мо­ле­ку­ляр­ных взаи­мо­дей­ствий. В 1845 Дж. Стокс в ре­зуль­та­те изу­че­ния ста­цио­нар­но­го дви­же­ния не­сжи­мае­мой жид­ко­сти по­лу­чил эти урав­не­ния в совр. фор­ме с ис­поль­зо­ва­ни­ем за­ко­нов со­хра­не­ния мас­сы и им­пуль­са для сплош­ной сре­ды.

    Видео:Science show. Выпуск 51. Уравнение Навье - СтоксаСкачать

    Science show. Выпуск 51. Уравнение Навье - Стокса

    Уравнение Навье-Стокса и симуляция жидкостей на CUDA

    Привет, Хабр. В этой статье мы разберемся с уравнением Навье-Стокса для несжимаемой жидкости, численно его решим и сделаем красивую симуляцию, работающую за счет параллельного вычисления на CUDA. Основная цель — показать, как можно применить математику, лежащую в основе уравнения, на практике при решении задачи моделирования жидкостей и газов.

    Уравнение навье стокса сжимаемой жидкости

    Видео:Уравнение Навье-Стокса на пальцах. МЛФ#2Скачать

    Уравнение Навье-Стокса на пальцах. МЛФ#2

    Уравнение Навье-Стокса для несжимаемой жидкости

    Уравнение навье стокса сжимаемой жидкости

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

    Условно уравнение Навье-Стокса можно разделить на пять частей:

    • Уравнение навье стокса сжимаемой жидкости— обозначает скорость изменения скорости жидкости в точке (его мы и будем считать для каждой частицы в нашей симуляции).
    • Уравнение навье стокса сжимаемой жидкости— перемещение жидкости в пространстве.
    • Уравнение навье стокса сжимаемой жидкости— давление, оказываемое на частицу (здесь Уравнение навье стокса сжимаемой жидкости— коэффициент плотности жидкости).
    • Уравнение навье стокса сжимаемой жидкости— вязкость среды (чем она больше, тем сильнее жидкость сопротивляется силе, применяемой к ее части), Уравнение навье стокса сжимаемой жидкости— коэффициент вязкости).
    • Уравнение навье стокса сжимаемой жидкости— внешние силы, которые мы применяем к жидкости (в нашем случае сила будет играть вполне конкретную роль — она будет отражать действия, совершаемые пользователем.

    Также, так как мы будем рассматривать случай несжимаемой и однородной жидкости, мы имеем еще одно уравнение: Уравнение навье стокса сжимаемой жидкости. Энергия в среде постоянна, никуда не уходит, ниоткуда не приходит.

    Будет неправильно обделить всех читателей, которые не знакомы с векторным анализом, поэтому заодно и бегло пройдемся по всем операторам, присутствующим в уравнении (однако, настоятельно рекомендую вспомнить, что такое производная, дифференциал и вектор, так как они лежат в основе всего того, о чем пойдет речь ниже).

    Начнем мы с с оператора набла, представляющего из себя вот такой вектор (в нашем случае он будет двухкомпонентным, так как жидкость мы будет моделировать в двумерном пространстве):

    Уравнение навье стокса сжимаемой жидкости

    Оператор набла представляет из себя векторный дифференциальный оператор и может быть применен как к скалярной функции, так и к векторной. В случае скаляра мы получаем градиент функции (вектор ее частных производных), а в случае вектора — сумму частых производных по осям. Главная особенность данного оператора в том, что через него можно выразить основные операции векторного анализа — grad (градиент), div (дивергенция), rot (ротор) и Уравнение навье стокса сжимаемой жидкости(оператор Лапласа). Стоит сразу же отметить, что выражение Уравнение навье стокса сжимаемой жидкостине равносильно Уравнение навье стокса сжимаемой жидкости— оператор набла не обладает коммутативностью.

    Как мы увидим далее, эти выражения заметно упрощаются при переходе на дискретное пространство, в котором мы и будем проводить все вычисления, так что не пугайтесь, если на данный момент вам не очень понятно, что же со всем этим делать. Разбив задачу на несколько частей, мы последовательно решим каждую из них и представим все это в виде последовательного применения нескольких функций к нашей среде.

    Видео:Вывод уравнений Навье-Стокса - Лекция 3Скачать

    Вывод уравнений Навье-Стокса - Лекция 3

    Численное решение уравнения Навье-Стокса

    Чтобы представить нашу жидкость в программе, нам необходимо получить математическую репрезентацию состояния каждой частицы жидкости в произвольный момент времени. Самый удобный для этого метод — создать векторное поле частиц, хранящее их состояние, в виде координатной плоскости:

    Уравнение навье стокса сжимаемой жидкости

    В каждой ячейке нашего двумерного массива мы будем хранить скорость частицы в момент времени Уравнение навье стокса сжимаемой жидкости, а расстояние между частицами обозначим за Уравнение навье стокса сжимаемой жидкостии Уравнение навье стокса сжимаемой жидкостисоответственно. В коде же нам будет достаточно изменять значение скорости каждую итерацию, решая набор из нескольких уравнений.

    Теперь выразим градиент, дивергенцию и оператор Лапласа с учетом нашей координатной сетки ( Уравнение навье стокса сжимаемой жидкости— индексы в массиве, Уравнение навье стокса сжимаемой жидкости— взятие соответствующих компонентов у вектора):

    ОператорОпределениеДискретный аналог
    gradУравнение навье стокса сжимаемой жидкостиУравнение навье стокса сжимаемой жидкости
    divУравнение навье стокса сжимаемой жидкости Уравнение навье стокса сжимаемой жидкости
    Уравнение навье стокса сжимаемой жидкостиУравнение навье стокса сжимаемой жидкостиУравнение навье стокса сжимаемой жидкости
    rotУравнение навье стокса сжимаемой жидкостиУравнение навье стокса сжимаемой жидкости

    Мы можем еще сильнее упростить дискретные формулы векторных операторов, если положим, что Уравнение навье стокса сжимаемой жидкости. Данное допущение не будет сильно сказываться на точности алгоритма, однако уменьшает количество операций на каждую итерацию, да и в целом делает выражения приятней взгляду.

    Перемещение частиц

    Данные утверждения работают только в том случае, если мы можем найти ближайшие частицы относительно рассматриваемой на данный момент. Чтобы свести на нет все возможные издержки, связанные с поиском таковых, мы будет отслеживать не их перемещение, а то, откуда приходят частицы в начале итерации путем проекции траектории движения назад во времени (проще говоря, вычитать вектор скорости, помноженный на изменение времени, из текущей позиции). Используя этот прием для каждого элемента массива, мы будем точно уверены, что у любой частицы будут «соседи»:

    Уравнение навье стокса сжимаемой жидкости

    Положив, что Уравнение навье стокса сжимаемой жидкости— элемент массива, хранящий состояния частицы, получаем следующую формулу для вычисления ее состояния через время Уравнение навье стокса сжимаемой жидкости(мы полагаем, что все необходимые параметры в виде ускорения и давления уже рассчитаны):

    Уравнение навье стокса сжимаемой жидкости

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

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

    Вязкость

    Уравнение навье стокса сжимаемой жидкости

    . В таком случае итеративное уравнение для скорости примет следующий вид:

    Уравнение навье стокса сжимаемой жидкости

    Мы несколько преобразуем данное равенство, приведя его к виду Уравнение навье стокса сжимаемой жидкости(стандартный вид системы линейных уравнений):

    Уравнение навье стокса сжимаемой жидкости

    где Уравнение навье стокса сжимаемой жидкости— единичная матрица. Такие преобразования нам необходимы, чтобы в последствии применить метод Якоби для решения нескольких схожих систем уравнений. Его мы также обсудим в дальнейшем.

    Внешние силы

    Уравнение навье стокса сжимаемой жидкости

    Импульс-вектор легко посчитать как разность между предыдущей позицией мыши и текущей (если такая имелась), и здесь как раз-таки можно проявить креативность. Именно в этой части алгоритма мы можем внедрить добавление цветов в жидкость, ее подсветку и т.п. К внешним силам также можно отнести гравитацию и температуру, и хоть реализовать такие параметры несложно, в данной статье рассматривать их мы не будем.

    Давление

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

    Назовем Уравнение навье стокса сжимаемой жидкостивекторное поле, полученное после расчета перемещения, внешних сил и вязкости. Оно будет иметь ненулевую дивергенцию, что противоречит условию несжимаемости жидкости (Уравнение навье стокса сжимаемой жидкости), и чтобы это исправить, необходимо рассчитать давление. Согласно теореме разложения Гельмгольца, Уравнение навье стокса сжимаемой жидкостиможно представить как сумму двух полей:

    Уравнение навье стокса сжимаемой жидкости

    где Уравнение навье стокса сжимаемой жидкости— и есть искомое нами векторное поле с нулевой дивергенцией. Доказательство этого равенства в данной статье приводиться не будет, однако в конце вы сможете найти ссылку с подробным объяснением. Мы же можем применить оператор набла к обоим частям выражения, чтобы получить следующую формулу для расчета скалярного поля давления:

    Уравнение навье стокса сжимаемой жидкости

    Записанное выше выражение представляет из себя уравнение Пуассона для давления. Его мы также можем решить вышеупомянутым методом Якоби, и тем самым найти последнюю неизвестную переменную в уравнении Навье-Стокса. В принципе, системы линейных уравнений можно решать самыми разными и изощренными способами, но мы все же остановимся на самом простом из них, чтобы еще больше не нагружать данную статью.

    Граничные и начальные условия

    Любое дифференциальное уравнение, моделируемое на конечной области, требует правильно заданных начальных или граничных условий, иначе мы с очень большой вероятностью получим физически неверный результат. Граничные условия устанавливаются для контролирования поведения жидкости близ краев координатной сетки, а начальные условия задают параметры, которые имеют частицы в момент запуска программы.

    Начальные условия будут весьма простыми — изначально жидкость неподвижна (скорость частиц равна нулю), и давление также равно нулю. Граничные условия будут задаваться для скорости и давления приведенными формулами:

    Уравнение навье стокса сжимаемой жидкости

    Уравнение навье стокса сжимаемой жидкости

    Тем самым, скорость частиц на краях будет противоположна скорости у краев (тем самым они будут отталкиваться от края), а давление равно значению непосредственно рядом с границей. Данные операции следует применить ко всем ограничивающим элементам массива (к примеру, есть размер сетки Уравнение навье стокса сжимаемой жидкости, то алгоритм мы применим для клеток, отмеченных на рисунке синим):

    Уравнение навье стокса сжимаемой жидкости

    Краситель

    Уравнение навье стокса сжимаемой жидкости

    В формуле Уравнение навье стокса сжимаемой жидкостиотвечает за пополнение красителем области (возможно, в зависимости от того, куда нажмет пользователь), Уравнение навье стокса сжимаемой жидкостинепосредственно является количество красителя в точке, а Уравнение навье стокса сжимаемой жидкости— коэффициент диффузии. Решить его не составляет большого труда, так как вся основная работа по выводу формул уже проведена, и достаточно лишь сделает несколько подстановок. Краску можно реализовать в коде как цвет в формате RGB, и в таком случае задача сводится к операциям с несколькими вещественными величинами.

    Завихренность

    Уравнение навье стокса сжимаемой жидкости

    Уравнение навье стокса сжимаемой жидкости

    Уравнение навье стокса сжимаемой жидкости

    Уравнение навье стокса сжимаемой жидкости

    Уравнение навье стокса сжимаемой жидкостиесть результат применения ротора к вектору скорости (его определение дано в начале статьи), Уравнение навье стокса сжимаемой жидкости— градиент скалярного поля абсолютных значений Уравнение навье стокса сжимаемой жидкости. Уравнение навье стокса сжимаемой жидкостипредставляет нормализованный вектор Уравнение навье стокса сжимаемой жидкости, а Уравнение навье стокса сжимаемой жидкости— константа, контролирующая, насколько большими будут завихренности в нашей жидкости.

    Метод Якоби для решения систем линейных уравнений

    Уравнение навье стокса сжимаемой жидкости

    Для нас Уравнение навье стокса сжимаемой жидкости— элементы массива, представляющие скалярное или векторное поле. Уравнение навье стокса сжимаемой жидкости— номер итерации, его мы можем регулировать, чтобы как увеличить точность расчета или наоборот уменьшить, и повысить производительность.

    Для расчет вязкости подставляем: Уравнение навье стокса сжимаемой жидкости, Уравнение навье стокса сжимаемой жидкости, Уравнение навье стокса сжимаемой жидкости, здесь параметр Уравнение навье стокса сжимаемой жидкости— сумма весов. Таким образом, нам необходимо хранить как минимум два векторных поля скоростей, чтобы независимо считать значения одного поля и записывать их в другое. В среднем, для расчета поля скорости методом Якоби необходимо провести 20-50 итераций, что весьма много, если бы мы выполняли вычисления на CPU.

    Для уравнения давления мы сделаем следующую подстановку: Уравнение навье стокса сжимаемой жидкости, Уравнение навье стокса сжимаемой жидкости, Уравнение навье стокса сжимаемой жидкости, Уравнение навье стокса сжимаемой жидкости. В результате мы получим значение Уравнение навье стокса сжимаемой жидкостив точке. Но так как оно используется только для расчета градиента, вычитаемого из поля скорости, дополнительные преобразования можно не выполнять. Для поля давления лучше всего выполнять 40-80 итераций, потому что при меньших числах расхождение становится заметным.

    Видео:Уравнения Навье-Стокса - Numberphile на русском.Скачать

    Уравнения Навье-Стокса - Numberphile на русском.

    Реализация алгоритма

    Реализовывать алгоритм мы будем на C++, также нам потребуется Cuda Toolkit (как его установить вы можете прочитать на сайте Nvidia), а также SFML. CUDA нам потребуется для распараллеливания алгоритма, а SFML будет использоваться только для создания окна и отображения картинки на экране (В принципе, это вполне можно написать на OpenGL, но разница в производительности будет несущественна, а вот код увеличится еще строк на 200).

    Cuda Toolkit

    Сначала мы немного поговорим о том, как использовать Cuda Toolkit для распараллеливания задач. Более подробный гайд предоставляется самой Nvidia, поэтому здесь мы ограничимся только самым необходимым. Также предполагается, что вы смогли установить компилятор, и у вас получилось собрать тестовый проект без ошибок.

    Чтобы создать функцию, исполняющуюся на GPU, для начала необходимо объявить, сколько ядер мы хотим использовать, и сколько блоков ядер нужно выделить. Для этого Cuda Toolkit предоставляет нам специальную структуру — dim3, по умолчанию устанавливающую все свои значения x, y, z равными 1. Указывая ее как аргумент при вызове функции, мы можем управлять количеством выделяемых ядер. Так как работаем мы с двумерным массивом, то в конструкторе необходимо установить только два поля: x и y:

    где size_x и size_y — размер обрабатываемого массива. Сигнатура и вызов функции выглядят следующим образом (тройные угловые скобки обрабатываются компилятором Cuda):

    В самой функции можно восстановить индексы двумерного массива через номер блока и номер ядра в этом блоке по следующей формуле:

    Следует отметить, что функция, исполняемая на видеокарте, должна быть обязательно помечена тегом __global__ , а также возвращать void, поэтому чаще всего результаты вычислений записываются в передаваемый как аргумент и заранее выделенный в памяти видеокарты массив.

    За освобождение и выделение памяти на видеокарте отвечают функции CudaMalloc и CudaFree. Мы можем оперировать указателями на область памяти, которые они возвращают, но получить доступ к данным из основного кода не можем. Самый простой способ вернуть результаты вычислений — воспользоваться cudaMemcpy, схожей со стандартным memcpy, но умеющей копировать данные с видеокарты в основную память и наоборот.

    SFML и рендер окна

    Вооружившись всеми этими знаниями, мы наконец можем перейти к непосредственному написанию кода. Для начала давайте создадим файл main.cpp и разместим туда весь вспомогательный код для рендера окна:

    строка в начале функции main

    создает изображение формата RGBA в виде одномерного массива с константной длиной. Его мы будем передавать вместе с другими параметрами (позиция мыши, разница между кадрами) в функцию computeField. Последняя, как и несколько других функций, объявлены в kernel.cu и вызывают код, исполняемый на GPU. Документацию по любой из функций вы можете найти на сайте SFML, в коде файла не происходит ничего сверхинтересного, поэтому мы не будем надолго на нем останавливаться.

    Вычисления на GPU

    Чтобы начать писать код под gpu, для начала создадим файл kernel.cu и определим в нем несколько вспомогательных классов: Color3f, Vec2, Config, SystemConfig:

    Атрибут __host__ перед именем метода означает, что код может исполнятся на CPU, __device__ , наоборот, обязует компилятор собирать код под GPU. В коде объявляются примитивы для работы с двухкомпонентными векторами, цветом, конфиги с параметрами, которые можно менять в рантайме, а также несколько статических указателей на массивы, которые мы будем использовать как буферы для вычислений.

    cudaInit и cudaExit также определяеются достаточно тривиально:

    В функции инициализации мы выделяем память под двумерные массивы, задаем массив цветов, которые мы будем использовать для раскраски жидкости, а также устанавливаем в конфиг значения по умолчанию. В cudaExit мы просто освобождаем все буферы. Как бы это парадоксально не звучало, для хранения двумерных массивов выгоднее всего использовать одномерные, обращение к которым будет осуществляться таким выражением:

    Начнем реализацию непосредственного алгоритма с функции перемещения частиц. В advect передаются поля oldField и newField (то поле, откуда берутся данные и то, куда они записываются), размер массива, а также дельта времени и коэффициент плотности (используется для того, чтобы ускорить растворение красителя в жидкости и сделать среду не сильно чувствительной к действиям пользователя). Функция билинейной интерполяции реализована классическим образом через вычисление промежуточных значений:

    Функцию диффузии вязкости было решено разделить на несколько частей: из главного кода вызывается computeDiffusion, которая вызывает diffuse и computeColor заранее указанное число раз, а затем меняет местами массив, откуда мы берем данные, и тот, куда мы их записываем. Это самый простой способ реализовать параллельную обработку данных, но мы расходует в два раза больше памяти.

    Обе функции вызывают вариации метода Якоби. В теле jacobiColor и jacobiVelocity сразу же идет проверка, что текущие элементы не находятся на границе — в этом случае мы должны установить их в соответствии с формулами, изложенными в разделе Граничные и начальные условия.

    Применение внешней силы реализовано через единственную функцию — applyForce, принимающую как аргументы позицию мыши, цвет красителя, а также радиус действия. С ее помощью мы можем придать скорость частицам, а также красить их. братная экспонента позволяет сделать область не слишком резкой, и при этом достаточно четкой в указанном радиусе.

    Расчет завихренности представляет из себя уже более сложный процесс, поэтому его мы реализуем в computeVorticity и applyVorticity, заметим также, что для них необходимо определить два таких векторных оператора, как curl (ротор) и absGradient (градиент абсолютных значений поля). Чтобы задать дополнительные эффекты вихря, мы умножаем Уравнение навье стокса сжимаемой жидкостикомпоненту вектора градиента на Уравнение навье стокса сжимаемой жидкости, а затем нормализируем его, разделив на длину (не забыв при этом проверить, что вектор ненулевой):

    Следующим этапом алгоритма будет вычисление скалярного поля давления и его проекция на поле скорости. Для этого нам потребуется реализовать 4 функции: divergency, которая будет считать дивергенцию скорости, jacobiPressure, реализующую метод Якоби для давления, и computePressure c computePressureImpl, проводящие итеративные вычисления поля:

    Проекция умещается в две небольшие функции — project и вызываемой ей gradient для давления. Это, можно сказать, последний этап нашего алгоритма симуляции:

    После проекции мы смело можем перейти к отрисовке изображения в буфер и различным пост-эффектам. В функции paint выполняется копирование цветов из поля частиц в массив RGBA. Также была реализована функция applyBloom, которая подсвечивает жидкость, когда на нее наведен курсор и нажата клавиша мыши. Из опыта, такой прием делает картину более приятной и интересной для глаз пользователя, но он вовсе не обязателен.

    В постобработке также можно подсвечивать места, в которых жидкость имеет наибольшую скорость, менять цвет в зависимости от вектора движения, добавлять различные эффекты и прочее, но в нашем случае мы ограничимся своеобразным минимумом, ведь даже с ним изображения получаются весьма завораживающими (особенно в динамике):

    И под конец у нас осталась одна главная функция, которую мы вызываем из main.cppcomputeField. Она сцепляет воедино все кусочки алгоритма, вызывая код на видеокарте, а также копирует данные с gpu на cpu. В ней же находится и расчет вектора импульса и выбор цвета красителя, которые мы передаем в applyForce:

    Видео:Гладкое решение уравнения Навье — СтоксаСкачать

    Гладкое решение уравнения Навье — Стокса

    Заключение

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

    Как автор данной статьи, я буду искренне признателен любым комментариям и дополнениям, и постараюсь ответить на все возникшие у вас вопросы под этим постом.

    Дополнительный материал

    Весь исходный код, приведенный в данной статье, вы можете найти в моем Github-репозитории. Любые предложения по улучшению приветствуются.

    Оригинальный материал, послуживший основой для данной статьи, вы можете прочесть на официальном сайте Nvidia (англ). В нем также представлены примеры реализации частей алгоритма на языке шейдеров:
    developer.download.nvidia.com/books/HTML/gpugems/gpugems_ch38.html

    Доказательство теоремы разложения Гельмгольца и огромное количество дополнительного материала про механику жидкостей можно найти в данной книге (англ, см. раздел 1.2):
    Chorin, A.J., and J.E. Marsden. 1993. A Mathematical Introduction to Fluid Mechanics. 3rd ed. Springer.

    Канал одного англоязычного ютубера, делающего качественный контент, связанной с математикой, и решением дифференциальных уравнений в частности (англ). Очень наглядные ролики, помогающие понять суть многих вещей в математике и физике:
    3Blue1Brown — YouTube
    Differential Equations (3Blue1Brown)

    Также выражаю благодарность WhiteBlackGoose за помощь в подготовке материала для статьи.

    И под конец небольшой бонус — несколько красивых скриншотов, снятых в программе:

    Уравнение навье стокса сжимаемой жидкости
    Прямой поток (дефолтные настройки)

    Уравнение навье стокса сжимаемой жидкости
    Водоворот (большой радиус в applyForce)

    Уравнение навье стокса сжимаемой жидкости
    Волна (высокая завихренность + диффузия)

    Также по многочисленным просьбам добавил видео с работой симуляции:

    Видео:Математика в неожиданных местах: Уравнения Навье-Стокса - 3Скачать

    Математика в неожиданных местах: Уравнения Навье-Стокса - 3

    Уравнения Навье-Стокса

    Очень часто при математическом моделировании природных явлений или технических задач гидро- и газодинамики используют уравнения Навье-Стокса, названные в честь французского физика Анри Навье и британского математика Джорджа Стокса. Что же они собой представляют? Это уравнение движения и уравнение неразрывности. В зависимости от физической модели явления они могут иметь несколько различный вид.

    Так для нестационарного течения несжимаемой вязкой ньютоновской жидкости часто записывают в виде:

    Уравнение навье стокса сжимаемой жидкости(40)

    где Уравнение навье стокса сжимаемой жидкости– оператор набла (величина векторная).

    Если умножить Ñ на скаляр j, то получится вектор Уравнение навье стокса сжимаемой жидкости. Если умножить Ñ скалярно на вектор Уравнение навье стокса сжимаемой жидкости, то получится скаляр Уравнение навье стокса сжимаемой жидкостиЕсли умножить Ñ векторно на вектор Уравнение навье стокса сжимаемой жидкости, то получится вектор

    Уравнение навье стокса сжимаемой жидкости

    Если умножить скалярно оператор набла сам на себя, то

    Уравнение навье стокса сжимаемой жидкости– оператор Лапласа (скаляр). Оператор набла – необычный вектор, он действует на поля, стоящие от него справа и не действует на поля, стоящие от него слева, поэтому:

    Уравнение навье стокса сжимаемой жидкости

    Уравнение навье стокса сжимаемой жидкости

    Уравнение навье стокса сжимаемой жидкости– векторное поле массовых сил.

    Если мы внимательно рассмотрим уравнения Навье-Стокса, то обнаружим, что это уравнения (26) – (29). В указанных уравнениях f представлено проекциями ускорения свободного падения на координатные оси. В общем случае это может быть и другая массовая сила, например, инерции для жидкости в баке ракеты, летящей с ускорением.

    Для нестационарного течения сжимаемой жидкости уравнения Навье-Стокса принимают более сложный вид:

    Уравнение навье стокса сжимаемой жидкости(41)

    Уравнения Навье-Стокса содержат шесть неизвестных: Уравнение навье стокса сжимаемой жидкости, а уравнений 4, с учетом записи уравнения движения в проекциях по осям, поэтому систему уравнений дополняют уравнением состояния Уравнение навье стокса сжимаемой жидкостии зависимостью вязкости от температуры. Так как появилась еще одна неизвестная Т, необходимо добавить еще одно уравнение – уравнение баланса энергии.

    Общее решение уравнений Навье-Стокса, которые являются нелинейными дифференциальными уравнениями второго порядка в частных производных, до сих пор не найдено. В нахождении общего решения большая роль в настоящее время отводится приближенным численным методам, в частности, таким, как метод конечных элементов, метод граничных элементов, метод контрольных объемов. Не имея пока общего решения, можно получить ряд практически важных частных решений, вводя различные упрощения.

    При превышении числа Рейнольдса выше некоторого критического значения аналитическое точное решение для пространственного или плоского потока имеет хаотический вид (так называемая турбулентность). Для уравнений Навье-Стокса характерна исключительная чувствительность к изменению коэффициентов уравнения при турбулентном режиме: при изменении числа Re на 0,05 % решения совершенно отличаются друг от друга.

    В настоящий момент создано большое количество разнообразных моделей для расчёта турбулентных течений. Они отличаются друг от друга сложностью решения и точностью описания течения. Основная идея моделей сводится к предположению о существовании средней скорости потока и среднего отклонения от него: Уравнение навье стокса сжимаемой жидкостиПосле упрощения уравнений Навье–Стокса, в них помимо неизвестных средних скоростей появляются произведения средних отклонений Уравнение навье стокса сжимаемой жидкости. Различные модели моделируют их по-разному. Перечисленные ниже модели применяются в различных инженерных расчётах в зависимости от необходимой точности. Практически все они реализованы в современных программах расчёта гидродинамических течений.

    Основные из этих моделей в порядке возрастания сложности:

    · модель Буссинеска: уравнения Навье-Стокса преобразуются к виду, в котором добавлено влияние турбулентной вязкости.

    · Модель Спаларта-Альмараса: в данной модели решается одно дополнительное уравнение переноса коэффициента турбулентной вязкости.

    · Уравнение навье стокса сжимаемой жидкостимодель:уравнения движения преобразуется к виду, в котором добавлено влияние флуктуации средней скорости (в виде турбулентной кинетической энергии) и процесса уменьшения этой флуктуации за счёт вязкости (диссипации); в данной модели решается 2 дополнительных уравнения для транспорта кинетической энергии турбулентности и транспорта диссипации турбулентности; это наиболее часто используемая модель при решении реальных инженерных задач.

    · Уравнение навье стокса сжимаемой жидкостимодель:похожа на предыдущую, вместо уравнения диссипации решается уравнение для скорости диссипации турбулентной энергии.

    · Модель напряжений Рейнольдса: в рамках осреднённых по Рейнольдсу уравнений решается 7 дополнительных уравнений для транспорта напряжений Рейнольдса.

    · Метод крупных вихрей: занимает промежуточное положение между моделями, использующими осреднённые уравнения Рейнольдса и DNS; решается для больших образований в жидкости; влияние вихрей меньше, чем размеры ячейки расчётной сетки, заменяется эмпирическими моделями.

    · Прямое численное моделирование (английская аббревиатура DNS): дополнительных уравнений нет; решаются нестационарные уравнения Навье-Стокса с очень мелким шагом по времени, на мелкой пространственной сетке. По сути не является моделью. Из-за громадного объёма информации, полученной при численном моделировании, ценность представляют средние значения потока, полученные при решении задачи с которыми могут сравниваться другие модели.

    Все модели имеют преимущества и недостатки. Области применения, для которых получены модельные постоянные на основе сравнения результатов расчёта с экспериментами, ограничены. Например, Уравнение навье стокса сжимаемой жидкостимодель плохо подходит для областей с вихрем.

    Математические модели механических систем (ММ МС)

    В механических системах в зависимости от характера их функционирования происходят процессы деформации твердой упруго-пластической среды с распределенными переменными или движение сосредоточенной области с расчетными скоростями и перемещениями под действием внешних сил или моментов.

    Основной субстанцией является импульс сил деформации для механических упругих систем (МУС) и количество движения для систем поступательного, вращательного или плоскопараллельного движения (МСПД, МСВД, МСППД).

    Уравнение навье стокса сжимаемой жидкостиили Уравнение навье стокса сжимаемой жидкости.

    Микропоток импульса сил деформации в направлении каждой из координатных осей соответствует тензорному вектору нормальных и касательных напряжений. Так для направления оси x:

    Уравнение навье стокса сжимаемой жидкости, (42)

    где sxx – нормальные напряжения вдоль оси x по поверхности, перпендикулярной оси x;

    sxy, sxz – касательные напряжения вдоль оси x по поверхностям, перпендикулярным осям y и z соответственно.

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

    Уравнение навье стокса сжимаемой жидкостиИногда для удобства касательные напряжения обозначают тоже буквой «s».

    Распределенные модели (динамическая, трехмерная)

    Уравнение навье стокса сжимаемой жидкостиили

    Уравнение навье стокса сжимаемой жидкости(43)

    Составляющие вектора тензора напряжений для объемно-деформированного состояния упругой среды определяются соотношениями теории упругости:

    Уравнение навье стокса сжимаемой жидкостигде Уравнение навье стокса сжимаемой жидкости– абсолютные деформации в направлениях осей координат;

    Уравнение навье стокса сжимаемой жидкости– параметры Ламе;

    E, m – модуль упругости Юнга и коэффициент Пуассона.

    Подставив выражения для нормальных и касательных напряжений через деформации и выполнив достаточно простые преобразования, получим уравнение сохранения импульса сил деформации или основное уравнение упругости Ламе:

    Уравнение навье стокса сжимаемой жидкости(44)

    Аналогичные уравнения можно записать и по двум другим направлениям

    Уравнение навье стокса сжимаемой жидкости

    Уравнение навье стокса сжимаемой жидкости

    В векторном виде эта система уравнений имеет вид:

    Уравнение навье стокса сжимаемой жидкости. (45)

    Начальные и граничные условия:

    НУ: Уравнение навье стокса сжимаемой жидкости

    ГУ: для Уравнение навье стокса сжимаемой жидкости

    для автономной области;

    Уравнение навье стокса сжимаемой жидкости

    при взаимодействии области с соседними механическими системами задается поле переменных действия Уравнение навье стокса сжимаемой жидкостипо поверхности Уравнение навье стокса сжимаемой жидкости(внешних давлений).

    Дата добавления: 2015-06-10 ; просмотров: 3104 ; ЗАКАЗАТЬ НАПИСАНИЕ РАБОТЫ

    🌟 Видео

    Дискретизация уравнений Навье-Стокса несжимаемой жидкости методами компьютерной алгебрыСкачать

    Дискретизация уравнений Навье-Стокса несжимаемой жидкости методами компьютерной алгебры

    Уравнение Навье — Стокса для чайниковСкачать

    Уравнение Навье — Стокса для чайников

    Visual C++. Программа решения уравнений Навье-Стокса. Урок 6. Решение модельного уравнения энергииСкачать

    Visual C++. Программа решения уравнений Навье-Стокса. Урок 6. Решение модельного уравнения энергии

    В А Садовничий, О А Олейник, Гагарин и уравнение Навье–СтоксаСкачать

    В А Садовничий, О А Олейник, Гагарин и уравнение Навье–Стокса

    Лекция 2. Уравнение неразрывностиСкачать

    Лекция 2.  Уравнение неразрывности

    Механика Л20. 2022. Гидродинамика. Уравнение Навье-СтоксаСкачать

    Механика Л20. 2022. Гидродинамика. Уравнение Навье-Стокса

    Программа решения уравнений Навье-Стокса. Лекция 1. Введение.Скачать

    Программа решения уравнений Навье-Стокса. Лекция 1. Введение.

    Р.В. Шамин. Лекция № 2 Уравнения гидродинамики идеальной жидкости со свободной поверхностьюСкачать

    Р.В. Шамин. Лекция № 2 Уравнения гидродинамики идеальной жидкости со свободной поверхностью

    Физический кружок: гидродинамика | Седьмое занятиеСкачать

    Физический кружок: гидродинамика | Седьмое занятие

    Уравнение навье стоксаСкачать

    Уравнение навье стокса

    Задача на миллион. Уравнение Навье-СтоксаСкачать

    Задача на миллион. Уравнение Навье-Стокса

    Вывод уравнения неразрывности - Лекция 1Скачать

    Вывод уравнения неразрывности - Лекция 1

    Галилео. Эксперимент. Закон БернуллиСкачать

    Галилео. Эксперимент. Закон Бернулли
    Поделиться или сохранить к себе: