Салимов Р.Р. Расчет сопротивления тел в гиперзвуковом потоке

advertisement
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ
РОССИЙСКОЙ ФЕДЕРАЦИИ
ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ АВТОНОМНОЕ
ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО
ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
КАЗАНСКИЙ (ПРИВОЛЖСКИЙ) ФЕДЕРАЛЬНЫЙ УНИВЕРСИТЕТ
ИНСТИТУТ МАТЕМАТИКИ И МЕХАНИКИ ИМ.Н.И.ЛОБАЧЕВСКОГО
КАФЕДРА АЭРОГИДРОМЕХАНИКИ
Специальность: 010205 - механика
ВЫПУСКНАЯ КВАЛИФИКАЦИОННАЯ РАБОТА
(Дипломная работа)
Расчет сопротивления тел в гиперзвуковом потоке
Работа завершена:
Студент 05-901 группы отделения механики
"___"________2014 г. ___________________(Р.Р. Салимов)
Работа допущена к защите:
Научный руководитель
к. ф.-м. н., доцент
"___"________2014 г. ___________________(Е.И.Филатов)
Заведующий кафедрой
д. ф.-м. н., профессор
"___"________2011 г. ____________________(А.Г. Егоров)
Казань – 2014
Содержание
Введение…….………………………...……………………………………….3
1. Закон плоских сечений……………………………………………………7
2. Решение задачи о движении газа перед поршнем
2.1. Основные уравнения……………………………………………………11
2.2. Численное решение задачи о поршне…………………………………16
2.3. Результаты расчетов без введения искусственной вязкости………...18
2.4. Результаты расчетов с использованием искусственной вязкости…..21
3.1.Постановка задачи о движении тонкого тела в гиперзвуковом потоке
газа…………………………………………………………………...……….25
3.2.Решение задачи для клина……………………………………………... 26
3.3.Расчет сопротивления плоского тела…………………………………..31
Заключение……………………………………………………............……...33
Приложение………………………………………………………………….34
Использованная литература………………..……………………………....39
2
Введение
В последнее десятилетие в ведущих странах повышенное внимание
уделяется научно-исследовательским и опытно-конструкторским работам,
проводимым в интересах создания новых видов авиационной техники, в
частности
гиперзвуковых
вычислительных
трудностей
летательных
при
аппаратов
математическом
(ГЛА).
Из-за
моделировании
пространственных задач обтекания тел многое еще до конца не изучено в этой
области. Как следствие на сегодняшний день решение задач в гиперзвуковом
потоке остается очень актуальной темой.
Гиперзвуковое
течение
предельный
-
случай сверхзвукового
течения газа, при котором скорость частиц газа во всей области течения или в
еѐ значительной части намного превосходит скорость звука
что
или Маха число
в газе, так
Т.к. скорость звука по порядку
величины равна средней скорости теплового (хаотического) движения
молекул,
то
при
гиперзвуковом
течении
кинетической
энергия
поступательного движения частицы газа намного превосходит ее внутреннюю
тепловую
энергию.
Поэтому
при
гиперзвуковом
течении
небольшие
относительные изменения в результате превращения кинетической энергии
частиц газа во внутреннюю вызывают сильное изменение внутренней
тепловой энергии газа, т. е. его температуры.
Известно, что задачу об установившемся обтекании тела потоком с
большой сверхзвуковой скоростью (ОТПСС) можно свести к решению задачи
о движении газа перед поршнем [1] . Т.е. если перед телом выделить слой
частиц, перпендикулярный к направлению движения тела (Рис. 1), то при
движении тела частицы будут двигаться в этом слое, не испытывая
3
продольного смещения. Иными словами, можно использовать закон плоских
сечений [2] .
Рис.1. К закону плоских сечений
В данной работе рассматриваем, как вычисляется сопротивление тела
при использовании закона плоских сечений. Сопротивление, испытываемое
телом при движении, равно работе, совершаемой телом на пути единичной
длины. Эта работа согласно закону плоских сечений равна работе расширения
эквивалентного поршня, совершаемой над газом в слое единичной ширины за
время прохождения тела сквозь этот слой. Таким образом, сопротивление тела
может быть выражено формулой
∫∫
где внутренний интеграл распространен по контуру поршня. Вид этого
контура в каждый момент времени и нормальная скорость его точек
определяются формой обтекаемого тела; давление
на поверхности поршня
должно находиться из решения соответствующей задачи о неустановившемся
движении газа. Для случая обтекания профиля или симметричного обтекания
тела вращения величина
одинакова во всех точках контура и формула
принимает вид
4
∫
∫
( - расстояние точек поверхности поршня от начальной плоскости или от оси
симметрии;
для профиля и
для тела вращения; для профиля
есть сопротивление только одной стороны профиля).
Аналогичным образом может быть вычислена поперечная сила (в
частности, подъемная сила), действующая на тело при его движении.
Поперечная сила равна по величине импульсу, который приобретает газ в
направлении, перпендикулярной к направлению движения тела, за единицу
времени или, что то же, умноженному на скорость полета импульсу, который
сообщается телом газу на пути единичной длины. В соответствии с законом
плоских сечений поперечная сила выражается, следовательно, формулой
̅
∫∫ ̅
При обтекании профиля поперечная сила, действующая на одну его
сторону, согласно этой формуле равна
∫
При симметричном обтекании тела вращения суммарная поперечная
сила равна, очевидно, нулю. На участок поверхности такого тела между двумя
бесконечно близкими плоскостями, проходящими через ось тела, действует
поперечная сила, равная
∫
5
(
— угол между плоскостями). Если обозначить силу, рассчитанную на угол
, через
, то для профиля и для тела вращения можно записать одну
формулу:
∫
Закон плоских сечений устанавливает, что задача об обтекании тонких
тел потоком с большой сверхзвуковой скоростью с определенной степенью
точности эквивалентна задаче о плоском неустановившемся движении газа,
вытесняемого подвижной границей (поршнем) соответствующей формы, что и
будет рассмотрено в данной работе.
6
1. Закон плоских сечений
Математическая формулировка задачи об обтекании тела заключается в
том, что движение газа будем рассматривать в системе координат, связанной
с телом. Направим ось
противоположно скорости движения тела , а оси
возьмем в плоскости перпендикулярной этой плоскости направлению под
прямым углом друг к другу. Обозначим через
составляющие скорости
абсолютного движения газа вдоль выбранных осей и через
плотность газа. Если скорость постоянна и равна
– давление и
то движение газа в
выбранной системе координат будет установившемся и основные уравнения
описывающие это движение можно взять в следующем виде[1] :
}
уравнение неразрывности
условие сохранения энтропии в частицах газа при их непрерывном движении
(
– энтропия единицы массы)
В случае совершенного газа с постоянными удельными теплоемкостями
энтропия связана с давлением и плотностью соотношением
7
где
- удельная теплоемкость при постоянном объеме,
- отношение
теплоемкостей при постоянном давлении и при постоянном объеме.
Ограничимся рассмотрением тонких тел при малых углах атаки.
Согласно такому предложению о форме тела угол между нормалью
в точках
обращенной вперед части поверхности тела и направлением набегающего
потока близок к прямому, так что
где - малый параметр.
В случае обтекания тонких тел потоком с большой сверхзвуковой
скоростью (т.е. при
возмущения скорости
остаются по-прежнему малыми, однако продольная составляющая скорости
возмущения является при этом малой величиной, что в будущем позволяет их
не учитывать.
В гиперзвуковом потоке можно получить следующие оценки:
и
(
)
В соответствии этими оценками, перейдем в системе (1.1)-(1.4),
описывающих движение газа, к новым безразмерным, пологая
}
Совершив такой переход и отбрасывая члены порядка
по сравнению с
единицей, приведем уравнения (1.1)-(1.4) к следующему виду:
8
}
Если в четырех последних уравнениях (1.6) вернуться к размерным
переменным и интерпретировать в них величину
получаются нестационарные уравнения в плоскости
как время, то
:
}
и они точно совпадают с системой уравнений неустановившегося движения
газа в неподвижной плоскости, перпендикулярной к направлению движения
тела. Приближенные соотношения на поверхностях разрыва также совладают
при такой интерпретации с соотношениями, которые должны удовлетворяться
в плоском движении. Приближенное условие непротекания на поверхности
обтекаемого тела
при
9
представляет собой при такой интерпретации условие вытеснения газа в
выбранной плоскости непроницаемой подвижной границей (поршнем), закон
движения которой определяется формой движущегося тела и в соответствии с
формулой
. Таким образом, задача об установившемся обтекании
тонкого тела потоком с большой сверхзвуковой скоростью с точностью до
величины порядка
сравнительно с единицей эквивалентна задаче о
неустановившемся движении газа на плоскости. В этом и состоит закон
плоских сечений . Таким образом для вычисления сопротивления и подъемной
силы нужно решать нестационарную задачу о движении газа перед поршнем.
10
2. Решение задачи о движении газа перед поршнем
2.1. Основные уравнения
Классическая
задача
о
поршне
в
одномерном
плоском
случае
формулируется так. Однородный покоящийся газ занимает полупространство,
ограниченное слева плоскостью — поршнем (рис. 1). В начальный момент
времени
поршень под действием некоторых внешних сил начинают
двигаться со скоростью, закон изменения которой во времени
Знак
задан.
может быть любым в зависимости от того, вдвигается поршень в
газ или выдвигается из него. В газе начинается движение в виде волны, фронт
которой распространяется от поршня, захватывая новые частицы среды.
Исследование возникающего газодинамического течения и составляет
существо задачи о поршне.
Рис. 2. Модель движения поршня
Уравнения, для этой задачи в одномерном случаи имеют вид[3]:
11
[
]
Существенной особенностью этого класса задач является то, что
граничное
условие
представлении
нужно
выполнять
на
подвижной
в
эйлеровом
контактной поверхности. Однако эту трудность можно
избежать, если использовать лагранжевы переменные. В этом случае, все
контактные поверхности становятся неподвижными.
Введем лагранжевы массовые переменные. В силу одномерности
рассматриваемой задачи, лагранжевой индивидуальной частицей газа может
служить бесконечно тонкий «блинчик» объема
поперечного сечения цилиндра, а
Масса такой частицы
момент
, где
площадь
расстояние вдоль продольной
, где
оси.
плотность газа в начальный
времени. Рассмотрим частицы, имеющие в начальный момент
времени координаты (в эйлеровой системе)
момент времени
и
В произвольный
эти координаты примут другие значения
и
но
масса газа, которая разделяет эти две частицы с координатами, одинакова в
любой момент времени:
∫
∫
И может служить лагранжевой координатой одной из них, если
принять за начало отсчета. Таким образом, будем считать величину
12
вторую
∫
лагранжевой массовой координатой частицы, имеющий в данный момент
координату
в лабораторной системе координат.
Перейдем в уравнениях одномерного нестационарного движения газа
(2.1.1)-(2.1.3) от эйлеровых переменных
к лагранжевым
, где
При этом:
∫
∫
(
Но из уравнения неразрывности имеем:
∫
где
∫
)
и, следовательно:
[
]
Окончательно:
Таким образом, соотношения для замены переменных имеют вид:
Произведя соответствующие замены в уравнениях (2.1.1)-(2.1.3),получим
систему:
13
( )
Здесь индекс при временной координате опущен, так как время
одинаково в обеих системах координат.
Эти уравнения образуют замкнутую систему для определения скорости,
плотности
и
давления
газа.
Для
определения
температуры
можно
использовать уравнение Клапейрона:
Припишем сюда связь скорости с координатой лабораторной системы
координат:
Рассмотрим движение газа перед поршнем, движущимся по цилиндру
слева направо по заданному закону
расстоянии
(
)
Справа на некотором
от начального положения поршня цилиндр либо закрыт твѐрдой
стенкой, либо открыт в затопленное пространство с заданными параметрами.
Будем считать, что движение газа описывается уравнениями (2.1.5) -(2.1.6).
Начальные условия следующие: в начальном положении, при
перед поршнем
находится
невозмущенный
газ
с
параметрами:
Движение газа за поршнем получим, поменяв
14
направление движения поршня на обратное (поменяв знак скорости поршня на
минус).
Введем безразмерные переменные:
В новых переменных уравнения (2.1.5) сохраняют свой вид неизменным, а
уравнение Клайперона перепишется в виде:
Термическое и калорическое уравнения состояния можно записать как:
(
)
Область изменения лагранжевой координаты в этом случае:
15
.
2.2. Численное решение задачи о поршне
Представим уравнения (2.1.5) в векторном виде:
̅
̅
̅
{
}
} ̅
{
{
}
{
}
Здесь штрихи опущены, так как дальше везде используются только
безразмерные переменные. Рассмотрим решение поставленной выше задачи
по явной конечно-разностной схеме Мак-Кормака. Будем считать для
определенности, что левой границей течения является поверхность поршня,
движущегося по заданному закону
, а правой - непроницаемая
стенка, на которой скорость газа равна нулю. По-прежнему будем
использовать прямоугольную сетку с постоянным шагом
по
и
по
времени. Возьмем
пространственных узлов, поместив узел
на
поверхность поршня, в точку
, а узел
на границу цилиндра в точку
. Тогда шаг по пространству
. Шаг по времени будем задавать,
исходя из условия КФЛ.
Схема Мак-Кормака двухшаговая, обеспечивающая второй порядок точности
и по пространству и по времени, и в силу этого наиболее пригодна для решения
нестационарных задач газовой динамики. Расчет очередного слоя по времени
начинается из состояния, когда известны значения комплексов
и
̅̅̅̅̅̅̅на предыдущем вре менном слое, а также
во всех узлах
значения этих величин в дополнительном «фиктивном» узле.
На первом этапе (предиктор) вычисляются предварительные значения всех
искомых величин: комплексов
переменных
и
и примитивных
̅̅̅̅̅̅̅ при текущем значении
(на
во всех узлах
текущем слое по времени) по схеме (2.2.2),
которая для уравнения (2.2.1)может быть записана в следующей форме:
16
где
.
По
рассчитанным
можно
получить
предварительные значения примитивных переменных на
̅̅̅̅̅̅̅:
̃
̃
̃
̃
.
̃
Значения скорости в узлах
условиями:
новые
слое в узлах
,
и
заменяем в соответствии с граничными
Затем можно вычислить
и новые значения комплексов
в соответствующих узлах:
¯
На втором шаге (корректор) считаются значения
на слое
в узлах
̅̅̅̅̅̅̅
по схеме
[
(
)]
которая для уравнения (11’) дает:
[
]
Затем примитивные переменные в тех же узлах:
Используем граничное условие на поршне:
. Значения плотности и
энергии на поршне получим аппроксимацией изнутри:
,
. На правой границе используем условия отражения:
Теперь можно получить
и окончательные значения комплексов
во всех расчетных узлах. На этом расчет одного временного слоя
закончен. Чтобы иметь представление о полученных результатах в эйлеровых
координатах, необходимо проинтегрировать по времени уравнение (2.2.2) в
̅̅̅̅̅̅̅:
каждом узле
.
17
2.3. Результаты расчетов без введения искусственной вязкости*
На рис. 3-5
приведены результаты расчета параметров газа перед
поршнем при его движении с постоянной скоростью
для момента
времени
. Положение поршня в этот момент времени соответствует
началу кривых. Было взято
.
0.8
Chislen. reshenie
Tochoe reshenie
U
0.6
0.4
0.2
0
0
0.2
0.4
0.6
0.8
1
X
Рис.3. График зависимимости скорости газа от координат по пространству
18
*) Реализация численного решения на языке программирования С++
приведена в ПРИЛОЖЕНИИ
p
2.4
2.2
2
1.8
Tochnoe reshenie
Chislen. reshenie
1.6
1.4
1.2
1
0.2
0.4
0.6
0.8
1
x
Рис.4. График зависимимости давления газа от координат по пространству
19
ro 3.6
Tochnoe reshenie
3.2
Chislen. reshenie
2.8
2.4
2
1.6
1.2
0.2
0.4
0.6
0.8
Рис.5. График зависимимости плотности газа от координат по пространству
Из рисунков видно, что даже при достаточно больших шагах по
пространству и времени, решение достаточно хорошо описывает образование
ударной волны. Так же наблюдаются значительные осцилляции параметров
вблизи скачка.
20
x
1
2.4. Результаты расчетов с использованием искусственной
вязкости**
Известно, что схемы второго порядка обладают, как правило, малой
схемной вязкостью, что приводит к значительным осцилляциям получаемого
решения. Существуют различные способы искусственного введения схемной
вязкости. Дополнительно вводимые члены выбираются так, чтобы они были
существенны только в областях с большими градиентами. Они должны
подавлять коротковолновые возмущения и не трогать длинноволновые. В этом
случае PC удовлетворяет условию роста энтропии при переходе через скачок.
Введем искусственную вязкость, следуя фон Нейману - Рихтмайеру
[5].Предлагается ввести в рассмотрение коэффициент диффузии:
|
|
Рассмотрим закон Стокса:
¯
Здесь
- обычный коэффициент динамической вязкости, а
, где
в данном случае второй объемный коэффициент вязкости. В стандартной
модели
вязкой
жидкости
предположить, что
,а
(газа)
полагают
, то
Если
же,
наоборот,
и вместо уравнения (2.1.1)-(2.1.3)
для полностью невязкого газа мы получим следующий их аналог для "объемно
вязкого" газа:
(
21
)
[
]
(
)
**) Реализация численного решения на языке программирования С++ приведена в
ПРИЛОЖЕНИИ
где
параметры с индексом
-характерные
масштабы, остальные величины - безразмерные. Введем в рассмотрение
коэффициент диффузии:
Тогда система
̅
̅
̅
построенный на объемной вязкости в виде:
запишется в виде:
-
{
}
{
} ̅
{
{
}
По Фон Нейману и Рихтмайеру введем выражение:
где - произвольный коэффициент порядка единицы.
22
}
Рис.6.
p 2.4
2
Chislen. reshenie
1.6
Tochnoe reshenie
1.2
0.8
0.2
0.4
0.6
0.8
1
x
Рис.7.
23
0.8
U,Uviscosity
0.6
0.4
Uviscosity
U
0.2
0
-0.2
0.2
0.4
0.6
0.8
x
1
Рис.8.
Из рис.(6)-(8)видно, что в результате введения искусственной
вязкости, нам удалось уменьшить осцилляции в окрестности скачка.
24
3.Постановка задачи о движении тонкого тела в гиперзвуковом
потоке газа
Рассматривается плоское тело, которое задается функцией
Обтекаем тело гиперзвуковым потоком газа со скоростью ̅ .
Требуется найти сопротивление
сопротивления
тела
и
и подъемную силу
коэффициент
Рис.9. Постановка задачи
25
, а также коэффициент
подъемной
силы
.
3.1.Решение задачи для клина
Для начала рассмотрим более простую задачу обтекания гиперзвуковым
потоком клина (Рис.2.) длины
и заданным углом полураствора .
Рис.10. Обтекание клина
Для нахождения коэффициента сопротивления
сопротивление, проецируя давление на скачке
сам коэффициента сопротивления
26
по оси :
, сначала находим
где
- невозмущенная плотность газа. Подставляя уравнение
в
, делая некоторые преобразования, получаем
где - постоянная адиабаты, а
- невозмущенное давление.
Для клина :
- угол косого скачка зависящий
[ ].
От сюда получим точное значение коэффициента сопротивления
.
Таким же инструментом воспользуемся при нахождении коэффициента
подъемной силы, где подъемная сила
а сам
С другой стороны можно получить значение
с помощью
нестационарной аналогии. Если скорость полета клина , то из Рис.3. легко
предположить что скорость поршня
где
безразмерная скорость поршня и невозмущенная скорость звука
соответственно. Из
:
27
от сюда получаем
Здесь
и
– число Маха полета. Учитывая что
получаем
и подставляя
в
и
где
– давление газа на поршне, которое можно найти
решени задачи о поршне.
при численном
Как и предполагалось, мы нашли значения давлений газа на поршне
для формулы
численным решением задачи о поршне:
Зададим
, предположим 5 . Скорость поршня мы задавали
Используя
выводим таблицу чисел Маха от углов
3.44
17.38
4.59
12.84
5.74
10.195
28
6.89
8.454
:
8.05
7.26
9.2
6.3
Рис.11. График зависимости коэффициента сопротивления от числа Маха
29
0.12
Cy
0.1
Chislennoe
Tochnoe
0.08
0.06
0.04
0.02
0
2
4
6
8
Рис.12. График зависимости коэффициента подъемной силы от числа Маха
30
M
10
3.2.Расчет сопротивления плоского тела
Если задано плоское тело
, то из рис.9. видим что
откуда
Пусть скорость поршня есть степенная функция от времени
Если
Тогда сопротивление сегмента:
Сопротивление всего тела:
∫
∫
⏟
и
∫
.
Также как и с сопротивлением получаем
31
∫
Таким образом находим коэффициент сопротивления.
∫
∫
упрощая значения выводим:
∫
Аналогично выводим
∫
32
Заключение
Итак, мы рассмотрели и численно решили задачу о движении газа перед
поршнем. Использовали ее в решении задачи об обтекании плоского тела и
клина гиперзвуковым потоком численно. Нашли точное решение и сравнили
его с численным решением (рис.11,12). Численное решение оказалось вполне
приемлемым, даже не смотря на большие шаги по пространству и времени.
Таким образом видим, что использование нестационарной аналогии
позволяет достаточно просто расчетать аэродинамические характеристики
тела , движущегося в гиперзвуковом потоке газа.
33
Приложение
*) Реализация численного решения на языке программирования С++
#include "stdafx.h"
#include "iostream"
#include "fstream"
#include <cmath>
#include "vector"
#include <stdio.h>
using namespace std;
const double kap=1.4;
const double ro_0=kap;
const double E_0=1.0/(kap*(kap-1));
const double p_0=1;
const double u_0=0;
const int N=30;
double ds,dt,nu,T=0.6;
ofstream file("D:\\a22.txt");
vector<vector<double>>A;
vector<vector<double>>B;
vector<vector<double>>AV;
vector<vector<double>>BV;
vector<double> ro;
vector<double> p;
vector<double> u;
vector<double> up;
vector<double> x;
vector<double> E;
void ini()
{
A.resize(N+1);
for(int i=0;i<=N;i++)
{A[i].resize(N+1);}
B.resize(N+1);
for(int i=0;i<=N;i++)
{B[i].resize(N+1);}
AV.resize(N+1);
for(int i=0;i<=N;i++)
{AV[i].resize(N+1);}
BV.resize(N+1);
for(int i=0;i<=N;i++)
{BV[i].resize(N+1);}
ro.resize(N+1);
p.resize(N+1);
u.resize(N+1);
up.resize(N+1);
E.resize(N+1);
x.resize(N+1);
}
void nach()
{
for(int i=0;i<=N;i++)
{
p[i]=p_0;
ro[i]=ro_0;
u[i]=u_0;
E[i]=E_0;
A[0][i]=-1.0/ro_0;
A[1][i]=u_0;
A[2][i]=E_0;
}
}
double u_p(double x)
{
return 0.6;
}
void B_I()
{
for(int i=0;i<=N;i++)
34
{
B[0][i]=u[i];
B[1][i]=p[i];
B[2][i]=u[i]*p[i];
}
}
void predictor()
{
for(int i=0;i<3;i++)
{
for(int j=1;j<N;j++)
{
AV[i][j]=A[i][j]+nu*(B[i][j]-B[i][j+1]);
}
}
for(int j=1;j<N;j++)
{
ro[j]=-1.0/AV[0][j];
u[j]=AV[1][j];
E[j]=AV[2][j];
p[j]=(kap-1)*ro[j]*(E[j]-0.5*u[j]*u[j]);
}
ro[N]=ro[N-1];
u[N]=u[N-1];
E[N]=E[N-1];
p[N]=p[N-1];
ro[0]=2*ro[1]-ro[2];
u[0]=u_p(1);
E[0]=2*E[1]-E[2];
p[0]=(kap-1)*ro[0]*(E[0]-0.5*u[0]*u[0]);
for(int i=0;i<=N;i++)
{
BV[0][i]=u[i];
BV[1][i]=p[i];
BV[2][i]=u[i]*p[i];
}
}
void corrector()
{
for(int i=0;i<3;i++)
{
for(int j=1;j<N;j++)
{
A[i][j]=(A[i][j]+AV[i][j]+nu*(BV[i][j-1]-BV[i][j]))/2.0;
}
}
for(int j=1;j<N;j++)
{
ro[j]=-1.0/A[0][j];
u[j]=A[1][j];
E[j]=A[2][j];
p[j]=(kap-1)*ro[j]*(E[j]-0.5*u[j]*u[j]);
}
ro[0]=2*ro[1]-ro[2];
u[0]=u_p(1);
E[0]=2*A[2][1]-A[2][2];
p[0]=(kap-1)*ro[0]*(E[0]-0.5*u[0]*u[0]);
ro[N]=ro[N-1];
u[N]=-u[N-1];
E[N]=E[N-1];
p[N]=p[N-1];
}
int _tmain(int argc, _TCHAR* argv[])
{
ds=kap/N;
double dt1=0;
dt=0.01;
nu=dt/ds;
ini();
nach();
for(int i=0;i<=N;i++)
{
x[i]=i*ds/kap;
}
B_I();
do{
for(int i=0;i<=N;i++)
35
{
up[i]=u[i];
}
predictor();
corrector();B_I();
dt1=dt1+dt;
for(int i=0;i<=N;i++)
{
x[i]=x[i]+0.5*(u[i]+up[i])*dt;
}
}
while(dt1<T);
for(int j=0;j<=N;j++)
{
cout<<x[j]<<"\t\t\t";
cout<<u[j]<<"\n";
}
return 0;
}
**) Реализация численного решения на языке программирования С++
#include "stdafx.h"
#include "iostream"
#include "fstream"
#include <cmath>
#include "vector"
#include <stdio.h>
using namespace std;
const double kap=1.4;
const double ro_0=kap;
const double E_0=1.0/(kap*(kap-1));
const double p_0=1;
const double u_0=0;
const int N=30;
double ds,dt,nu,T=0.6,bbb,D,RO,P;
ofstream file("D:\\a22.txt");
vector<vector<double>>A;
vector<vector<double>>B;
vector<vector<double>>AV;
vector<vector<double>>BV;
vector<double> ro;
vector<double> p;
vector<double> u;
vector<double> up;
vector<double> x;
vector<double> E;
void ini()
{
A.resize(N+1);
for(int i=0;i<=N;i++)
{A[i].resize(N+1);}
B.resize(N+1);
for(int i=0;i<=N;i++)
{B[i].resize(N+1);}
AV.resize(N+1);
for(int i=0;i<=N;i++)
{AV[i].resize(N+1);}
BV.resize(N+1);
for(int i=0;i<=N;i++)
{BV[i].resize(N+1);}
ro.resize(N+1);
p.resize(N+1);
u.resize(N+1);
up.resize(N+1);
E.resize(N+1);
x.resize(N+1);
}
void nach()
{
for(int i=0;i<=N;i++)
{
p[i]=p_0;
ro[i]=ro_0;
36
u[i]=u_0;
E[i]=E_0;
A[0][i]=-1.0/ro_0;
A[1][i]=u_0;
A[2][i]=E_0;
}
}
double u_p(double x)
{
return 0.6;
}
void B_I()
{
for(int i=0;i<=N;i++)
{
double A_B=0;
B[0][i]=u[i];
B[1][i]=p[i]-A_B;
B[2][i]=u[i]*p[i]-A_B;
}
}
void predictor()
{
for(int i=0;i<3;i++)
{
for(int j=1;j<N;j++)
{
AV[i][j]=A[i][j]+nu*(B[i][j]-B[i][j+1]);
}
}
for(int j=1;j<N;j++)
{
ro[j]=-1.0/AV[0][j];
u[j]=AV[1][j];
E[j]=AV[2][j];
p[j]=(kap-1)*ro[j]*(E[j]-0.5*u[j]*u[j]);
}
ro[N]=ro[N-1];
u[N]=u[N-1];
E[N]=E[N-1];
p[N]=p[N-1];
ro[0]=2*ro[1]-ro[2];
u[0]=u_p(1);
E[0]=2*E[1]-E[2];
p[0]=(kap-1)*ro[0]*(E[0]-0.5*u[0]*u[0]);
for(int i=0;i<=N;i++)
{int j=i+2;
if(j>N)
{
j=N;
}
double RAS=u[j]-u[j-1];
double A_B=ro[i]*bbb*RAS*abs(RAS);
BV[0][i]=u[i];
BV[1][i]=p[i]-A_B;
BV[2][i]=u[i]*p[i]-A_B*u[i];
}
}
void corrector()
{
for(int i=0;i<3;i++)
{
for(int j=1;j<N;j++)
{
A[i][j]=(A[i][j]+AV[i][j]+nu*(BV[i][j-1]-BV[i][j]))/2.0;
}
}
for(int j=1;j<N;j++)
{
ro[j]=-1.0/A[0][j];
u[j]=A[1][j];
E[j]=A[2][j];
p[j]=(kap-1)*ro[j]*(E[j]-0.5*u[j]*u[j]);
}
ro[0]=2*ro[1]-ro[2];
u[0]=u_p(1);
37
E[0]=2*A[2][1]-A[2][2];
p[0]=(kap-1)*ro[0]*(E[0]-0.5*u[0]*u[0]);
ro[N]=ro[N-1];
u[N]=-u[N-1];
E[N]=E[N-1];
p[N]=p[N-1];
}
void toch_r()
{
D=(kap+1)*u_p(1)/4+sqrt(((kap+1)*u_p(1)/4)*((kap+1)*u_p(1)/4)+1);
RO=kap*D/(D-u_p(1));
P=2*kap*D*D/(kap+1)-(kap-1)/(kap+1);
}
int _tmain(int argc, _TCHAR* argv[])
{
ofstream file("D:\\a22.txt");
ds=kap/N;bbb=0.45;
double dt1=0;
dt=0.01;
nu=dt/ds;
ini();
nach();
for(int i=0;i<=N;i++)
{
x[i]=i*ds/kap;
}
B_I();
do{
for(int i=0;i<=N;i++)
{
up[i]=u[i];
}
predictor();
corrector();
for(int i=0;i<=N;i++)
{int j=i+2;
if(j>N)
{
j=N;
}
double RAS=u[j]-u[j-1];
double A_B=ro[i]*bbb*RAS*abs(RAS);
B[0][i]=u[i];
B[1][i]=p[i]-A_B;
B[2][i]=u[i]*p[i]-A_B*u[i];
}
dt1=dt1+dt;
for(int i=0;i<=N;i++)
{
x[i]=x[i]+0.5*(u[i]+up[i])*dt;
}
}
while(dt1<T);
toch_r();
for(int j=0;j<=N;j++)
{
cout<<x[j]<<"\t\t\t";
cout<<u[j]<<"\n";
file<<x[j]<<"\t";
file<<u[j]<<"\t";
}
return 0;
}
38
Использованная литература
1. Филатов Е.И. «Численные методы газовой динамики» Казань: Казанский
университет, 2011.-84с
2. Черный Г.Г. Течения газа с большой сверхзвуковой скоростью М.:Государственное издание физико-математической литературы, 1959.-221с
3. Самарский А.А., Попов Ю.П. Разностные методы решения задач газовой
динамики.-М.:Наука,1980.-352с
4. Пасконов В. М., Полежаев В. И., Чудов Л. А. Численное моделирование
процессов тепло- и массообмена.- Наука,1984.-288с
5. Тюрев В.В. Гиперзвуковые течения газа.- Харьков «ХАИ» , 2006.-98с
6. Аржаников Н.С.,Седакова Г.С. Аэродинамика больших скоростей. Москва
«Высшая школа» , 1965. -560с
39
Download