Министерство Образования Российской Федерации
Омский государственный технический университет
Кафедра “Авиа- и ракетостроение”
Расчетно-графическая работа
Расчет сверхзвукового обтекания заостренных тел вращения
КР 2068998-00.00.00.000.ПЗ
Омск 2006
Введение
Некоторые летательные аппараты (например, ракета, артиллерийский снаряд) или их конструктивные элементы могут иметь форму тела вращения. Исследования обтекания таких тел составляют содержание одного из важнейших разделов современной аэродинамики.
Корпус (фюзеляж) в виде тела вращения, или тела, по форме близкого к нему, представляет собой наряду с крыльями, управляющими и стабилизирующими элементами важнейшую часть многих летательных аппаратов. Некоторые типы аппаратов имеют корпус, как единственный, другие - как основной элемент аэродинамической схемы. Поэтому, в аэродинамических исследованиях изучение обтекания тел вращения и разработка методов расчета силового воздействия на них при таком обтекании занимают большое место.
Результаты аэродинамического расчета можно использовать для оценки аэродинамических свойств летательного аппарата, если он собой по форме представляет тело вращения, или же применить эти результаты с соответствующими данными для несущих поверхностей (крыльев, рулей, стабилизаторов) и интерференционными поправками как отдельные составляющие для комбинации «корпус- крыло- оперение».
Расчет установившегося обтекания летательных аппаратов, имеющих форму тонкого заостренного тела вращения, можно производить путем линеаризации задачи. Соответствующие способы расчета, основанные на методе источников и диполей. Дают возможность определить параметры потока на поверхности тонкого заостренного тела вращения, а также, его аэродинамические коэффициенты, как при осесимметричном обтекании, так и при движении под малым углом атаки.
Найти распределение диполей (функцию m(ε)) на цилиндрическом корпусе, имеющем заостренную головную часть с параболической образующей. Корпус совершает движение при M¥, под некоторым углом атаки α и одновременно вращается с угловой скоростью
вокруг поперечной оси, проходящей через центр масс. Длина тела xk, длина головной части xмид, расстояние от носка до центра масс хм, радиус корпуса rмид.Исходные данные для расчета:
M¥=1.5; xk=7.5 м; xмид=4.5; хм=5; rмид=1.5.
Корпус разбиваем на n=15 частей.
Расчет первых трех точек в MathCAD:
Формула для расчета радиуса тела:
Интенсивность диполей при обтекании под нулевым углом атаки рассчитывается по формулам:
Распределение диполей первых трех точек:
Коэффициент давления при обтекании под нулевым углом атаки расчитывается по формуле:
.Интенсивность диполей при обтекании под малым углом атаки рассчитывается по формулам:
Расчет коэффициента давления при обтекании под малым углом атаки
unitUnit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls, ExtCtrls, ComCtrls, TeEngine, Series, TeeProcs,
Chart, Buttons, DbChart, math, Menus;
type
TForm1 = class(TForm)
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
PageControl2: TPageControl;
TabSheet3: TTabSheet;
TabSheet4: TTabSheet;
TabSheet5: TTabSheet;
TabSheet6: TTabSheet;
TabSheet7: TTabSheet;
LabeledEdit1: TLabeledEdit;
LabeledEdit2: TLabeledEdit;
LabeledEdit3: TLabeledEdit;
LabeledEdit4: TLabeledEdit;
LabeledEdit5: TLabeledEdit;
LabeledEdit6: TLabeledEdit;
Panel1: TPanel;
Button1: TButton;
StringGrid1: TStringGrid;
Chart1: TChart;
Chart2: TChart;
Chart3: TChart;
Chart4: TChart;
Chart5: TChart;
Series1: TLineSeries;
Series2: TLineSeries;
Series3: TLineSeries;
Series4: TLineSeries;
Series5: TLineSeries;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
type
vector = array[0..101]of real;
var
Form1: TForm1;
n:integer;
m,p,m1,p1:Vector;
x,r,e:vector;
implementation
procedure DoCount(const Minf,Xk,Xmid,Xm,Rmid:real);
var a1,pr,sm:real;
k,i:Integer;
begin
a1:= sqrt( sqr(Minf)-1);
x[0]:=0;
for i := 1 to n do
x[i]:=x[i-1]+Xk/n;
for i:=0 to n do
if x[i]<=Xmid then r[i]:= (Rmid/Xmid)*(2-x[i]/Xmid)*x[i]
else r[i]:= Rmid ;
for i := 1 to n do
begin
e[i]:=x[i]-a1*r[i];
end;
pr:=x[1]/(a1*r[1]);
m[1]:= 1/(pr*sqrt(pr*pr-1)+ln(pr+sqrt(pr-1)));
for i := 1 to n-1 do
begin
sm:=0;
pr:=0;
for k := 1 to i do
begin
pr:=(x[i+1]-e[k-1])/(a1*r[i+1]);
sm:=sm+ m[k]*( pr* sqrt(pr*pr - 1)+ln( pr + sqrt(pr-1) ))
end;
pr:=(x[i+1]-e[i])/(a1*r[i+1]);
m[i+1]:=(1-sm)/( pr* sqrt(pr*pr-1)+ln( pr + sqrt(pr-1) ));
end;
for i:= 1 to n-1 do
begin
sm:=0;
for k:=1 to i do
begin
pr:=(x[i]-e[k-1])/(a1*r[i]);
sm:= sm+ m[i]*sqrt( pr*pr-1)
end;
p[i]:=(-4/a1)*sm;
end;
pr:=(x[1])/(a1*r[1]);
m1[1]:=((x[1]-Xm)/Xk)/(pr*sqrt(pr*pr-1)+arccosh(pr));
for i := 1 to n-1 do
begin
sm:=0;
for k := 1 to i do
begin
pr:=(x[i+1]-e[k-1])/(a1*r[i+1]);
sm:=sm+m1[k]*(pr*sqrt(pr*pr-1)+arccosh(pr))
end;
pr:=(x[i+1]-e[i])/(a1*r[i+1]);
m1[i+1]:=( ( (x[i+1]-Xm)/Xk )-sm)/
(pr*sqrt(pr*pr-1)+arccosh(pr));
end;
for i:= 1 to n-1 do
begin
sm:=0;
for k:=1 to i do
begin
pr:=(x[i]-e[k-1])/(a1*r[i]);
sm:= sm+ m1[k]*sqrt( pr*pr-1)
end;
p1[i]:=(-4/a1)*sm;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
n:=StrToInt(LabeledEdit6.Text);
DecimalSeparator:='.';
StringGrid1.Cells[0,0]:= '№';
StringGrid1.Cells[1,0]:= 'X';
StringGrid1.Cells[2,0]:= 'R';
StringGrid1.Cells[3,0]:= 'm';
StringGrid1.Cells[4,0]:= 'p';
StringGrid1.Cells[5,0]:= 'm1';
StringGrid1.Cells[6,0]:= 'p1';
end;
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
n:=StrToInt(LabeledEdit6.Text);
StringGrid1.RowCount:=n+1;
for i := 1 to n+1 do
with StringGrid1 do
begin
Cells[0,i]:= IntToStr(i-1);
end;
try
DoCount (StrToFloat(LabeledEdit1.Text),
StrToFloat(LabeledEdit2.Text),
StrToFloat(LabeledEdit3.Text),
StrToFloat(LabeledEdit4.Text),
StrToFloat(LabeledEdit5.Text));
except
ShowMessage('Проверьте введенные параметры!');
end;
Series1.Clear;
Series2.Clear;
Series3.Clear;
Series4.Clear;
Series5.Clear;
for i:= 0 to n do
begin
try
//рисуюграфики
Series1.Add(r[i]);
Series2.Add(m[i]);
Series3.Add(p[i]);
Series4.Add(m1[i]);
Series5.Add(p1[i]);
//Заполняютаблицу
StringGrid1.Cells[1,i+1]:= FloatToStrF(x[i],ffFixed,3,3);
StringGrid1.Cells[2,i+1]:= FloatToStrF(r[i],ffFixed,3,3);
StringGrid1.Cells[3,i+1]:= FloatToStrF(m[i],ffFixed,3,3);
StringGrid1.Cells[4,i+1]:= FloatToStrF(p[i],ffFixed,3,3);
StringGrid1.Cells[5,i+1]:= FloatToStrF(m1[i],ffFixed,3,3);
StringGrid1.Cells[6,i+1]:= FloatToStrF(p1[i],ffFixed,3,3);
except
end;
end;
end;
end.
Скришоты работы программы в сравнении с графиками MathCad:
Проведенный в программе расчет на первых трех участках совпадает с данными, полученными при моделировании в MathCAD (с точностью до 103), поэтому принимается, что программа расчета дает справедливые результаты для остальных участков обтекаемого тела.
Список литературы
1. Кузнецов В.И., Макаров В.В. Сверхзвуковое обтекание заостренных тел вращения: Учебное пособие.- Омск: Изд-во ОмГТУ, 1999г.- 80с.
2. Кузнецов В.И., Макаров В.В. Аэрогазодинамика в вопросах и задачах: практикум.- Омск: Изд-во ОмГТУ, 2002г.- 80с.