#include <iostream>
using namespace std;
int main()
{
float Hp, Vcas, P, p, CL, f1, f2, f3, f4, a1, a2, a3, a4, a5, a6, a7, a8, Thr, ROCD, Cpowred, n, fnom, fmin, f,m,Vtas1,Vstall;
float M, Vtas, F, h, T, a, z2, z3, z4, z5, z6, T1, P1, p1, CD, D, Thrdeslow, Thrdesapp, Thrdesld, Thrmaxclimb, Thrdeshigh;
double const Mdes = 0.78, Vdes1 = 290, Vdes2 = 290, B = -0.0065, g = 9.80665;
double const Cvmin = 1.3, VDES1 = 5, VDES2 = 10, VDES3 = 20, VDES4 = 50, mref = 150000, S = 283.3;
double const R = 287.05287, P0 = 101325, p0 = 1.225, T0 = 288.15, u = 1 / 3.5, k = 1.4, r = 6325766;
double const Cd0cr = 0.014, Cd2cr = 0.049, Cd0ap = 0.035, Cd2ap = 0.045, Cd0ldg = 0.057, Cd2ldg = 0.04, Cd0dtldg = 0.018;
double const Ctc1 = 296000, Ctc2 = 50900, Ctc3 = 0.0000000000419, Ctdeslow = 0.013, Ctdesapp = 0.14, Ctdesld = 0.28, Ctdeshigh = -0.074;
double const mmin = 89900, mmax = 181400, Cf1 = 0.763, Cf2 = 1430, Cf3 = 18.8, Cf4 = 69400;
float wendu(float e, float e1);
float XZkongsu(float k);
float qiya(float b, float b1);
float Zkongsu(float cas);
int const dt = 0;
int i;
double m[8] = {150000,0};
double f[8] = { 0 };
double c[8] = { 1 }; //代表ROCD
for (i = 1; i <= 8; i++) //43000--29000
{
h = 43000 - 2000 * (i - 1);
m[i] = m[i - 1] + (2000 / (c[i - 1] )) * f[i - 1];
//cin >> h;
Vcas = XZkongsu(h) / 1.9438445;
P = qiya(h, dt);
T = wendu(h, dt);
p = P / (R * T);
Hp = (h * r) / (h + r);
T1 = wendu(Hp, dt);
P1 = qiya(Hp, dt);
p1 = P1 / (R * T1);
if (h > 36089)
{
M = Mdes,
F = 1;
Vtas = M * sqrt(k * R * T);
Vtas1 = Vtas * 1.94384449;
}
else if (h > 30877.37)
{
M = Mdes;
f2 = 1.4 * 287.05287 * (-0.0065) * 0.78 * 0.78 /( 9.80665*2);
f3 = 1 - dt / (288.15 - 0.0019812 * Hp + dt);
F = 1 / (1+f2 * f3);
Vtas = M * sqrt(k * R * T) ;
Vtas1 = Vtas * 1.94384449;
}
else
{
z3 = (101325 / P) * Zkongsu(Vcas);
z4 = pow(1 + z3, 1 / 3.5) - 1;
z5 = 7 * P * z4 / p;
Vtas = sqrt(z5) ;
Vtas1 = Vtas * 1.94384449;
z6 = sqrt(k * R * T);
M = Vtas / z6;
f2 = 1 + (1.4 * 287 * (-0.0065) * M * M / (2 * 9.80665)) * ((T - dt) / T);
f3 = pow(1 + 0.2 * M * M, (-1 / 0.4));
f4 = pow(1 + 0.2 * M * M, (1.4 / 0.4)) - 1;
F = 1 / (f2 + f3 * f4);
}
CL = (2 * m[i] * g) / (p1 * Vtas * Vtas * S);//進行重量迭代
Thrmaxclimb = Ctc1 * (1 - Hp / Ctc2 + Ctc3 * Hp * Hp);
if ((Vcas < 115.493) && (Hp > 3000 && Hp < 8000))
{
CD = Cd0ap + Cd2ap * CL * CL;
Thrdesapp = Ctdesapp * Thrmaxclimb;
Thr = Thrdesapp;
}
else if ((Vcas > 86.735 && Vcas < 115.493) && (Hp < 3000))
{
CD = Cd0ap + Cd2ap * CL * CL;
Thrdesapp = Ctdesapp * Thrmaxclimb;
Thr = Thrdesapp;
}
else if ((Vcas < 86.735) && (Hp < 3000))
{
CD = Cd0ldg + Cd2ldg * CL * CL + Cd0dtldg;
Thrdesld = Ctdesld * Thrmaxclimb;
Thr = Thrdesld;
}
else if (Hp > 10000)
{
CD = Cd0cr + Cd2cr * CL * CL;
Thrdeshigh = Ctdeshigh * Thrmaxclimb;
Thr = Thrdeshigh;
}
else
{
CD = Cd0cr + Cd2cr * CL * CL;
Thrdeslow = Ctdeslow * Thrmaxclimb;
Thr = Thrdeslow;
}
D = CD * p1 * Vtas* Vtas * S / 2;
//Cpowred = 1 - 0.15 * (181400 - m[i]) / (mmax - mmin); 下降不需要減推力系數
c[i] = ((T - dt) / T) * ((Thr - D) * Vtas / (m[i] * g)) * F*196.848; // 單位m/s
n = Cf1 * (1 + Vtas / Cf2);
if ((Vcas < 115.493) && (Hp > 3000 && Hp < 8000))
{
fmin = Cf3 * (1 - Hp / Cf4);
fnom = n * Thr;
if (fnom > fmin) f[i] = fnom;
else f[i] = fmin;
}
else if ((Vcas > 86.735 && Vcas < 115.493) && (Hp < 3000))
{
fmin = Cf3 * (1 - Hp / Cf4);
fnom = n * Thr;
if (fnom > fmin) { f[i] = fnom; }
else f[i] = fmin;
}
else if ((Vcas < 86.735) && (Hp < 3000))
{
fmin = Cf3 * (1 - Hp / Cf4);
fnom = n * Thr;
if (fnom > fmin) f[i] = fnom;
else f[i] = fmin;
}
else
{
fmin = Cf3 * (1 - Hp / Cf4);
f[i] = fmin;
}
cout << "h=" << h << endl; //輸出結果
cout << "Vtas=" << Vtas1 << endl; //輸出結果
cout << "c[" << i << "]=" << c[i] << endl; //輸出結果
cout << "f[" << i << "]=" << f[i] << endl; //輸出結果
}
return 0;
}
float XZkongsu(float k)
{
float a;
double const Mdes = 0.78, Vstall = 113, Vdes1 = 290, Vdes2 = 290;
double const Cvmin = 1.3, VDES1 = 5, VDES2 = 10, VDES3 = 20, VDES4 = 50, mref = 150000;
if (k > 30877.37) { a = Mdes; }
else if (k > 10000 && k < 30877.37) { a = Vdes2; }
else if (k > 6000 && k <= 10000) { a = 250; }
else if (k >= 3000 && k <= 6000) { a = 220; }
else if (k >= 2000 && k < 2999) { a = Cvmin * Vstall + VDES4; }
else if (k >= 1500 && k < 1999) { a = Cvmin * Vstall + VDES3; }
else if (k >=1000 && k < 1499) { a = Cvmin * Vstall + VDES2; }
else { a = Cvmin * Vstall + VDES1; }
return (a);
}
float qiya(float b, float b1)
{
float f, c, d, d1;
if (b <= 36089)
{
f = (288.15 + b1 - 0.0065 * b / 3.2808 - b1) / 288.15;
c = pow(f, 5.2558798) * 101325;
}
else
{
d1 = pow(216.65 / 288.15, 5.2558798);
d = d1 * 101325;
c = d * exp((-9.80665 / (216.65 * 287.05287)) * ((b - 36089) / 3.2808));
}
return (c);
}
float wendu(float e, float e1)
{
float g;
if (e <= 36089) g = 288.15 - 0.0019812 * e + e1;
else g = 216.65 + e1;
return (g);
}
float Zkongsu(float cas)
{
float z1, z2;
z1 = 1 + (1.225 * cas * cas) / (7 * 101325);
z2 = pow(z1, 3.5) - 1;
return (z2);
}
將最后的結果輸出為這種形式
uj5u.com熱心網友回復:
FILE *fp = fopen("test.txt",'w');fprintf(fp,"你要輸出的資料格式",你要輸出的資料內容); //和prinf類似
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/72855.html
標籤:C++ 語言
下一篇:求助 資料結構 單鏈表
