diff --git a/mission_analysis/src/standard_mission/fuel_handling/fuel_handling.cpp b/mission_analysis/src/standard_mission/fuel_handling/fuel_handling.cpp index a8771954f984d64bbeae756ca4b9f8bba78eb6fb..c74fdabf702c77b337c59d33e2af3ec995eacd06 100644 --- a/mission_analysis/src/standard_mission/fuel_handling/fuel_handling.cpp +++ b/mission_analysis/src/standard_mission/fuel_handling/fuel_handling.cpp @@ -205,15 +205,16 @@ void standard_mission::set_final_reserve_fuel(double *aircraft_mass) { } void standard_mission::set_alternate_fuel(double* aircraft_mass) { - int energy_carrier_id = // TODO(Gerrit): Check if it makes senese: Assuming cruise energy carrier used for alternate fuel reserves (derived from cruise conditions) + int energy_carrier_id = // TODO(Gerrit): Check if it makes sense: Assuming cruise energy carrier used for alternate fuel reserves (derived from cruise conditions) EndnodeReadOnly<int>("energy_carrier_ID").read(rtIO->acxml.at("requirements_and_specifications/design_specification/propulsion/energy_provider/cruise")).value(); - /* Alternate fuel: Calculation of the flight altitude from alternate */ - double alternate_FL = this->mission_file->alternate_distance * 0.8 / (1. / tan(convertUnit(DEGREE, RADIAN, 5.)) + 1. / tan(convertUnit(DEGREE, RADIAN, 3.))); - if (alternate_FL > convertUnit(FOOT, METER, 10000.)) { - alternate_FL = convertUnit(FOOT, METER, 10000.); + /* Alternate fuel: Calculation of the flight altitude from alternate. Climb gradient (2.5°) and decent (1.5°) estimated based on typical ROC and TAS */ + double alternate_FL = this->mission_file->alternate_distance * 0.8 / (1. / tan(convertUnit(DEGREE, RADIAN, 2.5)) + 1. / tan(convertUnit(DEGREE, RADIAN, 1.5))); + /* Maximum alternate at FL200 based on Schmitt and Gollnick, Air Transport System */ + if (alternate_FL > convertUnit(FOOT, METER, 20000.)) { + alternate_FL = convertUnit(FOOT, METER, 20000.); } double climb_mach(convertUnit(CALIBRATEDAIRSPEED, MACH, alternate_FL, this->atm, this->climb_speed_below_FL100)); - /* Alternate climbing: Estimation with the values at 10.000 ft */ + /* Alternate climbing */ this->engine.calculate_N1_with_penalties(energy_carrier_id, alternate_FL, climb_mach, this->atm, 1., "climb", 0., 0.); /* Calculate aerodynamics */ double L_over_D(this->aero.getCruiseLoverD(climb_mach, alternate_FL, 0., *aircraft_mass, "clean", this->atm));