/// <summary> /// Calculate the drag for the given speed and altitude /// </summary> /// <param name="airspeed">The current airspeed</param> /// <param name="altitude">The current altitude</param> /// <returns></returns> public double Drag(double airspeed, double altitude) { double ktsToMps = 0.514444444; airspeed = (airspeed * ktsToMps); var isa = new ISA(altitude); double dragPolar = DragPolar(isa.Rho, airspeed); return(dragPolar * 0.5 * isa.Rho * airspeed * airspeed * ReferenceArea); }
/// <summary> /// Calculate the climb thrust /// </summary> /// <param name="TAS">The current True AirSpeed</param> /// <param name="altitude">The current altitude</param> /// <returns></returns> public double ClimbThrust(double TAS, double altitude) { double ktsToMps = 0.514444444; double lbfToN = 4.4482216; var isa = new ISA(altitude); double machNumber = (TAS * ktsToMps) / isa.VSound; return(lbfToN * NumberOfEngines * isa.Delta * ( (52150 + 0.72668 * altitude - 0.000015837 * altitude * altitude) + (-53118 + 1.2828 * altitude - 0.0000084802 * altitude * altitude) * machNumber + (26330 - 0.89757 * altitude - 0.00001585 * altitude * altitude) * machNumber * machNumber )); }
/// <summary> /// Calculate the takeoff thrust /// </summary> /// <param name="TAS">The current True AirSpeed</param> /// <param name="altitude">The current altitude</param> /// <returns></returns> public double TakeOffThrust(double TAS, double altitude) { double ktsToMps = 0.514444444; double lbfToN = 4.4482216; var isa = new ISA(altitude); double machNumber = (TAS * ktsToMps) / isa.VSound; //Console.WriteLine(isa.P); //Console.WriteLine(machNumber); return(lbfToN * NumberOfEngines * isa.Delta * ( (56283 + 1.3231 * altitude - 0.000048825 * altitude * altitude) + (-55343 - 0.41746 * altitude + 0.000013332 * altitude * altitude) * machNumber + (37825 + 1.1609 * altitude - 0.000031028 * altitude * altitude) * machNumber * machNumber )); }
/// <summary> /// Calculate the amound of fuel is consumed in kilograms per second /// </summary> /// <param name="totalThrust">The total amound of thrust delivered by all engines</param> /// <param name="TAS">The current True AirSpeed</param> /// <param name="altitude">The current altitude</param> /// <returns></returns> public double FuelFLow(double totalThrust, double TAS, double altitude) { double ktsToMps = 0.514444444; double lbsToKg = 0.45359237; var isa = new ISA(altitude); double machNumber = (TAS * ktsToMps) / isa.VSound; double thrust = totalThrust / NumberOfEngines; double thrustNormalized = thrust / isa.Delta; double temperatureRatio = isa.Theta; return(NumberOfEngines * isa.Delta * Math.Pow(temperatureRatio, 0.62) * ( (826.15 + 2140.5 * machNumber - 382.94 * machNumber * machNumber) + (0.2332 + 0.14859 * machNumber - 0.095481 * machNumber * machNumber) * thrustNormalized + (0.000001461 + 0.00000901 * machNumber - 0.000010795 * machNumber * machNumber) * thrustNormalized * thrustNormalized ) / 3600.0 * lbsToKg); }