/// <exception cref="ArgumentException">Invalid vertical mode.</exception> private double FuelFlow(double grossWt, VerticalMode mode) { switch (mode) { case VerticalMode.Climb: return(fuelData.ClimbFuelFlow(grossWt)); case VerticalMode.Cruise: return(fuelData.CruiseFuelFlow(grossWt)); case VerticalMode.Descent: return(fuelData.DescentFuelFlow(grossWt)); default: throw new ArgumentException(); } }
public static double EstimatedAvgWt(this FuelDataItem item, double distance, double landingWt) { double grossWt = landingWt; const int iteration = 2; for (int i = 0; i < iteration; i++) { var alt = item.OptCruiseAlt(grossWt); var ktas = Ktas(item.CruiseKias(grossWt), alt); var time = distance / ktas * 60.0; var ff = item.CruiseFuelFlow(grossWt); grossWt = landingWt + ff * time / 2.0; } return(grossWt); }