Хабиров Р.А. Применение бессеточных методов для решения

advertisement
Министерство образования и науки Российской Федерации
КАЗАНСКИЙ (ПРИВОЛЖСКИЙ) ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ
ИНСТИТУТ МАТЕМАТИКИ И МЕХАНИКИ ИМ. Н. И. ЛОБАЧЕВСКОГО
КАФЕДРА АЭРОГИДРОМЕХАНИКИ
Специальность: 010800.62-Механика и математическое моделирование
ВЫПУСКНАЯ КВАЛИФИКАЦИОННАЯ РАБОТА
(бакалаврская работа)
ПРИМЕНЕНИЕ БЕССЕТОЧНЫХ МЕТОДОВ ДЛЯ РЕШЕНИЯ ЗАДАЧ
ГИДРОДИНАМИКИ
Работа завершена:
“___”__________ 2015 г.
________________
(Р.А. Хабиров)
Работа допущена к защите:
Научный руководитель
К. ф.-м. н.,
ассистент кафедры аэрогидромеханики КФУ
“___”__________ 2015 г.
________________
(А.Н. Нуриев)
Заведующий кафедрой аэрогидромеханики КФУ
Д. ф.-м. н., профессор
“___”__________ 2015 г.
________________
(А.Г. Егоров)
Казань —2015
Оглавление
ВВЕДЕНИЕ .............................................................................................................. 3
1. ПОСТАНОВКА ЗАДАЧИ .................................................................................. 7
2. ЗАКОН БИО-САВАРА ....................................................................................... 8
3. МЕТОД ВОРТОНОВ ........................................................................................ 11
4. ЧИСЛЕННАЯ СХЕМА ..................................................................................... 12
4.1 ДИСКРЕТИЗАЦИЯ..................................................................................... 12
4.2. ВИХРЕВЫЙ ЧАСТИЦЫ (ВОРТОНЫ). .................................................. 12
4.3 РАВНОМЕРНАЯ СЕТКА .......................................................................... 13
4.4 ВЫЧИСЛЕНИЕ СКОРОСТИ ОТ ЗАВИХРЕННОСТИ .......................... 15
4.5 ДИФФУЗИЯ................................................................................................. 18
4.6 КОНВЕКЦИЯ .............................................................................................. 19
4.7 ВЗАИМОДЕЙСТВИЕ ЧАСТИЦ С ТЕЛОМ ............................................ 20
5. РЕЗУЛЬТАТЫ ................................................................................................... 21
6. ЗАКЛЮЧЕНИЕ ................................................................................................. 24
ЛИТЕРАТУРА ....................................................................................................... 25
2
ВВЕДЕНИЕ
Развитие и изучение новых подходов
численного моделирования
течений остаётся актуальным и в наши дни. Основными численными
методами гидродинамики являются бессеточные(вихревые) и сеточные
методы. Методы, использующие расчетную сетку, хорошо развиты,
позволяют решать обширный класс задач. К недостаткам сеточных методов
можно отнести большие затраты машинного времени на проведение расчета,
также трудности возникают при моделировании внешнего обтекания, когда
область течения является безграничной: необходимо каким-либо образом
перейти к ограниченной расчетной области и задать граничные условия
специального вида. Бессеточные методы позволяют моделировать течения
вязкой
несжимаемой
жидкости,
решать
широкий
класс
задач
аэрогидродинамики с хорошей точностью. Вихревые методы требуют
меньших затрат вычислительных ресурсов. Завихренность принимается как
первичная расчетная величина. В области течения вихревые элементы
заменяют
непрерывное
поле
завихренности.
Получается,
что
вычислительные ресурсы сосредоточены в сравнительно небольшой части
области, в которой завихренность отлична от нуля.
Вихревые методы являются эффективными численными методами для
моделирования
течений
несжимаемой
жидкости.
Они
позволяют
существенно упростить численные алгоритмы и уменьшить влияние таких
нежелательных эффектов, как численная диффузия.
Основоположником теоретического описания вихревых объектов
является Гельмгольц. Его работа «Об интегралах уравнений гидродинамики,
соответствующих вихревым движениям» [1] сыграла большую роль в
развитии вихревой теории сыграла его работа. Прежде всего он выделил
вихревые движения. Согласно Гельмгольцу движения жидкости, для которых
отсутствует потенциал скорости, называются вихревыми. Он доказал
основные теоремы о вихревых движениях идеальной жидкости. Значение
3
этих исследований было высоко оценено впоследствии. Так А.Пуанкаре
считал их наиболее важным вкладом в гидродинамику [2].
Значительный вклад в развитие вихревых методов внесли научные
школы С. М. Белоцерковского [3], A. Леонарда [4], Г. Котте [5], К. Камемото
[6] и др. Среди работ по обоснованию вихревых методов можно выделить
исследования М. А. Басина и Н. В. Корнева [7], В. Ю. Кирякина [8], Дж. Биля
и А. Майды [9]. Достаточно полный обзор данным методов проводится в
работах Т. Сарпкайи [10] и А. Леонарда.
Существует несколько вихревых методов. Метод дискретных вихрей
[11, 12] дает возможность моделировать отрывное обтекание профиля,
который имеет угловые точки, потоком идеальной несжимаемой среды.
Вычислительная
трудоемкость
метода
достаточно
низкая,
что
способствовало широкому применению метода и позволило решить многие
практически важные задачи, используя скромную по современным меркам
вычислительную технику середины второй половины XX века. Недостатками
данного метода является отсутствие возможности моделирования обтекания
гладких профилей, точка отрыва потока с которых неизвестна, а также
отрыва потока с гладких участков профилей, например, крыловых, при
больших углах атаки. Нужно отметить, метод дискретных вихрей позволяет
моделировать лишь течения идеальной среды, тогда как на практике
необходимо рассчитывать течение вязкой среды, которое характеризуется
умеренными значениями числа Рейнольдса, когда вязкие эффекты оказывают
значительное влияние на структуру течения и аэродинамические нагрузки.
Для преодоления отмеченных недостатков метода дискретных вихрей при
моделировании
двумерных
течений
были
разработаны
модификации
вихревых методов, позволяющие приближенно моделировать отрывное
обтекание гладких профилей. Новые подходы описаны в работе Чорина [13].
Вычислительные ресурсы ЭВМ 70-х годов, однако, не позволили развить эти
подходы. Эти идеи, в частности, были положены в основу модификации
метода дискретных вихрей, разработанной И. К. Марчевским
4
и Г. А.
Щегловым [14]. Также были созданы вихревые лагранжевы методы расчета
вязких течений, описываемых уравнениями Навье — Стокса. Известно
несколько подходов к учету влияния вязкости. Наибольшее распространение
получили метод случайных блужданий, который был предложен А. Чориным
и развитый другими исследователями (Детальный обзор работ в данном
направлении содержится в работе [15]) и метод диффузионный скорости,
предложенный И. Огами и Т. Акаматсу [16] и значительно развитый Г. Я.
Дынниковой [17, 20]. В работах [18, 19] описан метод вязких вихревых
доменов, разработанный сотрудниками Института механики МГУ им. М. В.
Ломоносова. В отличие от классического метода дискретных вихрей,
реализация метода вязких вихревых доменов требует существенно больших
вычислительных ресурсов. Количество вихревых элементов, моделирующих
вихревой след за профилем, на практике может достигать десятков и сотен
тысяч, поэтому непосредственный расчет их парных взаимодействий, даже
на современных ЭВМ, приводит к недопустимо большим затратам
машинного времени: расчет нестационарного обтекания профиля до выхода
на установившийся режим может продолжаться несколько суток и даже
недель. Поэтому актуальным вопросом является разработка алгоритмов,
которые позволят сократить затраты времени на проведение расчетов.
В данной работе рассматривается метод вихревых клубков (вортонов),
предложенный Е.А. Новиковым [21]. В методе вортонов вихревой объем
разбивается на малые объемы, каждый из которых заменяется вихревой
особенностью (вортоном). Такой подход является наиболее простым с
вычислительной
точки
зрения
и
аналогичен
различным
вариациям
двумерного метода дискретных вихрей, хорошо зарекомендовавшего себя
при расчетах плоских вихревых течений. На данный момент разработано
очень мало пакетов, решающих задачи обтекания тел бессеточными
вихревыми методами.
5
Целью работы является реализация метода вортонов на языке
программирования C++ для решения задачи о движении тела сферической
формы в вязкой несжимаемой жидкости.
Основные задачи работы:
1. Дискретизация уравнений
2. Разработка программного комплекса для решения поставленной задачи
3. Визуализация решения
4. Анализ результатов
5. Сравнение решения с имеющимися результатами
6
1. ПОСТАНОВКА ЗАДАЧИ
В данной работе рассматривается следующая трехмерная задача:
⃗ (u, 0, 0) в
Сфера, имеющая радиус R, движется с постоянной скоростью 
вязкой несжимаемой жидкости.
Движение жидкости описывается уравнениями Навье-Стокса:
⃗
⃗

∇
⃗
⃗
⃗
⃗
+ (∇ ∙ ) = −
+ ν∆


(1.1)
⃗ ∙
⃗ =0
∇
⃗ — дифференциальный оператор Гамильтона (набла), ∆ — оператор
где ∇
Лапласа,
—
время, ν
—
коэффициент
кинематической
вязкости , p —
⃗ — скорость среды.
давление, 
⃗ =∇
⃗ ×
⃗ — свойство движения жидкости или
Завихренность  = 
газа, при котором в среде существуют «вихри» — вращающиеся элементы
объёма. В терминах завихренности уравнение (1.1) примет вид:

⃗
| = ν∆
⃗
 ⃗
где


|⃗ =
∂
∂
⃗ ∙ ∇) — субстанциональная (материальная) производная.
+ (
с частицами жидкости.
Уравнения Навье-Стокса записаны в переменных "скорость-давление".
В отличие от этой системы, уравнение вихря не требует давления и
записывается в переменных скорость-завихренность.
Граничные условия:
Граничное условие на бесконечности в вихревых методах выполняется
автоматически, при этом не требуется искусственно ограничивать расчетную
область, как это делается в сеточных методах. На сфере выполняются
условия прилипания:
⃗ | = 0.

7
2. ЗАКОН БИО-САВАРА
При
использовании
вихревых
методов
происходит
переход
к
⃗ ×
⃗ как к первичной расчетной величине. При этом в
завихренности 
⃗ =∇
плоских задачах гидродинамики вектор 
⃗ имеет лишь одну ненулевую
компоненту. Поле скоростей может быть восстановлено по известному
распределению завихренности при помощи закона Био-Савара:
⃗ (, ) = 
⃗∞+∬


⃗ ( , ) × ( −  )
| −  |2


где интеграл берется по области течения S.
Положение каждого вихревого элемента в пространстве характеризуется
радиус-вектором  , а содержащаяся в нем завихренность — циркуляцией Г ,
i = 1, . . . , N . При этом влияние вихревых элементов на скорость среды в
произвольной точке  вычисляется в соответствии с дискретным аналогом
закона Био — Савара

⃗ (, ) = 
⃗∞+∑

=1
⃗ × ( −  )
Г

2 max{| −  |2 ,  2 }
⃗ — единичный вектор, перпендикулярный плоскости течения.
где 
В книге Ламба [22] описано аналитическое решение нескольких примеров
для случаев, в которых имеется один или несколько изолированных вихрей с
бесконечно малым сечением.
1) Есть один вихревой элемент. Каждая частица на конечном расстоянии  от
этого элемента будет описывать окружность с постоянной скоростью

2
,
где  — напряжение вихря. Возьмем 4 точки с координатами (0, 2), (0, 3), (0,
8
⃗ ∞ = 0 координаты частиц на новом
4), (0, 5) и один вихрь (0, 0). Приняв 
временном слое будут рассчитываться по следующей формуле:
 +1 =  +  ∆
{ +1

=  +  ∆
где ∆ — шаг по времени.
Для  = 10, ∆ = 0.1, tend=30 — конечное время, получим:
Рис 1.  = , ∆ = . , tend=30
Из рисунка 1 видно, что получаются спирали, а не окружности, это связано с
ошибкой дискретизации по времени. Окружность получится при ∆ → 0.
Рис 2.  = , ∆ = . , tend=30
9
2) Есть два вихря с координатами A(5, 6.5) и B(5, 13.5). Если 1 = −1 , то
вихри будут двигаться с одинаковой скоростью
1
2
перпендикулярно к AB.
Сообщим системе общую скорость, которая равна и противоположна
скорости вихря, и найдем линии тока
Рис 3. Линии тока(Гидродинамика. Г.Ламб)
Рис 4. Линии тока (MATLAB)
По рисункам видно, что дискретная формула Био-Савара применима для
вычисления скорости от завихренности.
10
3. МЕТОД ВОРТОНОВ
При решении пространственных задач динамики жидкости возникает
⃗ . Эта
проблема аппроксимации поля вектора завихренности  = ∇ × 
проблема особенно важна при исследовании динамики жидкости методом
вихревых частиц, который основан на лагранжевом описании потока
жидкости.
Вектор завихренности  является соленоидальным
∇ = 0
(3.1)
Условие (3.1) резко сужает класс векторных функций с помощью которых
можно
аппроксимировать
поле
завихренности
.
Данная
проблема
рассматривается в работе М. А. Басина и Н. В. Корнева.
Введение вортона нарушает условие соленоидальности (3.1). Впервые
корректный способ преодоления этого недостатка был указан Е.А.
Новиковым применительно к частному случаю сингулярных вортонов.
Дальнейшее развитие метод получил в работе [23].
Основная идея метода аппроксимации вихревых объемов состоит в
нахождении
преобразования,
выделяющего
в
безграничном
объеме
соленоидальную составляющую в произвольном векторном поле. Это
позволяет использовать для аппроксимации завихренности жидкости любые
несоленоидальные векторные функции. Искомая соленоидальная часть
выделяется, причем единственным образом.
11
4. ЧИСЛЕННАЯ СХЕМА
Решение, представленное в данной работе использует вихревые
частицы, называемые вортонами. Реализация метода вортонов описана в
серии статей Fluids for Games [25]. Данный метод сохраняет завихренность
(вихрь) без очевидных источников диффузии, что позволяет решению
сохранить мелкомасштабные детали. В других методах моделирования
жидкости, которые используют примитивные переменные (скорость и
давление), или в сеточных методах появляется численная диффузия вихря.
4.1 ДИСКРЕТИЗАЦИЯ
В данной работе используются бессеточные методы для
расчета
завихренности и конвекции, и методы сеток для интерполяции скорости
между точками, вычисления пространственных производных, и поиска
ближайших соседей. Получается гибридная схема. Вортоны и пассивные
трейсеры могут перемещаться по всей области, но некоторые характеристики
течения, например скорость, рассчитываются только в фиксированных
точках на равномерной сетке.
4.2. ВИХРЕВЫЙ ЧАСТИЦЫ (ВОРТОНЫ).
Использование вортонов обеспечивает, по меньшей мере, одно
основное преимущество над другими методами, такими как метод
сглаженных гидродинамики частиц (SPH) или другими: в вортонах нет явной
численной диффузии завихренности. Это позволяет потоку иметь низкую
12
вязкость и поддерживать мелкомасштабные детали. SPH и методы,
использующие сетку, страдают от численной вязкости, это "необходимое
зло" позволяет бороться с неустойчивостью.
Использование Лагранжева подхода позволяет вихрю перемещаться за
пределами первоначальной области, в то время как в подходе Эйлера
возможность жидкости вытекать из области может быть проблематичной.
Это значит, что нет необходимости знать заранее, где будет проходить
движение жидкости, вортоны движутся туда, куда должны. Каждый вортон
имеет позицию и завихренность.
4.3 РАВНОМЕРНАЯ СЕТКА
Моделирование использует равномерную сетку, чтобы упростить и ускорить
определенные расчеты: расчет скорости от вихря, интерполяцию значений
скорости между узлами сетки (или между вортонами).
Равномерная сетка представляет собой сетку, в которой все ячейки
имеют одинаковый размер. Это единообразие делает пространственные
поиски
вычислительно
тривиальными,
потому
что,
учитывая
местоположение ̅ , можно вычислить индекс { ,  ,  } ячейки, содержащей
это место по формуле:
 = ( −  )∆
где  - минимальный угол ограничивающего прямоугольника, ∆ - размер
ограничивающего прямоугольника, а
индекс  указывает на направление х, у, или z. Интерполяции значений
данных между узлами сетки проста. Учитывая положение точки, можно
найти ячейку сетки, содержащую её, и следовательно все узлы сетки,
которые окружают эту ячейку. Зная восемь точек сетки (и связанные с ними
13
данные), которые окружают ячейку сетки можно линейно интерполировать
значение данных в любом месте внутри ячейки сетки.
Чтобы
вычислить
скорость
от
вихря
можно
интегрировать
завихренность всюду в пространстве, но это вычисление, очевидно, займет
слишком много времени. Поэтому вместо этого, используется приближение,
которое задействует вложенные сетки. Концепция вложенных сеток показана
на рисунке 1. Они представляют собой несколько равномерных сеток все
того же ограничительного прямоугольника. В наибольшем масштабе
вложенная сетка является базовым слоем(уровнем), он имеет наибольшее
количество клеток. Выше этого уровня другая сетка, которая содержит
меньше клеток. Этот слой называется "родителький слой". Каждая ячейка в
родительском слое представляет собой кластер из нескольких клеток
"детского слоя". Родителький слой имеет еще один слой над собой, клетка
этого уровня - скопление клеток предыдущего, и т.д. Самый верхний уровень
в этом дереве имеет одну ячейку и называется корнем вложенных сеток.
Рис 1. Связь между слоями во вложенных сетках
В данной работе равномерная сетка дает много преимуществ, в то
время как вложенные сетки используются только для вычисления скорости
от вихря.
14
4.4 ВЫЧИСЛЕНИЕ СКОРОСТИ ОТ ЗАВИХРЕННОСТИ
Для нескольких членов уравнений вихря необходимо знать скорость.
⃗ в точке  , интегрированием по всему
Можно вычислить скорость потока 
пространству:
⃗ ( ) =

1 
⃗ ( ′ ) × 
∫
′
4
3
где  =  − ' ,  - завихренность.
Если дано конечное число точек, переносящих завихренность, то интеграл
можно заменить суммой:

1
 × ⃗
⃗⃗⃗⃗
⃗ ( ) =

∑
4
 3
=1
где индекс  указывает на определенный вортон. У этой формулы есть
недостаток: когда расстояние ⃗ очень мало, вклад при расчете скорости
становится очень большим, и когда ⃗ стремится к нулю, вклад стремится к
бесконечности.
Это
называется
особенностью,
из-за
неё
возникают
численные проблемы. Чтобы избежать этих проблем каждому вихрю дается
маленький размер . Вне этой области завихренность равна нулю,
используется формула (3). Внутри этой области, завихренность падает так
сильно, что скорость приближается к нулю линейно, как радиус стремится к
нулю:

1
 −3 :  ≥ 
⃗( ) =
 × ⃗ ∆ { −3
∑ ⃗⃗⃗⃗
4
 :  ≤ 
=1
здесь ∆ это объем крошечного вихревого элемента, вводится вместо точки
нулевого размера и также называется вортоном. Таким образом удается
избежать сингулярность. Чтобы уменьшить вычислительную сложность
прямого суммирования, можно воспользоваться тем, что когда воздействие
происходит издалека, влияние кластера вортонов примерно такое же, как
влияние одного"супервортона" с такой же циркуляцией как сумма
15
циркуляций всех вортонов в кластере. Создаются кластеры вортонов, затем
создаются кластеры кластеров, и так далее, до тех пор, пока всё поле
вортонов не будет представлять собой единый кластер, изображенный на
рисунке 2. Получается дерево кластеров (дерево влияний). Для его
реализации необходимо использование вложенных сеток.
Рис 2. Дерево влияний
Дерево влияний это вложенные сетки из вортонов. Оно строится в два этапа:
сначала создается базовый слой, затем происходит объединение кластеров.
Каждый слой в дереве содержит информацию. Каждая ячейка сетки
содержит
завихренность
и
позицию,
хранится
как
"супервортон".
Завихренность супервортона есть сумма вихрей всех вортонов в этой ячейке.
Положение супервортона ∑ - центр завихренности, среднее позиций всех
вортонов в кластере. Каждый вортон имеет позицию  и завихренность  .
Величина вихря супервортона ∑
= ∑
=1   .
Рис 3. Обход дерева влияний для получения скорости в частице Q
16
Можно использовать получившееся дерево, чтобы вычислить скорость от
вихря. Этот процесс подразумевает простой рекурсивный обход дерева.
Данный
алгоритим,
так
называемый
"древовидный
код"
или
"tree
code".Чтобы вычислить скорость в данной точке необходимо пройти дерево
влияний следующим образом (рисунок 3): Начало в корне дерева влияний.
Проверяется каждый кластер в дереве, если он не содержит точку запроса, то
вычисляется вклад в скорости из одного супервортона как для обычного
вортона. В противном случае, если кластер действительно содержит точку
запроса, нужно спуститься по дереву в этот кластер.
В численной схеме есть отклонения от подхода Лагранжа. Казалось бы,
естественно оценить скорость в каждом вортоне, это традиционный подход и
работает отлично, но у данной другой способ. Сначала оценивается скорость
в каждом узле сетки, а затем используется метод, который интерполирует
значения скорости из сетки. На первый взгляд, этот этап интерполяции
может показаться посторонним, не говоря уже о том, что с помощью
интерполяции уменьшается точность расчета скорости. Но известные
значения скорости на равномерной сетке дают преимущество, которые
перевешивает этот недостаток. Интерполяция на равномерной сетке
проходит гораздо быстрее, чем вычисления скорости на дереве примерно в
10 раз. Создание сетки позволяет варьировать разрешение сетки независимо
от количества вортонов. Чтобы получить более точные значения скорости
можно уменьшить размер ячейки сетки.
Известная скорость на сетке
упрощает расчет пространственных производных, которые необходимы для
вычисления других членов уравнения вихря.
17
4.5 ДИФФУЗИЯ
Вязкая диффузия эффективно размывает завихренность. Математически она
имеет вид ∆
⃗ , где  — коэффициент кинематической вязкости , а
∆=
2

+
2

+
2

— дифференциальный оператор Лапласа. Вычисление
данного члена уравнения вихря методом конечных разностей проблематично.
Есть другой метод. Оператор Лапласа ведет себя как оператор размытия.
Таким образом можно считать, что происходит
обмен завихренностью
между вортонами. Вортоны обмениваются частью вихря с другими
вортонами в их окрестности. Этот процесс требует знания ближайших
соседей для каждой частицы. Каждая ячейка сетки может содержать ссылки
на несколько частиц. Каждый вортон находит ближайших соседей как
показано на рисунке 4.
Рис 4. Поиск ближайших соседей
В жидкости с вязкостью , каждый вортон  обменивается частью его
завихренности 
⃗  c соседями по формуле:


⃗
=  ∑(
⃗ −
⃗ )

=1
18
В случае пары частиц формулу можно переписать:
⃗⃗⃗ 1


⃗⃗⃗ 2


Эти
уравнения
= (
⃗ 2−
⃗ 1)
= (
⃗ 1−
⃗ 2 )= −
показывают,
что
⃗⃗⃗ 1


этот
обмен
сохраняет
общую
циркуляцию(при условии, что частицы имеют одинаковый размер). Эта
формулировка сильно упрощает ситуацию. Например, она не учитывает
расстояние между вортонами а также их размеры. Среди прочего, вязкость 
не является в точности кинематической вязкостью.
4.6 КОНВЕКЦИЯ
В подходе Лагранжа в уравнении вихря этот член в основном означает, что
частицы следуют за потоком, то есть они перемещаются в соответствии со
скоростью жидкости, локальной для их текущего местоположения. Таким
образом,
необходимо
знать
скорость
в
позиции
каждой
частицы.
Равномерная сетка позволяет произвести такие вычисления. С помощью
сетки производится интерполяция скорости в каждом вортоне и перемещение
их в соответствии с полученным полем скоростей. Для наглядной
визуализации пространство заполняется большим количеством пассивных
трейсеров. Пассивные трейсеры, в отличие от вортонов, не переносят
завихренность.
19
4.7 ВЗАИМОДЕЙСТВИЕ ЧАСТИЦ С ТЕЛОМ
На сфере выполняются условия прилипания:
⃗ = 0;
: 
Алгоритм удовлетворения граничным условиям состоит из трёх этапов:
1. Вычислить скорость в точке столкновения тела с вортоном;
Для вычисления скорости предлагается следующий подход:
Сначала в точке взаимодействия интерполируется скорость, используя
существующее поле скоростей, далее удаляется вклад частицы со старой
позиции. Затем происходит переназначение вихря в этом вортоне с целью
противодействия предыдущим манипуляциям.
В реализации этого подхода имеется неточность. Он не учитывает
постоянное изменение в жидкости (для этого временного шага). Необходимо
применять только часть коррекции к каждому вортону на каждом шаге.
Поэтому вводиться коэффициент fGain. Если fGain слишком мало, то вихри
не могут быстро развиваться.
2. Узнать куда переместить вортон;
Вортон должен занять такую новую позицию, чтобы обеспечить (за счет
⃗ (отрицательную старую
своей завихренности) в этой точке скорость -
скорость), тем самым обнулив суммарную скорость. Поэтому прямая на
⃗ и
которой находится вортон должна быть ортогональна одновременно 
⃗.
3. Узнать какую завихренность передать вортону.
20
5. РЕЗУЛЬТАТЫ
Главной целью программы, с помощью которой решалась данная
задача, является визуализация течения жидкости. Визуализация решения
производилась с помощью OpenGL.
При удовлетворении граничным условиям для поиска завихренности,
которую
необходимо
передать
вортону,
вводится
параметр
fGain,
позволяющий применить только часть коррекции для вортона на каждом
временном слое и сделать изменение завихренности менее резким.
Некоторые методы становятся неустойчивыми при увеличении этого
параметра. Даже когда схема устойчива, снижение коэффициента может
помочь
уменьшить
погрешности,
которые
возникают
из-за
ошибок
дискретизации. При моделировании вязкой жидкости диффузия будет
сглаживать эти погрешности.
Представленный расчет был выполнен приблизительно при Re=1000.
Рассмотрим решение для fGain=0.1, 0.3
Рис 5.1. fGain=0.1
21
Рис 5.2 fGain=0.3
Значение параметра fGain=0.1 является более предпочтительным, так как
способствует уменьшению погрешности, которые возникают из-за ошибок
дискретизации, завихренность распространяется плавно и позволяет
уменьшить
Визуальные сравнения с работой [24] показывают, что решение,
полученное методом вортонов, хорошо согласуется с результатами для  =
1000, представленными Gourlay M.J. и S.C. Arendt.
22
Рис 5.3 Движение сферы при Re=1000
23
6. ЗАКЛЮЧЕНИЕ
В данной работе был изучен и реализован метод вортонов для решения
задачи о движении тела сферической формы в вязкой несжимаемой
жидкости. Необходимо было решить уравнения Навье-Стокса в переменных
скорость–завихренность. Была проведена дискретизация уравнений и
разработан программный комплекс, позволяющий решить поставленную
задачу. Визуализация решения производилась с использованием OpenGL.
Сравнение решения с имеющимися результатами показало, что программа,
разработанная на языке C++, хорошо визуализирует движение тела в
жидкости. В перспективе планируется доработать программу, произвести
интегральные оценки, включить возможность обтекания тел произвольной
формы.
24
ЛИТЕРАТУРА
1. Helmholtz H. Uber Integrate hydrodinamischen Gleichungen weiche den
Wirbelbewegungen entsprechen. J. rein, angew. Math. 1858, v. 55, s. 25-55.,см.
также русский перевод с комментариями С. А. Чаплыгина в книге
Гельмгольц Г. Основы вихревой теории. М.-Иж., ИКИ. 2002, 82с.
2. Пуанкаре А. Теория вихрей. Ижевск: Изд-во РХД. 2ss1, 160 с. Пер. с фр.
Poincare H.Theorie des tourbillions. Paris, Carre. 1893.
3. Трехмерное отрывное обтекание тел произвольной формы / Под ред. С.М.
Белоцерковского. М.: ЦАГИ, 2000. 265 с.
4. Leonard A. Vortex methods for flow simulation // Journal of Computational
Physics. 1980. N 37. P. 289–335.
5. Cottet G.-H., Koumoutsakos P.D. Vortex methods: theory and practice.
Cambridge: Cambridge University Press, 2008. 328 p
6. Vortex methods: selected papers of the First International Conference on Vortex
Methods / K. Kamemoto, M. Tsutahara. Singapore, 2000. 220 p.
7. Басин М. А., Корнев Н. В. А Аппроксимация поля завихренности в
безграничном объеме. Журнал технической физики, 1994, с. 179-185.
8. Кирякин В.Ю., Сетуха А.В. О сходимости вихревого численно-го метода
решения трехмерных уравнений Эйлера в лагранжевых
координатах // Дифференциальные уравнения. 2007. Т. 43, № 9. С. 1276
9. Beale J.T., Majda A. Vortex methods ii: higher order accuracy in two and three
dimensions // Mathematics of Computation. 1982. V. 39, N 159. P. 29–52
10. Сарпкайя Т. Вычислительные методы вихрей. Фримановская лекция
(1988) // Современное машиностроение. Сер. А. 1989. № 10. С. 1–60
11. Применение ЭВМ для исследования аэродинамических характери-стик
летательных аппаратов: Сб. ст. / Под ред. С.М. Белоцерковско-го. М.: Изд.
ВВИА им. Н.Е. Жуковского, 1986. Вып. 1313. 503 с.
12. Трехмерное отрывное обтекание тел произвольной формы / Под ред. С.М.
Белоцерковского. М.: ЦАГИ, 2000. 265 с
25
13. Chorin A.J. Numerical study of slightly viscous flow // Journal of Fluid
Mechanics. 1973. V. 57. P. 785–796.
14. Марчевский И.К., Щеглов Г.А. Об одном подходе к расчету аэродинамических характеристик профиля в идеальной жидкости методом
дискретных вихрей // Вестник Харьковского национального универ-ситета.
Серия М. 2005. № 661, вып. 4. С. 182–191
15. Shankar S. A new mesh-free vortex method: Ph.D. thesis. The Florida State
University, 1996. 263 p.
16. Ogami Y., Akamatsu T. Viscous flow simulation using the discrete vortex
model — the diffusion velocity method // Computers and Fluids. 1991. V. 19, N
3/4. P. 433–441
17. Дынникова Г.Я. Лагранжев подход к решению нестационарных
уравнений Навье — Стокса // Доклады Академии наук. 2004. Т. 399, № 1. С.
42–46.
18. Дынникова Г.Я. Вихревые методы исследования нестационарных течений вязкой несжимаемой жидкости: дис. . . . д-ра физ.-мат. наук.
М., 2011. 269 с.
19. Андронов П.Р., Гувернюк С.В., Дынникова Г.Я. Вихревые методы
расчета нестационарных гидродинамических нагрузок. М.: Изд-во
МГУ, 2006. 184 с.
20. Дынникова Г.Я. Движение вихрей в двумерных течениях вязкой
жидкости. Известия РАН. Механика жидкости и газа. 2003. № 5. С. 11–19.
21. Е.А.Новиков, Обобщенная динамика трехмерных вихревых особенностей
(вортонов), ЖЭТФ, Т.84, Вып.3, c.975-981, 1983.
22.Ламб Г. Гидродинамика. М.: ГИТТЛ, Ленингр. отд., 1947.
23. Басин М.А. Гидродинамика судна. Материалы по обмену опытом. Л.:
Судостроение, 1990. С. 40-62
24. Gourlay, M.J., S.C. Arendt, D.C. Fritts, and J. Werne. 2001. Numerical
modeling of initially turbulent wakes with net momentum. 3783-802.
25. Dr. Michael J. Gourlay. Fluid Simulation for Video Games.2009.
26
приложение
Установка. Используемое ПО.
Ubuntu 14.04
gcc 4.8.2
eclipse 3.8.1
ctd plugin for eclipse
freeglut
Реализация:
Программа описанная в цикле статей Fluids for games претерпевала
изменения с 2009 по 2013 год. В качестве стартовой точки взята программа за
2009 г (из статьи "Fluids for Games part 4").
Описание реализации:
main
{
InteSiVis inteSiVis( 0.05f , 1.0f ) – Конструктор
создает объект класса
mFluidBodySim, вызывает InitialConditions( 1 );
inteSiVis.InitDevice( & argc , argv ); –
запускает OpenGL, в том числе
функцию glutMainLoop()
}
mFluidBodySim создает объект класса mVortonSim.
27
glutMainLoop() имеет следующие функции обратного вызова (2 из них
основные)
GlutIdleCallback – функция, которая вызывается когда ничего другого не
происходит. Вызывает mFluidBodySim.Update и выполняет переход на новый
временной слой
GlutDisplayCallback; – функция перерисовки экрана
GlutKeyboardHandler; – перехватчик клавиатуры
GlutSpecialKeyHandler;
–
спец.
перехватчик
клавиатуры
(F1,F2...)
перезапускает InitialConditions для выбранного случая
GlutReshapeGlutCallback; – действие при изменения размера окна
GlutMouseMotionHandler; – перехватчик движения мыши
GlutMouseHandler; – перехватчик кнопок мыши
GlutEntryHandler; – функция, которая вызывается когда окно получает фокус
Эти функции вызываются из glutMainLoop() при возникновение событий, на
которые они умеют реагировать.
InitialConditions
{
вызывается AssignVorticity
Массив (vector) вихревых элементов хранится как свойство класса VortonSim
Vector< Vorton > & vortons = mFluidBodySim.GetVortonSim().GetVortons() ;
Инициализация
этого
вектора
(задание
происходит в функции AssignVorticity.
28
позиций
и
завихренностей)
AssignVorticity
(vortons , – вектор, содержащий все вихревые элементы
0.125f * FLT_EPSILON , – максимальное значение завихренности
2048 , – максимальное кол-во вихревых элементов
VortexNoise( Vec3( 4.0f * fThickness , 0.5f * fThickness , 0.5f * fThickness ) ) –
функция расположения вихревых элементов
);
VortexNoise( Vec3( 4.0f * fThickness , 0.5f * fThickness , 0.5f * fThickness ) –
конструктор класса, наследника IVorticityDistribution.
В VortexNoise подается объект класса Vec3, который содержит данные по 3м
измерениям начального ограничивающего бокса
AssignVorticity содержит
UniformGridGeometry skeleton – конструирует равномерную сетку в
ограничивающем боксе.
По узлам этой сетки с некоторым случайным отклонением
inline float RandomSpread( float fSpread )
{
const float randomFloat = fSpread * ( float( rand() ) / float( RAND_MAX ) 0.5f ) ;
return randomFloat ;
}
напихивает вихревые элементы.
Проводится инициализация объекта сфера:
29
mFluidBodySim.GetSpheres().PushBack( RbSphere( Vec3( -2.0f , 0.0f , 0.0f ) ,
Vec3( 5.0f , 0.0f , 0.0f ) , 0.2f , 0.2f ) ) ;
По сути добавляется одна сфера, т. е. таких сфер можно добавлять много.
RbSphere наследник RigidBody, его конструктор принимает следующие
аргументы:
Vec3( -2.0f , 0.0f , 0.0f ) – позиция
Vec3( 5.0f , 0.0f , 0.0f ) – скорость
0.2f – масса
0.2f – радиус
Внутри конструктора RbSphere вычисляется также момент инерции 2 2 ⁄5
(момент
инерции
для
ApplyImpulsiveTorque
однородного
класса
шара),
(родителя)
используется
RigidBody
для
в
методе
приложения
крутящего момента.
mFluidBodySim.Initialize( numTracersPer ) ;
RemoveEmbeddedParticles() ; – первичное удаление частиц, попавших внутрь
твердого тела.
Далее
в
ConservedQuantities
вычисляются
консервативные
свойства
(глобальная циркуляция и линейный импульс), создаются пассивные
трейсеры.
Создается
топология
вложенных
сеток
(NestedGrid)
CreateInfluenceTree();
mFluidBodySim.Update
{
// Обновляет свойства жидкости, временно не учитывая твердое тело и
граничные условия
30
mVortonSim.Update( timeStep , uFrame ) ;
CreateInfluenceTree() ;
ComputeVelocityGrid(); - вычисляет скорость по завихренности (вортронов)
для каждого узла сетки с использованием Vorton cluster influence tree (по
сути вложенных сеток).
DiffuseVorticityPSE(
timeStep
,
uFrame
);
-
осуществляет
обмен
завихренностью между вортонами
AdvectVortons( timeStep ); Вычисляется новая скорость самих вортронов
по данным сетки (с помощью интерполяции))
AdvectTracers( timeStep , uFrame ) Вычисляется новая скорость пассивных
трейсеров по данным сетки (с помощью интерполяции));
}
}
SolveBoundaryConditions(); - взаимодействие жидкости и телом
RbSphere::UpdateSystem( mSpheres , timeStep , uFrame ) ; - обновляет
позицию и свойства тела.
31
Скачать