Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчёт моделирование ЛИ.doc
Скачиваний:
6
Добавлен:
10.09.2019
Размер:
324.61 Кб
Скачать

4. Численные методы решения дифференциальных уравнений первого и второго порядка

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

5. Разработка блок-схемы программы и текста программы

НАЧАЛО

ВВОД ДАННЫХ

Рисунок 1. Укрупненная блок-схема программы

Текст программы

uses graph, crt ;

var

d,dd, m,f,c,Ax,Ay,O2, Tg, denP,denG, Vkg,

x, y, Ht, Hg, Wg, Wgor, dT, Ta, Vx, Vy : double ;

mast,Re, Wx,Wy,Votn: double;

Tgk, Kgk, Akc, denPk,Br, Wr,Ar,Vr, Vg: double;

at,bt, time: double;

g1,g2,xx,yy : integer;

s1, s2 : string;

fff : text ;

label

met_end, met1;

begin

d:=872e-6 ;

denP:=1200 ; {kg/m3}

Wr:=34.3;

Ar:=7.3;

Vr:=45;

Vg:=6.104 ;

Kgk:=1.8;

Akc:=22;

Br:=211.3;

Ht:=44.9;

at:=22.2;

bt:=12.285;

O2:=21;

Hg:=Ht*0.2;

Wgor:=20 ;

x:=0.001;

y:=Hg;

Vx:=Wgor;

Vy:=0;

dT:=0.0005 ;

{=================}

time:= 0 ;

denPk:=denP*(100-Wr-Vr)/100;

{========================================================}

g1:=VGA; g2:=VGAHi;

initgraph(g1, g2, '');

MAST:=getmaxy/Ht;

met1:

xx:=round(x*mast);

yy:=getmaxy-round(y*mast);

putpixel(xx,yy,15);

{}

m:=denP*d*d*d*Pi/6 ;

Tg:=-y*1.116e0 + 1.553e3 ;{(-8.500e-3)*y+1.525e3;

DenG:=1.3*273/(Tg+273) ;

Vkg:=Tg*(4.405e-11*Tg + 1.211e-7) + 1.36e-6; {m2/s}

Wg:=Br*1000*Vg*(Tg+273)/(3600*273*at*bt) ;

Wy:=Wg;

{=====================}

if y < Hg then O2:=21

else O2:=(-0.4872)*y + 25.375;

{=====}

if abs(Hg-y)<0.5 then Wx:=Wgor

else Wx:=0;

Votn:=sqrt(sqr(Wx-Vx)+sqr(Wy-Vy));

Re:=d*Votn/Vkg;

if Re<1 then c:=24/Re

else c:=24/Re+ 4/exp(ln(Re)/3);

f:=Pi*d*d/4 ;

Ax:=c*f*denG*(Wx-Vx)*Votn/(2*m);

Ay:=c*f*denG*(Wy-Vy)*Votn/(2*m) - 9.8;

Vx:=Vx+Ax*dT;

Vy:=Vy+Ay*dT;

x:=x+Vx*dT;

y:=y+Vy*dT;

{===============================================================}

dd:=-exp(0.9*ln(Tg)) * O2 / (Kgk*2*2.21e8*((100-Akc)/100)*denPk*d);

d:=d + dd*dT;

time:=time + dT ;

{===============================================================}

{ time, x, y, d }

if d < 50e-6 then begin

xx:=round(x*mast);

yy:=getmaxy-round(y*mast);

setcolor(red) ;

circle(xx, yy, 2 ) ;

goto met_end ;

end;

if (y<Ht) and (not KEYPRESSED) and (y>0) then goto met1;

{=================================================================}

met_end :

str(x:-10:6, s1);

outtextXY(400,20, 'X='+S1);

str(y:-10:6, s2);

outtextXY(400,30, 'Y='+S2);

close(fff) ;

readkey;

{===============================}

end.