예제 #1
0
        /// <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);
        }
예제 #2
0
        /// <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
                       ));
        }
예제 #3
0
        /// <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
                       ));
        }
예제 #4
0
        /// <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);
        }