
Исследование потока жидкости и газа при движении вблизи свободной поверхности тела (96
..pdfKnots[j][i].X:=Excel.ActiveSheet.Cells[j+(i-1)*XCells,1]; Knots[j][i].Y:=Excel.ActiveSheet.Cells[j+(i-1)*XCells,2]; j:=j+1;
end;
i:=i+1;
end;
Excel.Quit; //Рисуем поле в узлах i:=1;
while i<=XCells do begin
j:=1;
while j<=YCells do begin
Image1.Canvas.MoveTo(round(cell*i),round(cell*j)); Image1.Canvas.LineTo(round(cell*(i+Knots[i][j].X)),round(cell*(j-
Knots[i][j].Y))); Image1.Canvas.Ellipse(round(cell*(i+Knots[i][j].X))-2,round(cell*(j-
Knots[i][j].Y))-2,round(cell*(i+Knots[i][j].X))+2,round(cell*(j- Knots[i][j].Y))+2);
j:=j+1;
end;
i:=i+1;
end;
end;
end;
//Сохранение базисного поля в файл .xls procedure TForm1.Button4Click(Sender: TObject); var i,j:integer;
Excel:variant; begin
if DlgSave.Execute then begin
Excel:=CreateOleObject('Excel.Application');
Excel.WorkBooks.Add;
i:=1;
while i<=YCells do begin
j:=1;
while j<=XCells do begin
32
Excel.ActiveSheet.Cells[j+(i-1)*XCells,1]:=Knots[j][i].X; Excel.ActiveSheet.Cells[j+(i-1)*XCells,2]:=Knots[j][i].Y; j:=j+1;
end;
i:=i+1;
end;
Excel.ActiveWorkBook.SaveAs(DlgSave.FileName);
Excel.ActiveWorkBook.Close;
Excel.Quit;
end;
end;
function GetE(x,y:extended):Knot;
var Ex,Ey,Ra2,Rb2,Rc2,Rd2,R:extended; ya,yc,yb,yd,xa,xb,xc,xd:integer; E:Knot;
begin ya:=trunc(y+1); yb:=trunc(y); yc:=trunc(y); yd:=trunc(y+1);
xa:=trunc(x+1);
xb:=trunc(x+1);
xc:=trunc(x);
xd:=trunc(x);
Ra2:=sqr(x-xa)+sqr(y-ya);
Rb2:=sqr(x-xb)+sqr(y-yb);
Rc2:=sqr(x-xc)+sqr(y-yc);
Rd2:=sqr(x-xd)+sqr(y-yd);
if (Form1.Knots[xd][yd].X=0) then begin
E.X:=0;
E.Y:=0;
GetE:=E;
exit;
end;
if Ra2<eps then begin
Ex:=Form1.Knots[xa][ya].X;
33
Ey:=Form1.Knots[xa][ya].Y; end
else if Rb2<eps then begin
Ex:=Form1.Knots[xb][yb].X;
Ey:=Form1.Knots[xb][yb].Y; end
else if Rc2<eps then begin
Ex:=Form1.Knots[xc][yc].X;
Ey:=Form1.Knots[xc][yc].Y; end
else if Rd2<eps then begin
Ex:=Form1.Knots[xd][yd].X;
Ey:=Form1.Knots[xd][yd].Y; end
else if (yb<=1) then begin R:=1/Ra2+1/Rd2;
Ex:=Form1.Knots[xa][ya].X/Ra2+Form1.Knots[xd][yd].X/Rd2;
Ey:=Form1.Knots[xa][ya].Y/Ra2+Form1.Knots[xd][yd].Y/Rd2;;
Ex:=Ex/R;
Ey:=Ey/R; end
else if ya>=YCells then begin R:=1/Rb2+1/Rc2;
Ex:=Form1.Knots[xb][yb].X/Rb2+Form1.Knots[xc][yc].X/Rc2;
Ey:=Form1.Knots[xb][yb].Y/Rb2+Form1.Knots[xc][yc].Y/Rc2;;
Ex:=Ex/R;
Ey:=Ey/R; end
else begin
R:=1/Ra2+1/Rb2+1/Rc2+1/Rd2;
Ex:=Form1.Knots[xa][ya].X/Ra2+Form1.Knots[xb][yb].X/Rb2+Form1.Knots[
xc][yc].X/Rc2+Form1.Knots[xd][yd].X/Rd2;
Ey:=Form1.Knots[xa][ya].Y/Ra2+Form1.Knots[xb][yb].Y/Rb2+Form1.Knots[
xc][yc].Y/Rc2+Form1.Knots[xd][yd].Y/Rd2;
34
Ex:=Ex/R;
Ey:=Ey/R;
end;
E.X:=Ex;
E.Y:=Ey;
GetE:=E;
end;
procedure DrawECurves(i,j:integer); var x,y,k:extended;
E:Knot; begin
x:=i;
y:=j;
Form1.Image1.Canvas.MoveTo(round(cell*x),round(cell*y));
E.X:=Form1.Knots[round(x)][round(y)].X;
E.Y:=Form1.Knots[round(x)][round(y)].Y; if (E.x=0) then
begin x:=x+1;
Form1.Image1.Canvas.MoveTo(round(cell*x),round(cell*y)); end
else begin
k:=E.y/E.x;
x:=x+sqrt(E.x*E.x+E.y*E.y)/sqrt(1+k*k); y:=y-sqrt(E.x*E.x+E.y*E.y)*sqrt(k*k/(k*k+1))*sign(k); Form1.Image1.Canvas.LineTo(round(cell*x),round(cell*y)); Form1.Image1.Canvas.Ellipse(round(cell*x)-2,round(cell*y)-
2,round(cell*x)+2,round(cell*y)+2);
end;
while (x<XCells+eps) and (y<YCells+0.5) and (x>0) and (y>0.5) do begin
E:=GetE(x,y); if (E.x=0) then begin
x:=x+1;
Form1.Image1.Canvas.MoveTo(round(cell*x),round(cell*y));
continue;
end;
k:=E.y/E.x;
x:=x+sqrt(E.x*E.x+E.y*E.y)/sqrt(1+k*k);
35
y:=y-sqrt(E.x*E.x+E.y*E.y)*sqrt(k*k/(k*k+1))*sign(k); Form1.Image1.Canvas.LineTo(round(cell*x),round(cell*y)); Form1.Image1.Canvas.Ellipse(round(cell*x)-2,round(cell*y)-
2,round(cell*x)+2,round(cell*y)+2);
Application.ProcessMessages;
end;
end;
procedure TForm1.Button5Click(Sender: TObject); var x,y,k,Ex,Ey,Ra2,Rb2,Rc2,Rd2,R:extended;
i,j,ya,yc,yb,yd,xa,xb,xc,xd:integer; begin
Image1.Canvas.Pen.Color:=clRed;
Image1.Canvas.Pen.Style:=psDot; for j:=1 to YCells do
DrawECurves(1,j);
end;
procedure DrawPCurves(i,j:integer); var x,y,p,h:extended;
E:Knot; begin
x:=i;
y:=j;
Form1.Image1.Canvas.Pen.Style:=psDash;
Form1.Image1.Canvas.MoveTo(round(cell*x),round(cell*y));
h:=0.1;
while (x<XCells+eps) and (y<YCells+0.5) and (x>0.5) and (y>0.5) do begin
E:=GetE(x,y); if E.x=0 then begin y:=y+1;
Form1.Image1.Canvas.MoveTo(round(cell*x),round(cell*y));
continue;
end;
p:=E.Y/E.X;
y:=y+h/sqrt(1+p*p); x:=x-h*sqrt(p*p/(p*p+1))*sign(p);
Form1.Image1.Canvas.LineTo(round(cell*x),round(cell*y));
end;
end;
36
procedure TForm1.Button6Click(Sender: TObject); var i,j:integer;
begin
for j:=1 to XCells do DrawPCurves(j,1);
end;
procedure TForm1.Image1Click(Sender: TObject); begin
if SPD.Execute then begin
Image1.Picture.SaveToFile(SPD.FileName);
end;
end;
end.
37
ПРИЛОЖЕНИЕ 2
Пример рабочего листа Excel с результатами измерений
1 |
А |
В |
0,94 |
0,05 |
|
2 |
0,97 |
0,04 |
3 |
1 |
0,09 |
4 |
1,21 |
0,05 |
5 |
1,02 |
–0,11 |
6 |
0,87 |
–0,15 |
7 |
0,81 |
–0,12 |
8 |
0,082 |
–0,04 |
9 |
0,83 |
–0,07 |
10 |
0,79 |
0,02 |
11 |
0,72 |
0,06 |
12 |
|
|
13 |
|
|
14 |
0,98 |
–0,17 |
15 |
0,74 |
–0,25 |
16 |
0,67 |
–0,17 |
17 |
0,69 |
–0,08 |
18 |
0,74 |
–0,02 |
19 |
0,78 |
0,03 |
20 |
0,67 |
0,04 |
21 |
0,83 |
0,08 |
22 |
|
|
38
СПИСОК ЛИТЕРАТУРЫ
1.Гидромеханика: Учеб. для вузов / Д.Н. Попов, С.С. Панаиотти, М.В. Рябинин; Под ред. Д.Н. Попова. М.: Изд-во МГТУ им. Н.Э. Баумана, 2002. 384 с.
2.Краснов Н.Ф. Аэродинамика: В 2 ч. Ч. 1: Основы теории. Аэродинамика профиля и крыла: Учеб. для втузов. М.: Высш. шк., 1976. 384 с.
3.Опыты и моделирование при изучении электромагнитного поля / Г.А. Рязанов. М.: Наука, 1966. 208 с.
4.Иродов И.Е. Основные законы электромагнетизма: Учеб. пособие для студентов вузов. М.: Высш. шк., 1991. 288 с.
39
|
ОГЛАВЛЕНИЕ |
|
ТЕОРЕТИЧЕСКАЯ ЧАСТЬ ............................................................. |
3 |
|
1. |
Основные сведения из гидромеханики .................................. |
3 |
2. |
Моделирование процессов гидромеханики |
|
|
с применением стационарного электрического поля .......... |
12 |
3. |
Проведение измерений в стационарном электрическом |
|
|
поле .......................................................................................... |
18 |
ЭКСПЕРИМЕНТАЛЬНАЯ ЧАСТЬ ................................................ |
20 |
|
1. |
Определение параметров потока путем построения |
|
|
линий тока и эквипотенциальных поверхностей ............... |
20 |
2. |
Описание лабораторной установки ....................................... |
24 |
3. |
Порядок выполнения работы .................................................. |
25 |
КОНТРОЛЬНЫЕ ВОПРОСЫ .......................................................... |
27 |
|
Приложения ....................................................................................... |
28 |
|
Список литературы ........................................................................... |
39 |
40