Move fuel calculations to FMGC
This commit is contained in:
parent
e41c786247
commit
1379e5a261
3 changed files with 68 additions and 67 deletions
|
@ -1,7 +1,7 @@
|
||||||
# A3XX FMGC/Autoflight
|
# A3XX FMGC/Autoflight
|
||||||
# Joshua Davidson (Octal450) and Jonathan Redpath (legoboyvdlp)
|
# Joshua Davidson (Octal450) and Jonathan Redpath (legoboyvdlp)
|
||||||
|
|
||||||
# Copyright (c) 2020 Josh Davidson (Octal450)
|
# Copyright (c) 2020 Josh Davidson (Octal450) and Matthew Maring (mattmaring)
|
||||||
|
|
||||||
##################
|
##################
|
||||||
# Init Functions #
|
# Init Functions #
|
||||||
|
@ -174,6 +174,62 @@ setlistener("/FMGC/internal/cruise-ft", func {
|
||||||
setprop("autopilot/route-manager/cruise/altitude-ft", getprop("FMGC/internal/cruise-ft"));
|
setprop("autopilot/route-manager/cruise/altitude-ft", getprop("FMGC/internal/cruise-ft"));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
########
|
||||||
|
# FUEL #
|
||||||
|
########
|
||||||
|
|
||||||
|
var updateFuel = func {
|
||||||
|
var zfwcg = props.globals.getNode("/FMGC/internal/zfwcg", 1);
|
||||||
|
var zfwcgSet = props.globals.getNode("/FMGC/internal/zfwcg-set", 1);
|
||||||
|
var zfw = props.globals.getNode("/FMGC/internal/zfw", 1);
|
||||||
|
var zfwSet = props.globals.getNode("/FMGC/internal/zfw-set", 1);
|
||||||
|
var block = props.globals.getNode("/FMGC/internal/block", 1);
|
||||||
|
var blockSet = props.globals.getNode("/FMGC/internal/block-set", 1);
|
||||||
|
var taxi_fuel = props.globals.getNode("/FMGC/internal/taxi-fuel", 1);
|
||||||
|
var trip_fuel = props.globals.getNode("/FMGC/internal/trip-fuel", 1);
|
||||||
|
var trip_time = props.globals.getNode("/FMGC/internal/trip-time", 1);
|
||||||
|
var rte_rsv = props.globals.getNode("/FMGC/internal/rte-rsv", 1);
|
||||||
|
var rte_percent = props.globals.getNode("/FMGC/internal/rte-percent", 1);
|
||||||
|
var alt_fuel = props.globals.getNode("/FMGC/internal/alt-fuel", 1);
|
||||||
|
var alt_time = props.globals.getNode("/FMGC/internal/alt-time", 1);
|
||||||
|
var final_fuel = props.globals.getNode("/FMGC/internal/final-fuel", 1);
|
||||||
|
var final_time = props.globals.getNode("/FMGC/internal/final-time", 1);
|
||||||
|
var min_dest_fob = props.globals.getNode("/FMGC/internal/min-dest-fob", 1);
|
||||||
|
var tow = props.globals.getNode("/FMGC/internal/tow", 1);
|
||||||
|
var lw = props.globals.getNode("/FMGC/internal/lw", 1);
|
||||||
|
var trip_wind = props.globals.getNode("/FMGC/internal/trip-wind", 1);
|
||||||
|
var fob = props.globals.getNode("/FMGC/internal/fob", 1);
|
||||||
|
var fffq_sensor = props.globals.getNode("/FMGC/internal/fffq-sensor", 1);
|
||||||
|
var extra_fuel = props.globals.getNode("/FMGC/internal/extra-fuel", 1);
|
||||||
|
var extra_time = props.globals.getNode("/FMGC/internal/extra-time", 1);
|
||||||
|
|
||||||
|
if (getprop("/FMGC/internal/tofrom-set") and getprop("/FMGC/internal/block-set") and getprop("/FMGC/internal/zfw-set")) {
|
||||||
|
setprop("/FMGC/internal/min-dest-fob", num(alt_fuel.getValue() + final_fuel.getValue()));
|
||||||
|
setprop("/FMGC/internal/rte-rsv", num((block.getValue() - taxi_fuel.getValue() - min_dest_fob.getValue()) * (rte_percent.getValue() / 100) / (1 + rte_percent.getValue() / 100)));
|
||||||
|
setprop("/FMGC/internal/trip-fuel", num(block.getValue() - taxi_fuel.getValue() - min_dest_fob.getValue() - rte_rsv.getValue()));
|
||||||
|
setprop("/FMGC/internal/tow", num(block.getValue() + zfw.getValue() - taxi_fuel.getValue()));
|
||||||
|
setprop("/FMGC/internal/lw", num(tow.getValue() - trip_fuel.getValue()));
|
||||||
|
|
||||||
|
# Calculate (final) holding fuel
|
||||||
|
|
||||||
|
# Calculate alternate fuel
|
||||||
|
|
||||||
|
# Calculate min dest fob (final + alternate)
|
||||||
|
|
||||||
|
# Calculate trip fuel
|
||||||
|
|
||||||
|
# Calculate taxi fuel
|
||||||
|
|
||||||
|
# Calculate reserve fuel
|
||||||
|
|
||||||
|
# Calcualte extra fuel
|
||||||
|
# block minus everthing above
|
||||||
|
|
||||||
|
} else {
|
||||||
|
#handle idk what case here, prob just don't call it in the first place
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
############################
|
############################
|
||||||
# Flight Phase and Various #
|
# Flight Phase and Various #
|
||||||
############################
|
############################
|
||||||
|
|
|
@ -35,12 +35,7 @@ var fuelPredInput = func(key, i) {
|
||||||
setprop("FMGC/internal/rte-percent", 5.0);
|
setprop("FMGC/internal/rte-percent", 5.0);
|
||||||
setprop("MCDU[" ~ i ~ "]/scratchpad-msg", 0);
|
setprop("MCDU[" ~ i ~ "]/scratchpad-msg", 0);
|
||||||
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
|
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
|
||||||
|
fmgc.updateFuel();
|
||||||
setprop("FMGC/internal/min-dest-fob", num(alt_fuel.getValue() + final_fuel.getValue()));
|
|
||||||
setprop("FMGC/internal/rte-rsv", num((block.getValue() - taxi_fuel.getValue() - min_dest_fob.getValue()) * (rte_percent.getValue() / 100) / (1 + rte_percent.getValue() / 100)));
|
|
||||||
setprop("FMGC/internal/trip-fuel", num(block.getValue() - taxi_fuel.getValue() - min_dest_fob.getValue() - rte_rsv.getValue()));
|
|
||||||
setprop("FMGC/internal/tow", num(block.getValue() + zfw.getValue() - taxi_fuel.getValue()));
|
|
||||||
setprop("FMGC/internal/lw", num(tow.getValue() - trip_fuel.getValue()));
|
|
||||||
} else if (getprop("FMGC/internal/trip-fuel") != 0) {
|
} else if (getprop("FMGC/internal/trip-fuel") != 0) {
|
||||||
var tf = num(scratchpad);
|
var tf = num(scratchpad);
|
||||||
var tfs = size(scratchpad);
|
var tfs = size(scratchpad);
|
||||||
|
@ -67,24 +62,14 @@ var fuelPredInput = func(key, i) {
|
||||||
setprop("FMGC/internal/alt-time", "0000");
|
setprop("FMGC/internal/alt-time", "0000");
|
||||||
setprop("MCDU[" ~ i ~ "]/scratchpad-msg", 0);
|
setprop("MCDU[" ~ i ~ "]/scratchpad-msg", 0);
|
||||||
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
|
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
|
||||||
|
fmgc.updateFuel();
|
||||||
setprop("FMGC/internal/min-dest-fob", num(alt_fuel.getValue() + final_fuel.getValue()));
|
|
||||||
setprop("FMGC/internal/rte-rsv", num((block.getValue() - taxi_fuel.getValue() - min_dest_fob.getValue()) * (rte_percent.getValue() / 100) / (1 + rte_percent.getValue() / 100)));
|
|
||||||
setprop("FMGC/internal/trip-fuel", num(block.getValue() - taxi_fuel.getValue() - min_dest_fob.getValue() - rte_rsv.getValue()));
|
|
||||||
setprop("FMGC/internal/tow", num(block.getValue() + zfw.getValue() - taxi_fuel.getValue()));
|
|
||||||
setprop("FMGC/internal/lw", num(tow.getValue() - trip_fuel.getValue()));
|
|
||||||
} else if (find(".", scratchpad) != -1) {
|
} else if (find(".", scratchpad) != -1) {
|
||||||
var tf = num(scratchpad);
|
var tf = num(scratchpad);
|
||||||
var tfs = size(scratchpad);
|
var tfs = size(scratchpad);
|
||||||
if (tfs >= 3 and tfs <= 4 and tf != nil and tf >= 0 and tf <= 10.0 and tf < trip_fuel.getValue() + alt_fuel.getValue()) {
|
if (tfs >= 3 and tfs <= 4 and tf != nil and tf >= 0 and tf <= 10.0 and tf < trip_fuel.getValue() + alt_fuel.getValue()) {
|
||||||
setprop("FMGC/internal/alt-fuel", tf);
|
setprop("FMGC/internal/alt-fuel", tf);
|
||||||
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
|
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
|
||||||
|
fmgc.updateFuel();
|
||||||
setprop("FMGC/internal/min-dest-fob", num(alt_fuel.getValue() + final_fuel.getValue()));
|
|
||||||
setprop("FMGC/internal/rte-rsv", num((block.getValue() - taxi_fuel.getValue() - min_dest_fob.getValue()) * (rte_percent.getValue() / 100) / (1 + rte_percent.getValue() / 100)));
|
|
||||||
setprop("FMGC/internal/trip-fuel", num(block.getValue() - taxi_fuel.getValue() - min_dest_fob.getValue() - rte_rsv.getValue()));
|
|
||||||
setprop("FMGC/internal/tow", num(block.getValue() + zfw.getValue() - taxi_fuel.getValue()));
|
|
||||||
setprop("FMGC/internal/lw", num(tow.getValue() - trip_fuel.getValue()));
|
|
||||||
} else {
|
} else {
|
||||||
notAllowed(i);
|
notAllowed(i);
|
||||||
}
|
}
|
||||||
|
@ -104,24 +89,14 @@ var fuelPredInput = func(key, i) {
|
||||||
setprop("FMGC/internal/final-time", "0030");
|
setprop("FMGC/internal/final-time", "0030");
|
||||||
setprop("MCDU[" ~ i ~ "]/scratchpad-msg", 0);
|
setprop("MCDU[" ~ i ~ "]/scratchpad-msg", 0);
|
||||||
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
|
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
|
||||||
|
fmgc.updateFuel();
|
||||||
setprop("FMGC/internal/min-dest-fob", num(alt_fuel.getValue() + final_fuel.getValue()));
|
|
||||||
setprop("FMGC/internal/rte-rsv", num((block.getValue() - taxi_fuel.getValue() - min_dest_fob.getValue()) * (rte_percent.getValue() / 100) / (1 + rte_percent.getValue() / 100)));
|
|
||||||
setprop("FMGC/internal/trip-fuel", num(block.getValue() - taxi_fuel.getValue() - min_dest_fob.getValue() - rte_rsv.getValue()));
|
|
||||||
setprop("FMGC/internal/tow", num(block.getValue() + zfw.getValue() - taxi_fuel.getValue()));
|
|
||||||
setprop("FMGC/internal/lw", num(tow.getValue() - trip_fuel.getValue()));
|
|
||||||
} else if (find(".", scratchpad) != -1) {
|
} else if (find(".", scratchpad) != -1) {
|
||||||
var tf = num(scratchpad);
|
var tf = num(scratchpad);
|
||||||
var tfs = size(scratchpad);
|
var tfs = size(scratchpad);
|
||||||
if (tfs >= 3 and tfs <= 4 and tf != nil and tf >= 0 and tf <= 10.0 and tf < trip_fuel.getValue() + final_fuel.getValue()) {
|
if (tfs >= 3 and tfs <= 4 and tf != nil and tf >= 0 and tf <= 10.0 and tf < trip_fuel.getValue() + final_fuel.getValue()) {
|
||||||
setprop("FMGC/internal/final-fuel", tf);
|
setprop("FMGC/internal/final-fuel", tf);
|
||||||
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
|
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
|
||||||
|
fmgc.updateFuel();
|
||||||
setprop("FMGC/internal/min-dest-fob", num(alt_fuel.getValue() + final_fuel.getValue()));
|
|
||||||
setprop("FMGC/internal/rte-rsv", num((block.getValue() - taxi_fuel.getValue() - min_dest_fob.getValue()) * (rte_percent.getValue() / 100) / (1 + rte_percent.getValue() / 100)));
|
|
||||||
setprop("FMGC/internal/trip-fuel", num(block.getValue() - taxi_fuel.getValue() - min_dest_fob.getValue() - rte_rsv.getValue()));
|
|
||||||
setprop("FMGC/internal/tow", num(block.getValue() + zfw.getValue() - taxi_fuel.getValue()));
|
|
||||||
setprop("FMGC/internal/lw", num(tow.getValue() - trip_fuel.getValue()));
|
|
||||||
} else {
|
} else {
|
||||||
notAllowed(i);
|
notAllowed(i);
|
||||||
}
|
}
|
||||||
|
|
|
@ -37,12 +37,7 @@ var initInputB = func(key, i) {
|
||||||
if (num(scratchpad) != nil and scratchpad >= 0.0 and scratchpad <= 9.9) {
|
if (num(scratchpad) != nil and scratchpad >= 0.0 and scratchpad <= 9.9) {
|
||||||
setprop("FMGC/internal/taxi-fuel", scratchpad);
|
setprop("FMGC/internal/taxi-fuel", scratchpad);
|
||||||
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
|
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
|
||||||
|
fmgc.updateFuel();
|
||||||
setprop("FMGC/internal/rte-rsv", num((block.getValue() - taxi_fuel.getValue() - min_dest_fob.getValue()) * (rte_percent.getValue() / 100) / (1 + rte_percent.getValue() / 100)));
|
|
||||||
setprop("FMGC/internal/trip-fuel", num(block.getValue() - taxi_fuel.getValue() - min_dest_fob.getValue() - rte_rsv.getValue()));
|
|
||||||
setprop("FMGC/internal/tow", num(block.getValue() + zfw.getValue() - taxi_fuel.getValue()));
|
|
||||||
setprop("FMGC/internal/lw", num(tow.getValue() - trip_fuel.getValue()));
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
notAllowed(i);
|
notAllowed(i);
|
||||||
}
|
}
|
||||||
|
@ -81,12 +76,7 @@ var initInputB = func(key, i) {
|
||||||
setprop("FMGC/internal/rte-percent", 5.0);
|
setprop("FMGC/internal/rte-percent", 5.0);
|
||||||
setprop("MCDU[" ~ i ~ "]/scratchpad-msg", 0);
|
setprop("MCDU[" ~ i ~ "]/scratchpad-msg", 0);
|
||||||
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
|
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
|
||||||
|
fmgc.updateFuel();
|
||||||
setprop("FMGC/internal/min-dest-fob", num(alt_fuel.getValue() + final_fuel.getValue()));
|
|
||||||
setprop("FMGC/internal/rte-rsv", num((block.getValue() - taxi_fuel.getValue() - min_dest_fob.getValue()) * (rte_percent.getValue() / 100) / (1 + rte_percent.getValue() / 100)));
|
|
||||||
setprop("FMGC/internal/trip-fuel", num(block.getValue() - taxi_fuel.getValue() - min_dest_fob.getValue() - rte_rsv.getValue()));
|
|
||||||
setprop("FMGC/internal/tow", num(block.getValue() + zfw.getValue() - taxi_fuel.getValue()));
|
|
||||||
setprop("FMGC/internal/lw", num(tow.getValue() - trip_fuel.getValue()));
|
|
||||||
} else if (getprop("FMGC/internal/trip-fuel") != 0) {
|
} else if (getprop("FMGC/internal/trip-fuel") != 0) {
|
||||||
var tf = num(scratchpad);
|
var tf = num(scratchpad);
|
||||||
var tfs = size(scratchpad);
|
var tfs = size(scratchpad);
|
||||||
|
@ -113,24 +103,14 @@ var initInputB = func(key, i) {
|
||||||
setprop("FMGC/internal/alt-time", "0000");
|
setprop("FMGC/internal/alt-time", "0000");
|
||||||
setprop("MCDU[" ~ i ~ "]/scratchpad-msg", 0);
|
setprop("MCDU[" ~ i ~ "]/scratchpad-msg", 0);
|
||||||
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
|
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
|
||||||
|
fmgc.updateFuel();
|
||||||
setprop("FMGC/internal/min-dest-fob", num(alt_fuel.getValue() + final_fuel.getValue()));
|
|
||||||
setprop("FMGC/internal/rte-rsv", num((block.getValue() - taxi_fuel.getValue() - min_dest_fob.getValue()) * (rte_percent.getValue() / 100) / (1 + rte_percent.getValue() / 100)));
|
|
||||||
setprop("FMGC/internal/trip-fuel", num(block.getValue() - taxi_fuel.getValue() - min_dest_fob.getValue() - rte_rsv.getValue()));
|
|
||||||
setprop("FMGC/internal/tow", num(block.getValue() + zfw.getValue() - taxi_fuel.getValue()));
|
|
||||||
setprop("FMGC/internal/lw", num(tow.getValue() - trip_fuel.getValue()));
|
|
||||||
} else if (find(".", scratchpad) != -1) {
|
} else if (find(".", scratchpad) != -1) {
|
||||||
var tf = num(scratchpad);
|
var tf = num(scratchpad);
|
||||||
var tfs = size(scratchpad);
|
var tfs = size(scratchpad);
|
||||||
if (tfs >= 3 and tfs <= 4 and tf != nil and tf >= 0 and tf <= 10.0 and tf < trip_fuel.getValue() + alt_fuel.getValue()) {
|
if (tfs >= 3 and tfs <= 4 and tf != nil and tf >= 0 and tf <= 10.0 and tf < trip_fuel.getValue() + alt_fuel.getValue()) {
|
||||||
setprop("FMGC/internal/alt-fuel", tf);
|
setprop("FMGC/internal/alt-fuel", tf);
|
||||||
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
|
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
|
||||||
|
fmgc.updateFuel();
|
||||||
setprop("FMGC/internal/min-dest-fob", num(alt_fuel.getValue() + final_fuel.getValue()));
|
|
||||||
setprop("FMGC/internal/rte-rsv", num((block.getValue() - taxi_fuel.getValue() - min_dest_fob.getValue()) * (rte_percent.getValue() / 100) / (1 + rte_percent.getValue() / 100)));
|
|
||||||
setprop("FMGC/internal/trip-fuel", num(block.getValue() - taxi_fuel.getValue() - min_dest_fob.getValue() - rte_rsv.getValue()));
|
|
||||||
setprop("FMGC/internal/tow", num(block.getValue() + zfw.getValue() - taxi_fuel.getValue()));
|
|
||||||
setprop("FMGC/internal/lw", num(tow.getValue() - trip_fuel.getValue()));
|
|
||||||
} else {
|
} else {
|
||||||
notAllowed(i);
|
notAllowed(i);
|
||||||
}
|
}
|
||||||
|
@ -150,24 +130,14 @@ var initInputB = func(key, i) {
|
||||||
setprop("FMGC/internal/final-time", "0030");
|
setprop("FMGC/internal/final-time", "0030");
|
||||||
setprop("MCDU[" ~ i ~ "]/scratchpad-msg", 0);
|
setprop("MCDU[" ~ i ~ "]/scratchpad-msg", 0);
|
||||||
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
|
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
|
||||||
|
fmgc.updateFuel();
|
||||||
setprop("FMGC/internal/min-dest-fob", num(alt_fuel.getValue() + final_fuel.getValue()));
|
|
||||||
setprop("FMGC/internal/rte-rsv", num((block.getValue() - taxi_fuel.getValue() - min_dest_fob.getValue()) * (rte_percent.getValue() / 100) / (1 + rte_percent.getValue() / 100)));
|
|
||||||
setprop("FMGC/internal/trip-fuel", num(block.getValue() - taxi_fuel.getValue() - min_dest_fob.getValue() - rte_rsv.getValue()));
|
|
||||||
setprop("FMGC/internal/tow", num(block.getValue() + zfw.getValue() - taxi_fuel.getValue()));
|
|
||||||
setprop("FMGC/internal/lw", num(tow.getValue() - trip_fuel.getValue()));
|
|
||||||
} else if (find(".", scratchpad) != -1) {
|
} else if (find(".", scratchpad) != -1) {
|
||||||
var tf = num(scratchpad);
|
var tf = num(scratchpad);
|
||||||
var tfs = size(scratchpad);
|
var tfs = size(scratchpad);
|
||||||
if (tfs >= 3 and tfs <= 4 and tf != nil and tf >= 0 and tf <= 10.0 and tf < trip_fuel.getValue() + final_fuel.getValue()) {
|
if (tfs >= 3 and tfs <= 4 and tf != nil and tf >= 0 and tf <= 10.0 and tf < trip_fuel.getValue() + final_fuel.getValue()) {
|
||||||
setprop("FMGC/internal/final-fuel", tf);
|
setprop("FMGC/internal/final-fuel", tf);
|
||||||
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
|
setprop("MCDU[" ~ i ~ "]/scratchpad", "");
|
||||||
|
fmgc.updateFuel();
|
||||||
setprop("FMGC/internal/min-dest-fob", num(alt_fuel.getValue() + final_fuel.getValue()));
|
|
||||||
setprop("FMGC/internal/rte-rsv", num((block.getValue() - taxi_fuel.getValue() - min_dest_fob.getValue()) * (rte_percent.getValue() / 100) / (1 + rte_percent.getValue() / 100)));
|
|
||||||
setprop("FMGC/internal/trip-fuel", num(block.getValue() - taxi_fuel.getValue() - min_dest_fob.getValue() - rte_rsv.getValue()));
|
|
||||||
setprop("FMGC/internal/tow", num(block.getValue() + zfw.getValue() - taxi_fuel.getValue()));
|
|
||||||
setprop("FMGC/internal/lw", num(tow.getValue() - trip_fuel.getValue()));
|
|
||||||
} else {
|
} else {
|
||||||
notAllowed(i);
|
notAllowed(i);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue