Advertisement
Guest User

Untitled

a guest
Sep 15th, 2013
352
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 18.02 KB | None | 0 0
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7. Dialogs, StdCtrls, ComCtrls;
  8.  
  9. var
  10. S,lambda,tau,skos,g_wzgl,Sh,Sv,b,lo,lk,Vprz,bkl_wzg,bkl,blot,
  11. lambdah,tauh,skosh,lambdav,tauv,skosv,bh,lo_h,lk_h,bv,lo_v,lk_v,mproj,gh,
  12. gv,mpal,etakl,etakl1,Czmax_skrz,Czmax_start,Cx_lad,Cx0,Czmax_lad,Cxstart,
  13. Wmaxstartu,Wmax,Cxklstart,Skl,lambda_efek,Wmaxstart,Vwmax,Vwmax_start,
  14. Cx0_lad,Cx0_start,Q,Cx_start,Cznaj,Cz_dob,Cx_dob,Cxkllad,Ls,Ll,Vprzelotowe:real;
  15. const
  16. mikro=0.09; // wspolczynnik tarcia kol o ziemie
  17. mikroh=0.3; // wspolczynnik tarcia kol o ziemie z uzyciem hamulcow
  18. g=9.81;
  19. ro=1.225; //gestosc powietrza na h=0
  20.  
  21. type
  22. TForm1 = class(TForm)
  23. Button1: TButton;
  24. wczytywaniedanych: TPageControl;
  25. TabSheet1: TTabSheet;
  26. Edit1: TEdit;
  27. Edit2: TEdit;
  28. Edit3: TEdit;
  29. Edit4: TEdit;
  30. Edit5: TEdit;
  31. Edit6: TEdit;
  32. Edit7: TEdit;
  33. Edit8: TEdit;
  34. Edit9: TEdit;
  35. Edit10: TEdit;
  36. Label1: TLabel;
  37. Label2: TLabel;
  38. Label3: TLabel;
  39. Label4: TLabel;
  40. Label5: TLabel;
  41. Edit11: TEdit;
  42. Edit12: TEdit;
  43. Edit13: TEdit;
  44. Edit14: TEdit;
  45. Label6: TLabel;
  46. Label7: TLabel;
  47. aerodynamika: TTabSheet;
  48. Edit15: TEdit;
  49. Edit16: TEdit;
  50. Edit17: TEdit;
  51. Edit18: TEdit;
  52. Edit19: TEdit;
  53. Edit20: TEdit;
  54. Edit21: TEdit;
  55. Edit22: TEdit;
  56. Label8: TLabel;
  57. Label9: TLabel;
  58. Label10: TLabel;
  59. Edit23: TEdit;
  60. Edit24: TEdit;
  61. Edit25: TEdit;
  62. Edit26: TEdit;
  63. Label11: TLabel;
  64. Label12: TLabel;
  65. Label13: TLabel;
  66. modelmasowy: TTabSheet;
  67. Edit27: TEdit;
  68. pre: TLabel;
  69. TabSheet2: TTabSheet;
  70. Label14: TLabel;
  71. Label15: TLabel;
  72. Edit28: TEdit;
  73. Label16: TLabel;
  74. Edit29: TEdit;
  75. Edit30: TEdit;
  76. Edit31: TEdit;
  77. Edit32: TEdit;
  78. Label17: TLabel;
  79. Label18: TLabel;
  80. Edit33: TEdit;
  81. Label19: TLabel;
  82. Edit34: TEdit;
  83. Edit35: TEdit;
  84. Edit36: TEdit;
  85. Edit37: TEdit;
  86. Edit38: TEdit;
  87. Edit39: TEdit;
  88. Label20: TLabel;
  89. Label21: TLabel;
  90. Label22: TLabel;
  91. Label23: TLabel;
  92. Label24: TLabel;
  93. Label25: TLabel;
  94. Label26: TLabel;
  95. Label27: TLabel;
  96. Label28: TLabel;
  97. Edit40: TEdit;
  98. Edit41: TEdit;
  99. Edit42: TEdit;
  100. Edit43: TEdit;
  101. Edit44: TEdit;
  102. Edit45: TEdit;
  103. Edit46: TEdit;
  104. Edit47: TEdit;
  105. Edit48: TEdit;
  106. Edit49: TEdit;
  107. Label29: TLabel;
  108. Label30: TLabel;
  109. Label31: TLabel;
  110. Label32: TLabel;
  111. Label33: TLabel;
  112. Label34: TLabel;
  113. Label35: TLabel;
  114. Label36: TLabel;
  115. Label37: TLabel;
  116. Label38: TLabel;
  117. Label39: TLabel;
  118. Label40: TLabel;
  119. Label41: TLabel;
  120. Label42: TLabel;
  121. Label43: TLabel;
  122. Label44: TLabel;
  123. Label45: TLabel;
  124. Label46: TLabel;
  125. Label47: TLabel;
  126. Edit50: TEdit;
  127. Edit51: TEdit;
  128. Edit52: TEdit;
  129. Edit53: TEdit;
  130. Edit54: TEdit;
  131. Label48: TLabel;
  132. Label49: TLabel;
  133. Label50: TLabel;
  134. Label51: TLabel;
  135. Edit55: TEdit;
  136. Edit56: TEdit;
  137. Edit57: TEdit;
  138. Label52: TLabel;
  139. Label53: TLabel;
  140. Label54: TLabel;
  141. Label55: TLabel;
  142. Edit58: TEdit;
  143. Edit59: TEdit;
  144. Edit60: TEdit;
  145. Label56: TLabel;
  146. Label57: TLabel;
  147. Label58: TLabel;
  148. Edit61: TEdit;
  149. Edit62: TEdit;
  150. Edit63: TEdit;
  151. procedure geometria(Sender: TObject);
  152. procedure osiagi(Sender: TObject);
  153.  
  154.  
  155. procedure wczytywaniedanychChange(Sender: TObject);
  156. procedure aerodynamikaContextPopup(Sender: TObject; MousePos: TPoint;
  157. var Handled: Boolean);
  158. procedure modelmasowyContextPopup(Sender: TObject; MousePos: TPoint;
  159. var Handled: Boolean);
  160. procedure FormCreate(Sender: TObject);
  161. procedure Button1Click(Sender: TObject);
  162.  
  163.  
  164.  
  165. { Private declarations }
  166. public
  167.  
  168.  
  169. end;
  170.  
  171.  
  172. var
  173. Form1: TForm1;
  174.  
  175.  
  176.  
  177.  
  178. implementation
  179.  
  180. uses Math;
  181.  
  182. {$R *.dfm}
  183.  
  184.  
  185.  
  186. Function zsc_trap(a,b,h: real):real; //funkcja liczaca wspolrzedna z SC trapezu
  187. var
  188. zsc_trap,xsc_trap,zsc,xsc:real;
  189. begin
  190. zsc:=h-(h*((2/3*a+1/3*b)/a+b)); //zsc liczone od dluzszej podstawy
  191.  
  192. zsc_trap:=zsc;
  193.  
  194. end;
  195. Function xsc_trap(a,b,h,skos: real):real; //funkcja liczaca wspolrzedna x SC trapezu
  196. var
  197. zsc_trap,xsc_trap,zsc,xsc:real;
  198. begin
  199. zsc:=h-(h*((2/3*a+1/3*b)/a+b)); //zsc liczone od dluzszej podstawy
  200. xsc:=a/2+tan(skos)*(zsc_trap); //liczone od przodu trapezu
  201. xsc_trap:=xsc;
  202.  
  203. end;
  204. Function Pss(V:real):real; //funkcja liczaca ciag od predkosci dla mocy startowej
  205. begin
  206. Pss:=(-7E-5)*power(V,4)+0.0144*power(V,3)-0.9331*power(V,2)+3.2889*V+4570;
  207. end;
  208.  
  209. Function Ps(V:real):real; //ciag od predkosci dla warunkow przelotowych 75% mocy
  210. begin
  211. Ps:=(-7E-5)*power(V,4)+0.0144*power(V,3)-0.9331*power(V,2)+3.2889*V+1904;
  212. end;
  213.  
  214. Function Lp(V:real):real;
  215. begin
  216. Lp:=(Q/(2*g))*(V/(Pss(V)-mikro*Q-0.5*ro*S*V*V*(Cx_start-mikro*Cznaj))); //funcja podcalkowa z dlugosci L1 startu i ladaowania
  217. end;
  218.  
  219. Function Lpl(V:real):real;
  220. begin
  221. Lpl:=(Q/(2*g))*(V/(-mikroh*Q-0.5*ro*S*V*V*(Cx_dob-mikroh*Cz_dob))); //funcja podcalkowa z dlugosci L1 startu i ladaowania
  222. end;
  223.  
  224.  
  225.  
  226.  
  227. procedure TForm1.wczytywaniedanychChange(Sender: TObject);
  228. begin
  229. //zmienne decyzyjne
  230.  
  231.  
  232.  
  233.  
  234. S:=StrToFloat(Edit1.Text);
  235. lambda:=StrToFloat(Edit3.Text);
  236. tau:=StrToFloat(Edit5.Text);
  237. skos:=StrToFloat(Edit7.Text);
  238. g_wzgl:=StrToFloat(Edit9.Text);
  239. Sh:=StrToFloat(Edit11.Text);
  240. Sv:=StrToFloat(Edit13.Text);
  241. lambdah:=StrToFloat(Edit15.Text);
  242. tauh:=StrToFloat(Edit17.Text);
  243. skosh:=StrToFloat(Edit19.Text);
  244. lambdav:=StrToFloat(Edit21.Text);
  245. tauv:=StrToFloat(Edit23.Text);
  246. skosv:=StrToFloat(Edit25.Text);
  247. gh:=StrToFloat(Edit29.Text);
  248. gv:=StrToFloat(Edit31.Text);
  249. Vprz:=StrToFloat(Edit27.Text)/3.6;
  250. mproj:=StrToFloat(Edit28.Text);
  251. mpal:=100; //////////////////////ma byc losowane !!!!!!!!!!!!!!!!!!!!
  252. etakl:=StrToFloat(Edit33.Text); //dlugosc wzgledna klapy
  253.  
  254. end;
  255.  
  256. procedure TForm1.geometria(Sender: TObject);
  257.  
  258. begin
  259. //geometria skrzydel i statecznikow
  260. b:=sqrt(lambda*S);
  261. lo:=S/(b/2+tau*b/2);
  262. lk:=lo*tau;
  263. bkl:=bkl_wzg*b;
  264. blot:=b-bkl-1.6;
  265.  
  266. //statecznik poziomy
  267. bh:=sqrt(lambdah*S);
  268. lo_h:=S/(bh/2+tauh*bh/2);
  269. lk_h:=lo*tau;
  270.  
  271. //statecznik pionowy
  272. bv:=sqrt(lambdav*S);
  273. lo_v:=S/(bv/2+tauv*bv/2);
  274. lk_v:=lo*tau;
  275. end;
  276.  
  277.  
  278. procedure TForm1.aerodynamikaContextPopup(Sender: TObject;
  279. MousePos: TPoint; var Handled: Boolean);
  280. var
  281. SCA,Cfskrz,Re_skrz,l_kon,eta_g,Cx_prof,Cxprof_int,Sskkad,deltaCx_szk,deltaCxszcz_kl,
  282. deltaCxszcz_lot,Cx0_skrz,Swet,Rekad,Cfkad,Cx0_kad,lambdakad,Som_kad,
  283. Skad,dkad,etakad,Cxt_kad,lh_kon,ReH,etag_h,bster_h,deltaCxH_szkod,CxH,CfH,
  284. lv_kon,ReV,etag_v,bster_v,deltaCxV_szkod,CxV,CfV,Cx_pod,Skol,Spod,Sgoleni,
  285. Cz,Cx,Cxklstart,k1z,k2z,k3z,k1w,k2w,k3w,deltaCzstart,
  286. deltaCzlad,Czmax_prof,Cxlad,cieciwa,d,z,ktau:real;
  287. const
  288. k_int=0.6; //wspolczynnik interferncji dla dolnoplata
  289. k1=2;//wspolczynnik uwzgledniajacy obecnosc gondol na skrzydle
  290. deltaCx_kon=0.013;
  291. hkad=1;
  292. deltaCx_w=0.005; //wspolczynnik uwzgeledniajcy wiatrochron
  293. Sw=1.2*0.8; //powierzchnia przekroju wiatrochronu
  294. deltaCz10=0.4; //przystost wspolczynnika Cz przy wychyleniu klapy krokodylowej o 10 stopni
  295. deltaCz50=0.82; //przystost wspolczynnika Cz przy wychyleniu klapy krokodylowej o 50 stopni
  296. deltaCx_komp=0.003; //wzpolczynnik ze wzgledu na kompensacje osiowa stery wyskosci
  297. Cxkon_h=0.0013;// wspolczynnikokreslajacy technologie wykonania statecznika
  298. Cxkon_v=0.0013;// wspolczynnikokreslajacy technologie wykonania statecznika
  299. kint=0.06;
  300. begin
  301. //Cx0 skrzydla
  302. l_kon:=S/b;
  303. Re_skrz:=((Vprz*l_kon)/(1.45E-5));
  304. Cfskrz:=0.455/((power(log10(Re_skrz),2.58)));
  305. eta_g:=1+g_wzgl;
  306. Cx_prof:=0.925*k1*Cfskrz*eta_g;
  307. Sskkad:=(lo*1.2)/S; //1,2 szerokosc kadluba
  308. Cxprof_int:=(1-k_int*Sskkad);
  309. deltaCxszcz_kl:=0.0017*(bkl/b);
  310. deltaCxszcz_kl:=0.0017*(blot/b);
  311. deltaCx_szk:=deltaCx_kon+deltaCxszcz_kl+deltaCxszcz_lot;
  312. Swet:=S-Sskkad;
  313. Cx0_skrz:=(Cxprof_int+deltaCx_szk)*(Swet/S);
  314.  
  315. //Cx kadluba
  316. Rekad:=(lk*Vprz)/1.45E-5;
  317. Cfkad:=0.455/((power(log10(Rekad),2.58)));
  318. Skad:=1.2*hkad;
  319. dkad:=2*sqrt(Skad/3.14);
  320. lambdakad:=lk/dkad;
  321. Som_kad:=3*lambdakad;
  322. etakad:=1+(2.5/sqrt((power(lambdakad,3))));
  323. Cxt_kad:=Cfkad*etakad*(Som_kad/Skad);
  324. Cx0_kad:=Cxt_kad+deltaCx_w*(Sw/Skad);
  325.  
  326. //Cx statecznika poziomego
  327. lh_kon:=Sh/bh;
  328. ReH:=(lh_kon*Vprz)/1.45E-5;
  329. bster_h:=bh;
  330. CfH:=0.455/((power(log10(ReH),2.58)));
  331. etag_h:=1+3.5*gh;
  332. deltaCxH_szkod:=0.0017*(bster_h/bh)+Cxkon_h;
  333. CxH:=2*CfH*etag_H+deltaCx_komp+deltaCxH_szkod;
  334.  
  335. //Cx statecznika pionowego
  336. lv_kon:=Sv/bv;
  337. Rev:=(lh_kon*Vprz)/1.45E-5;
  338. bster_v:=bv;
  339. CfV:=0.455/((power(log10(ReV),2.58)));
  340. etag_h:=1+3.5*gh;
  341. deltaCxV_szkod:=0.0017*(bster_V/bV)+Cxkon_v;
  342. CxH:=2*CfH*etag_H+deltaCx_komp+deltaCxV_szkod;
  343.  
  344. //Cx podwozia
  345. Cx_pod:=0.565;
  346. Skol:=0.3*0.1;
  347. Sgoleni:=3*0.02;
  348. Spod:=Skol+Sgoleni;
  349.  
  350. //Cx od wychylonej klapy
  351. Cxklstart:=0.2*0.0014*power(10,1.5);//klapa krokodylowa start wychylenie 10 stopni
  352. Cxkllad:=0.2*0.0014*power(50,1.5);//klapa krokodylowa ladowanie wychylenie 50 stopni
  353.  
  354. //powierzchnia klap
  355. z:=1.3;//odleglosc pocztku klapy od osi symetrii samolotu
  356. d:=(lk*0.5*b)/(lo-lk);
  357. cieciwa:=(lo/(0.5*b+d))*((d+0.5*b)-z);
  358. Skl:=cieciwa*0.2*b*etakl;
  359.  
  360. //Cx0 samolotu dla konfiguracji gladkiej
  361. Cx0:=(Cx0_skrz+Cx0_kad*(Skad/S)+CxH*(Sh/S)+CxV*(Sv/S)+Cx_pod*(Spod/S))*(1+kint);
  362.  
  363. //Wartosci Cz dla konfiguracji gladkiej, konfiguracji do startu i ladowania
  364. Czmax_prof:=0.3268+26.06*g_wzgl-161.207*power(g_wzgl,2)+293.334*power(g_wzgl,3);
  365. ktau:=-0.2135*power(tau,2)+0.2398*tau+0.8737;
  366. Czmax_skrz:=0.5*Czmax_prof*ktau*(1+cos(skos));
  367.  
  368. etakl1:=1.2/(etakl*b); //1,2 szerokosc kadluba
  369. k1z:=power(-0.04167*etakl,2)+1.467*etakl+4E-16; // poprawka Fiszdon str.81
  370. k2z:=-0.02*etakl-0.02; //poprawka Fiszdon str.81
  371. k3z:=-0.0911*etakl+0.0914;
  372. k1w:=power(-0.04167*etakl1,2)+1.467*etakl1+4E-16; //wps poprawki Fiszdon str.81
  373. k2w:=-0.02*etakl1-0.02; // wsp poprawki Fiszdon str.81
  374. k3w:=-0.0911*etakl1+0.0914;
  375. deltaCzstart:=deltaCz10*(k1z*(1+k2z*(lambda-6)+k3z*sin(skos))-k1w*(1+k2w*(lambda-6)+k3w*sin(skos))); //wplyw ksztaltu skrzydla na klape
  376. deltaCzlad:=deltaCz50*(k1z*(1+k2z*(lambda-6)+k3z*sin(skos))-k1w*(1+k2w*(lambda-6)+k3w*sin(skos))); //wplyw ksztaltu skrzydla na klape
  377.  
  378. //biegunowa analityczna
  379.  
  380. //biegunowa dla gladkiej konfiguracji
  381. lambda_efek:=0.8*lambda;
  382. Cx:=Cx0+(power(Cz,2)/(3.14*lambda_efek));
  383.  
  384. //biegunowa dla startu
  385. Cxstart:=(Cx0+Cxklstart*(Skl/S))+(power(Cz,2)/3.14*lambda_efek);
  386. Czmax_start:=Czmax_skrz+deltaCzstart;
  387. Cx0_start:=Cx0+Cxklstart*(Skl/S);
  388.  
  389. //biegunowa dla ladowania
  390. Cxlad:=(Cx0+Cxkllad*(Skl/S))+(power(Cz,2)/3.14*lambda_efek);
  391. Czmax_lad:=Czmax_skrz+deltaCzlad;
  392. Cx0_lad:=Cx0+(Cxkllad*(Skl/S));
  393. end;
  394.  
  395. procedure TForm1.modelmasowyContextPopup(Sender: TObject; MousePos: TPoint;
  396. var Handled: Boolean);
  397.  
  398. var
  399. mskrz,q,mh,mv,Hh,Hv,mk,mpod_gl,mpod_prz,mwyp,mster,mto,pow_komorysil,
  400. pow_kabiny,pow_tylkad,powkad,mjed_kad,xsc_sam,zsc_sam:real;
  401.  
  402. const
  403. nz=3.5;
  404. knz=1; //zespol napedowy w kadlubie
  405. deltap_kad=0;//nadcisnienie w kadlubie
  406. hpod=0.6;//wyskosc podwozia w m
  407. Nk_g=2;//ilosc kol podwozia glownego
  408. Nk_prz=1;//ilosc kol podwozia przedniego
  409. mzal=2*80+10;//masa zalogi+10kg bagazu
  410. mzesnap=64+10; //silnik Rotax+smiglo woodcomp
  411.  
  412. begin
  413. q:=0.5*1.225*Vprz;
  414.  
  415. mskrz:=power(0.036*S*10.76,0.758)*power(mpal*2.205,0.0035)*(lambda/power(cos(skos),2))*power(q*0.2089,0.006)*power(tau,0.004)*power(100*g_wzgl/cos(skos),-0.3)*power(1.5*nz*mproj*2.205,0.49)*0.4536; //Raymer
  416. mh:=0.064*power(nz*mproj,0.414)*power(q,0.168)*Sh*0.896*power(gh*100/cos(skosh),-0.3)*power(lambdah/power(cos(skosh),2),0.043)*power(tauh,-0.02)*power(tauh,-0.02); //Raymer
  417. Hh:=0.9*bh; //rozpietosc usterzenia poizomego poza kadlubem Raymer
  418. Hv:=0.9*bv; //rozpietosc usterzenia pionowego poza kadlubem Raymer
  419. mv:=0.292*(1+0.2*(Hh/Hv))*power(nz*mproj,0.376)*power(q,0.122)*power(Sv,0.873)*power((100*gv)/cos(skosv),-0.49)*power(lambdav/power(cos(skosv),2),0.357)*power(tauv,0.039); //Raymer
  420. mk:=1.14*knz*(1+0.4*deltap_kad)*power(lk,1.5)*power(mproj,0.25);
  421. mpod_gl:=0.0431*power(1.5*Nk_g*mproj*2.205,0.768)*power(((hpod*39.37)/12),0.409);
  422. mpod_prz:=0.0567*power(1.5*Nk_prz*mproj*2.205,0.566)*power(hpod*39.37/12,0.845);
  423. mster:=0.02*mproj;
  424. mwyp:=0.045*mproj;
  425. mto:=mskrz+mh+mv+mh+mk+mpod_gl+mpod_prz+mster+mwyp+mzal+mzesnap;
  426.  
  427. //polozenie srodka ciezkosci dla samolotu liczone od sciany ogniowej
  428.  
  429. //powierchnia czesci kadluba
  430. pow_komorysil:=0.5*(0.7+0.25)*0.8;
  431. pow_kabiny:=0.5*(1.2+0.7)*1.3;
  432. pow_tylkad:=1.2*(lk-0.8-1.3)*0.5;
  433. powkad:=pow_komorysil+pow_kabiny+pow_tylkad;
  434. mjed_kad:=mk/powkad; //masa 1m^2 kadluba
  435.  
  436. {przy liczeniu xsc zakladam ze zaloga bedzie siedziec w srodku ciezkosci
  437. masa ukladu sterowania lezy w polowie dlugosci kadluba),xsc
  438. liczone jest bez skrzydla bedzie to jednoscie odleglosc w jakiej ma sie zalezc 0,25 SCA skrzydla}
  439. xsc_sam:=(-pow_komorysil*mjed_kad*xsc_trap(0.7,0.25,0.8,20)-mpod_prz*0.1-mzesnap*0.4+mwyp*0.2+pow_kabiny*mjed_kad*xsc_trap(1.2,0.7,1.3,20)+mpod_gl+pow_tylkad*mjed_kad*0.33*(lk-2.1)+mster*0.5*lk+mv*(lk-2.1-xsc_trap(lo_v,lk_v,0.5*bv,skosv))+mh*(lk-2.1-xsc_trap(lo_h,lk_h,bh,skosh)))/mk+mv+mh+mwyp+mzesnap+mster+mpod_prz+mpod_gl;
  440.  
  441. {zsc liczone od podlogi samolotu}
  442. zsc_sam:=(mpal*0.5*g_wzgl*lo+mzesnap*0.4+mzal*g_wzgl*lo+0.6*mwyp+mv*(0.5+zsc_trap(lo_v,lk_v,bv))+mpod_gl*0.4+mpod_prz*0.4)/(mpal*mzesnap+mzal+mwyp+mv+mpod_gl+mpod_prz);
  443.  
  444. end;
  445.  
  446. procedure TForm1.osiagi(Sender: TObject);
  447.  
  448. const
  449. ng=0.2; //wspolczynnik przeciazenia
  450. hs=15; //wymagana wyskosc startu
  451. hl=15; //wyskosc podekscia
  452. h3l=5;//wyskosc konca podejscia
  453. etas=0.76;//sprawnosc zespolu napedowego
  454.  
  455. var
  456. V,Vst,Vs0,Vmin,Q,Nr,Nrs,Nn,Nn_start,Cz,Vod,F0,Fod,Cxod,Pxod,L1,L2,L3,L4,
  457. deltaP,Pxwz,gammawz,R,h3,Cxopt_lad,Czopt_lad,gammalad,L1l,L2l,L3l,L4l,
  458. V1,V0,Vl,Rl,Cx_start,Cznaj,dx1,calka1,dx2,calka2,Pxprz,Czprz,Cxprz,K,Q0,Q1,
  459. zasieg,qe,m0,mk:real;
  460. i,n:integer;
  461. begin
  462. //ciezar samolotu
  463. Q:=mproj*9.81;
  464.  
  465. //Liczenie maksymalnej predkosci wznoszenia dla konfiguracji do startu
  466. Wmaxstartu:=0;
  467. Wmax:=0;
  468. for i:=0 to 100 do
  469. begin
  470. Cz:=Czmax_start/100*i;
  471. Vst:=sqrt(2*Q/1.25*S*Cz);
  472. Nrs:=-18.709*power(V,2)+2397.7*V+2499.4;
  473. Nn_start:=Q*((Cx0+Cxklstart*(Skl/S))+(power(Cz,2)/3.14*lambda_efek)/Cz)*Vst;
  474.  
  475. if (Wmaxstartu<((Nrs-Nn_start)/Q)) then
  476. Wmaxstart:=((Nrs-Nn_start)/Q);
  477. Vwmax_start:=Vst
  478. end;
  479.  
  480. //liczenie maksymalnego wznoszenia w konfiguracji gladkiej
  481. for i:=0 to 100 do
  482. begin
  483. Cz:=Czmax_skrz/100*i;
  484. V:=sqrt(2*Q/1.25*S*Cz);
  485. //Nr:=0.1081*power(V,3)-27.405*power(V,2)+2218.4*V-411.82; moc przelotowa
  486. Nrs:=-18.709*power(V,2)+2397.7*V+2499.4;
  487. Nn:=Q*(Cx0+(power(Cz,2)/(3.14*lambda_efek))/Cz)*V;
  488.  
  489. if(Wmax<((Nrs-Nn)/Q)) then
  490. Wmax:=(Nrs-Nn)/Q;
  491. Vwmax:=V;
  492. end;
  493.  
  494. //predkosc minimalna dla konfiguracji gladkiej
  495. Vmin:=sqrt(2*Q/1.25*Czmax_skrz*S);
  496.  
  497. //dlugosc startu
  498. Vs0:=sqrt((2*Q)/(1.25*S*Czmax_start));
  499. Vod:=1.15*Vs0;
  500. Cznaj:=mikro*0.5*3.13*lambda_efek;
  501. Cx_start:=Cx0+((power(Cznaj,2))/(3.14*lambda_efek));
  502.  
  503. //liczenie calki Lp
  504. dx1:= (Vod) / (n * 1.0);
  505. calka1 := 0;
  506. begin
  507. for i:=1 to n-1 do
  508. calka1 :=calka1+Lp(i*dx1);
  509. calka1 :=calka1+((Lp(0) + Lp(Vod)) / 2);
  510. calka1 :=calka1 *dx1;
  511. L1:=calka1;
  512. end;
  513. deltaP:=((((Pss(Vod)+Pss(Vwmax_start))/2)-((Pxod+Pxwz)/2)));
  514. Pxwz:=0.5*1.25*power(Vwmax_start,2)*S*Cxod;
  515. L2:=(Q/2*9.81)*(power(Vwmax_start,2)-power(Vod,2)/deltaP);
  516. gammawz:=ArcTan(Wmaxstart/Vwmax_start);
  517. R:=(power(Vwmax_start,2))/(((ng+(power(gammawz,2)/2)))*2);
  518. h3:=R*(1-cos(gammawz));
  519. L3:=R*sin(gammawz);
  520. L4:=(hs-h3)/tan(gammawz);
  521. Ls:=L1+L2+L3+L4;
  522.  
  523. //dlugosc ladowania
  524. Cxopt_lad:=2*Cx0_lad;
  525. Czopt_lad:=sqrt(3.14*lambda_efek*Cx0_lad);
  526. gammalad:=Cxopt_lad/Czopt_lad;
  527. L1l:=hl-h3l/tan(gammalad);
  528. V1:=1.1*sqrt((2*Q)/(1.25*S*Czmax_lad));
  529. V0:=sqrt((2*Q)/(1.25*S*Czmax_lad));
  530. Vl:=1.15*V0;
  531. Rl:=(power(V1,2))/(ng*9.81);
  532. L2l:=Rl*gammalad;
  533. L3l:=((Czopt_lad)/(Cxopt_lad*2*9.81))*(power(V1,2)-power(V0,2));
  534. Cx_dob:=(Cx0+Cxkllad*(Skl/S))+(power(0.1,2)/3.14*lambda_efek);
  535. Cz_dob:=0.1;
  536.  
  537. //liczenie calki odcinak 4 (dobiegu) //zakladam ze kat postojowy jest blisko 0
  538. dx2:= (Vod-0) / (n * 1.0);
  539. calka1 := 0;
  540. begin
  541. for i:=1 to n-1 do
  542. calka2 :=calka2+Lpl(i*dx1);
  543. calka2 :=calka2+((Lpl(0) + Lp(Vod)) / 2);
  544. calka2 :=calka2 *dx1;
  545. L4l:=calka2;
  546. end;
  547. Ll:=L1l+L2l+L3l+L4l;
  548.  
  549. //zasieg samolotu liczony dla 75% mocy,spalnie godzinowe 17l/h moc=56kW zakaldam stala prdekosc przelotowa
  550. //obliczenie predkosci przelotowej
  551. begin
  552. for i:=100 to 300 do
  553. Pxprz:=0.5*ro*i*i*S*(Cx0+((power((2*Q)/(ro*S*i*i),2)/3.14*lambda_efek)));
  554. if Ps(i)=Pxprz then
  555. Vprzelotowe:=i;
  556. end;
  557. Czprz:=(2*Q)/(ro*power(Vprzelotowe,2)*S);
  558. Cxprz:=Cx0+((Czprz*Czprz)/(3.13*lambda_efek));
  559. K:=Czprz/Cxprz;
  560. qe:=(17*0.75)/56; //kg/kW*h
  561. m0:=mproj;
  562. //masa koncowa, zakladam 0,2h na start, ladowanie i kolowanie maksymalny zesieg bez rezerwy
  563. mk:=mproj+(17*0.75*0.3)-mpal;
  564. zasieg:=3600*K*(etas/g*qe)*ln(m0/mk);
  565.  
  566.  
  567. end;
  568.  
  569. procedure TForm1.FormCreate(Sender: TObject);
  570. begin
  571. Edit1.Text:='8';
  572. Edit3.Text:='6';
  573. Edit5.Text:='0.8';
  574. Edit7.Text:='5';
  575. Edit9.Text:='12';
  576. Edit11.Text:='3';
  577. Edit13.Text:='2';
  578. Edit15.Text:='3';
  579. Edit17.Text:='0.8';
  580. Edit19.Text:='15';
  581. Edit21.Text:='2';
  582. Edit23.Text:='0.2';
  583. Edit25.Text:='20';
  584. Edit27.Text:='200';
  585. Edit28.Text:='650';
  586. Edit29.Text:='12';
  587. Edit31.Text:='6';
  588. Edit33.Text:='0.5';
  589.  
  590.  
  591. end;
  592.  
  593. procedure TForm1.Button1Click(Sender: TObject);
  594. begin
  595.  
  596.  
  597.  
  598.  
  599. //aerodynamika
  600. Edit34.Text:=FloatToStr(Czmax_skrz); //czmaks
  601. Edit35.Text:=FloatToStr(Cx0);
  602. Edit36.Text:=FloatToStr(Czmax_start);
  603. Edit37.Text:=FloatToStr(Cx0_start);
  604. Edit38.Text:=FloatToStr(Czmax_lad);
  605. Edit39.Text:=FloatToStr(Cx0_lad);
  606. {Edit34.Text:=FloatToStr(Cz);
  607. Edit34.Text:=FloatToStr(Cz);
  608. Edit34.Text:=FloatToStr(Cz);
  609. Edit34.Text:=FloatToStr(Cz);
  610. Edit34.Text:=FloatToStr(Cz);
  611. Edit34.Text:=FloatToStr(Cz);
  612. Edit34.Text:=FloatToStr(Cz);
  613. Edit34.Text:=FloatToStr(Cz);
  614. Edit34.Text:=FloatToStr(Cz);
  615. Edit34.Text:=FloatToStr(Cz);
  616. Edit34.Text:=FloatToStr(Cz);
  617. Edit34.Text:=FloatToStr(Cz);
  618. Edit34.Text:=FloatToStr(Cz);
  619. Edit34.Text:=FloatToStr(Cz); }
  620. end;
  621.  
  622. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement