Implement new fuel system
This commit is contained in:
parent
174759c8cb
commit
099a1b84ca
16 changed files with 1367 additions and 166 deletions
|
@ -198,6 +198,7 @@ xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
|
|||
</propulsion>
|
||||
|
||||
<system file="glass-effect"/>
|
||||
<system file="fuel-driver"/>
|
||||
<system file="a320-fbw"/>
|
||||
<system file="a320-fcs"/>
|
||||
<system file="a320-fuel"/>
|
||||
|
|
|
@ -197,6 +197,7 @@ xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
|
|||
</propulsion>
|
||||
|
||||
<system file="glass-effect"/>
|
||||
<system file="fuel-driver"/>
|
||||
<system file="a320-fbw"/>
|
||||
<system file="a320-fcs"/>
|
||||
<system file="a320-fuel"/>
|
||||
|
|
|
@ -197,6 +197,7 @@ xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
|
|||
</propulsion>
|
||||
|
||||
<system file="glass-effect"/>
|
||||
<system file="fuel-driver"/>
|
||||
<system file="a320-fbw"/>
|
||||
<system file="a320-fcs"/>
|
||||
<system file="a320-fuel"/>
|
||||
|
|
|
@ -197,6 +197,7 @@ xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
|
|||
</propulsion>
|
||||
|
||||
<system file="glass-effect"/>
|
||||
<system file="fuel-driver"/>
|
||||
<system file="a320-fbw"/>
|
||||
<system file="a320-fcs"/>
|
||||
<system file="a320-fuel"/>
|
||||
|
|
|
@ -197,6 +197,7 @@ xsi:noNamespaceSchemaLocation="http://jsbsim.sourceforge.net/JSBSim.xsd">
|
|||
</propulsion>
|
||||
|
||||
<system file="glass-effect"/>
|
||||
<system file="fuel-driver"/>
|
||||
<system file="a320-fbw"/>
|
||||
<system file="a320-fcs"/>
|
||||
<system file="a320-fuel"/>
|
||||
|
|
|
@ -269,6 +269,9 @@ var postInit = func() {
|
|||
|
||||
var FMGCNodes = {
|
||||
costIndex: props.globals.initNode("/FMGC/internal/cost-index", 0, "DOUBLE"),
|
||||
crzFt: props.globals.initNode("/FMGC/internal/crz-ft", 0, "DOUBLE"),
|
||||
zfw: props.globals.initNode("/FMGC/internal/zfw", 0, "DOUBLE"),
|
||||
tow: props.globals.initNode("/FMGC/internal/tow", 0, "DOUBLE"),
|
||||
flexSet: props.globals.initNode("/FMGC/internal/flex-set", 0, "BOOL"),
|
||||
flexTemp: props.globals.initNode("/FMGC/internal/flex", 0, "INT"),
|
||||
mngSpdAlt: props.globals.getNode("/FMGC/internal/mng-alt-spd"),
|
||||
|
@ -1097,11 +1100,14 @@ var timer3blockFuel = maketimer(1, func() {
|
|||
var timer5fuelPred = maketimer(1, func() {
|
||||
if (pts.Sim.Time.elapsedSec.getValue() > getprop("/FMGC/internal/fuel-pred-time") + 5) {
|
||||
#updateFuel();
|
||||
flightPlanController.calculateVerticalPoints(0);
|
||||
flightPlanController.calculateVerticalPoints(1);
|
||||
flightPlanController.calculateVerticalPoints(2);
|
||||
fmgc.FMGCInternal.fuelCalculating = 0;
|
||||
fmgc.fuelCalculating.setValue(0);
|
||||
flightPlanController.calculateTOCPoint(0);
|
||||
flightPlanController.calculateTOCPoint(1);
|
||||
flightPlanController.calculateTOCPoint(2);
|
||||
flightPlanController.calculateTODPoint(0);
|
||||
flightPlanController.calculateTODPoint(1);
|
||||
flightPlanController.calculateTODPoint(2);
|
||||
setprop("/FMGC/internal/fuel-pred-time", -99);
|
||||
timer5fuelPred.stop();
|
||||
}
|
||||
|
|
|
@ -189,16 +189,16 @@ var SimbriefParser = {
|
|||
_foundTOC = 1;
|
||||
#setprop("/autopilot/route-manager/vnav/tc/latitude-deg",ofpFix.getNode("pos_lat").getValue());
|
||||
#setprop("/autopilot/route-manager/vnav/tc/longitude-deg",ofpFix.getNode("pos_long").getValue());
|
||||
#ident = "(T/C)";
|
||||
continue; # restore skip TOC/TOD
|
||||
ident = "(T/C)";
|
||||
continue;
|
||||
}
|
||||
|
||||
if (ident == "TOD") {
|
||||
_foundTOD = 1;
|
||||
#setprop("/autopilot/route-manager/vnav/td/latitude-deg",ofpFix.getNode("pos_lat").getValue());
|
||||
#setprop("/autopilot/route-manager/vnav/td/longitude-deg",ofpFix.getNode("pos_long").getValue());
|
||||
#ident = "(T/D)";
|
||||
continue; # restore skip TOC/TOD
|
||||
ident = "(T/D)";
|
||||
continue;
|
||||
}
|
||||
|
||||
coords = geo.Coord.new();
|
||||
|
@ -277,6 +277,7 @@ var SimbriefParser = {
|
|||
|
||||
# Set cruise altitude
|
||||
fmgc.FMGCInternal.crzFt = me.OFP.getNode("general/initial_altitude").getValue();
|
||||
fmgc.FMGCNodes.crzFt.setValue(fmgc.FMGCInternal.crzFt);
|
||||
fmgc.FMGCInternal.crzFl = fmgc.FMGCInternal.crzFt / 100;
|
||||
fmgc.FMGCInternal.crzTemp = (((fmgc.FMGCInternal.crzFt / 1000) * -2) + 15) + me.OFP.getNode("general/avg_temp_dev").getValue();
|
||||
fmgc.FMGCInternal.crzProg = fmgc.FMGCInternal.crzFt / 100;
|
||||
|
@ -314,8 +315,10 @@ var SimbriefParser = {
|
|||
fmgc.FMGCInternal.block = me.store1.getChild("plan_ramp").getValue() / 1000;
|
||||
fmgc.FMGCInternal.blockSet = 1;
|
||||
fmgc.FMGCInternal.zfw = me.store2.getChild("est_zfw").getValue() / 1000;
|
||||
fmgc.FMGCNodes.zfw.setValue(fmgc.FMGCInternal.zfw);
|
||||
fmgc.FMGCInternal.zfwSet = 1;
|
||||
fmgc.FMGCInternal.tow = fmgc.FMGCInternal.zfw + fmgc.FMGCInternal.block - fmgc.FMGCInternal.taxiFuel;
|
||||
fmgc.FMGCNodes.tow.setValue(fmgc.FMGCInternal.tow);
|
||||
} else {
|
||||
fmgc.FMGCInternal.taxiFuel = (me.store1.getChild("taxi").getValue() / LBS2KGS) / 1000;
|
||||
fmgc.FMGCInternal.taxiFuelSet = 1;
|
||||
|
@ -334,8 +337,10 @@ var SimbriefParser = {
|
|||
fmgc.FMGCInternal.block = (me.store1.getChild("plan_ramp").getValue() / LBS2KGS) / 1000;
|
||||
fmgc.FMGCInternal.blockSet = 1;
|
||||
fmgc.FMGCInternal.zfw = (me.store2.getChild("est_zfw").getValue() / LBS2KGS) / 1000;
|
||||
fmgc.FMGCNodes.zfw.setValue(fmgc.FMGCInternal.zfw);
|
||||
fmgc.FMGCInternal.zfwSet = 1;
|
||||
fmgc.FMGCInternal.tow = fmgc.FMGCInternal.zfw + fmgc.FMGCInternal.block - fmgc.FMGCInternal.taxiFuel;
|
||||
fmgc.FMGCNodes.tow.setValue(fmgc.FMGCInternal.tow);
|
||||
}
|
||||
fmgc.FMGCInternal.fuelRequest = 1;
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
|
|
|
@ -18,7 +18,7 @@ var magHDG = props.globals.getNode("/orientation/heading-magnetic-deg", 1);
|
|||
var trueHDG = props.globals.getNode("/orientation/heading-deg", 1);
|
||||
|
||||
var flightPlanController = {
|
||||
flightplans: [createFlightplan(), createFlightplan(), createFlightplan(), nil, nil],
|
||||
flightplans: [createFlightplan(), createFlightplan(), createFlightplan(), nil],
|
||||
temporaryFlag: [0, 0],
|
||||
|
||||
# These flags are only for the main flgiht-plan
|
||||
|
@ -39,14 +39,13 @@ var flightPlanController = {
|
|||
num: [props.globals.initNode("/FMGC/flightplan[0]/num", 0, "INT"), props.globals.initNode("/FMGC/flightplan[1]/num", 0, "INT"), props.globals.initNode("/autopilot/route-manager/route/num", 0, "INT")],
|
||||
arrivalIndex: [0, 0, 0],
|
||||
arrivalDist: props.globals.getNode("/autopilot/route-manager/distance-remaining-nm"),
|
||||
totalDist: props.globals.getNode("/autopilot/route-manager/total-distance"),
|
||||
fromWptTime: nil,
|
||||
fromWptAlt: nil,
|
||||
_timeTemp: nil,
|
||||
_altTemp: nil,
|
||||
decelPoint: nil,
|
||||
tocIndex: [-99, -99, -99],
|
||||
tocPoint: nil,
|
||||
todIndex: [99, 99, 99],
|
||||
todPoint: nil,
|
||||
|
||||
init: func() {
|
||||
|
@ -274,51 +273,16 @@ var flightPlanController = {
|
|||
fmgc.windController.insertWind(n, index, 0, "(DECEL)");
|
||||
},
|
||||
|
||||
insertTOC: func(n) {
|
||||
var indexTOC = 0;
|
||||
var toc_distance = 0;
|
||||
for (var wpt = 1; wpt <= me.arrivalIndex[n]; wpt += 1) {
|
||||
toc_distance += me.flightplans[n].getWP(wpt).leg_distance;
|
||||
if (toc_distance > fmgc.FMGCInternal.clbDist) {
|
||||
indexTOC = wpt;
|
||||
break;
|
||||
}
|
||||
}
|
||||
me.tocIndex[n] = indexTOC;
|
||||
me.tocPoint = me.flightplans[n].pathGeod(0, fmgc.FMGCInternal.clbDist);
|
||||
me.flightplans[n].insertWP(createWP({lat: me.tocPoint.lat, lon: me.tocPoint.lon}, "(T/C)"), me.tocIndex[n]);
|
||||
#me.flightplans[n].getWP(me.tocIndex[n]).hidden = 1;
|
||||
fmgc.windController.insertWind(n, me.tocIndex[n], 0, "(T/C)");
|
||||
if (n == 2) {
|
||||
#me.tocNode = props.globals.initNode("/autopilot/route-manager/vnav/tc");
|
||||
setprop("/autopilot/route-manager/vnav/tc/latitude-deg", me.tocPoint.lat);
|
||||
setprop("/autopilot/route-manager/vnav/tc/longitude-deg", me.tocPoint.lon);
|
||||
}
|
||||
me.flightPlanChanged(n, 0);
|
||||
insertTOC: func(n, pos, index) {
|
||||
me.flightplans[n].insertWP(createWP(pos, "(T/C)"), index);
|
||||
#me.flightplans[n].getWP(index[n]).hidden = 1;
|
||||
fmgc.windController.insertWind(n, index, 0, "(T/C)");
|
||||
},
|
||||
|
||||
insertTOD: func(n) {
|
||||
var indexTOD = 0;
|
||||
var tod_distance = 0;
|
||||
for (var wpt = me.arrivalIndex[n]; wpt >= 1; wpt -= 1) {
|
||||
tod_distance += me.flightplans[n].getWP(wpt).leg_distance;
|
||||
if (tod_distance > fmgc.FMGCInternal.desDist) {
|
||||
indexTOD = wpt;
|
||||
break;
|
||||
}
|
||||
# check for tod before toc
|
||||
}
|
||||
me.todIndex[n] = indexTOD;
|
||||
me.todPoint = me.flightplans[n].pathGeod(me.arrivalIndex[n], -fmgc.FMGCInternal.desDist);
|
||||
me.flightplans[n].insertWP(createWP({lat: me.todPoint.lat, lon: me.todPoint.lon}, "(T/D)"), me.todIndex[n]);
|
||||
#me.flightplans[n].getWP(me.todIndex).hidden = 1;
|
||||
fmgc.windController.insertWind(n, me.todIndex[n], 0, "(T/D)");
|
||||
if (n == 2) {
|
||||
#me.todNode = props.globals.initNode("/autopilot/route-manager/vnav/td");
|
||||
setprop("/autopilot/route-manager/vnav/td/latitude-deg", me.todPoint.lat);
|
||||
setprop("/autopilot/route-manager/vnav/td/longitude-deg", me.todPoint.lon);
|
||||
}
|
||||
me.flightPlanChanged(n, 0);
|
||||
insertTOD: func(n, pos, index) {
|
||||
me.flightplans[n].insertWP(createWP(pos, "(T/D)"), index);
|
||||
#me.flightplans[n].getWP(index[n]).hidden = 1;
|
||||
fmgc.windController.insertWind(n, index, 0, "(T/D)");
|
||||
},
|
||||
|
||||
# childWPBearingDistance - return waypoint at bearing and distance from specified waypoint ghost
|
||||
|
@ -819,95 +783,95 @@ var flightPlanController = {
|
|||
}
|
||||
|
||||
# todo create waypoint, insert to flightplan, as non-sequence one (gets skipped in sequencing code
|
||||
me.insertDecel(n,{lat: me.decelPoint.lat, lon: me.decelPoint.lon}, me.indexTemp);
|
||||
me.insertDecel(n, {lat: me.decelPoint.lat, lon: me.decelPoint.lon}, me.indexTemp);
|
||||
me.flightPlanChanged(n, 0);
|
||||
},
|
||||
|
||||
deleteVerticalWaypoint: func(n, index, type) {
|
||||
if ((type == "tc" and index != -99) or (type == "td" and index != 99)) {
|
||||
if (type == "tc") {
|
||||
me.tocIndex[n] = -99;
|
||||
me.tocPoint = nil;
|
||||
} else if (type == "td") {
|
||||
me.todIndex[n] = 99;
|
||||
me.todPoint = nil;
|
||||
}
|
||||
me.flightplans[n].deleteWP(index);
|
||||
fmgc.windController.deleteWind(n, index);
|
||||
if (n == 2 and type == "tc") { #and me.tocNode != nil) {
|
||||
setprop("/autopilot/route-manager/vnav/tc/latitude-deg", 0.0); # temporary fix, for some reason the symbol refuses to go away
|
||||
setprop("/autopilot/route-manager/vnav/tc/longitude-deg", 0.0); # temporary fix, for some reason the symbol refuses to go away
|
||||
#me.tocNode.remove();
|
||||
#me.tocNode = nil;
|
||||
} else if (n == 2 and type == "td") { #and me.todNode != nil) {
|
||||
setprop("/autopilot/route-manager/vnav/td/latitude-deg", 0.0); # temporary fix, for some reason the symbol refuses to go away
|
||||
setprop("/autopilot/route-manager/vnav/td/longitude-deg", 0.0); # temporary fix, for some reason the symbol refuses to go away
|
||||
#me.todNode.remove();
|
||||
#me.todNode = nil;
|
||||
}
|
||||
me.flightPlanChanged(n, 0);
|
||||
} else {
|
||||
print(type, " couldn't be deleted: ", index, " | plan: ", n);
|
||||
calculateTOCPoint: func(n) {
|
||||
if (me.getPlanSizeNoDiscont(n) <= 1 or fmgc.FMGCInternal.clbReached) {
|
||||
setprop("/autopilot/route-manager/vnav/tc/latitude-deg", 0.0); # temporary fix, for some reason the symbol refuses to go away
|
||||
setprop("/autopilot/route-manager/vnav/tc/longitude-deg", 0.0); # temporary fix, for some reason the symbol refuses to go away
|
||||
return;
|
||||
}
|
||||
|
||||
if (fmgc.FMGCInternal.fuelCalculating) {
|
||||
return;
|
||||
}
|
||||
|
||||
me.indexTOC = me.getIndexOfTOC(n);
|
||||
if (me.indexTOC != -99) {
|
||||
me.flightplans[n].deleteWP(me.indexTOC);
|
||||
fmgc.windController.deleteWind(n, me.indexTOC);
|
||||
me.flightPlanChanged(n, 0);
|
||||
}
|
||||
|
||||
if (!fmgc.FMGCInternal.clbSet) {
|
||||
return;
|
||||
}
|
||||
|
||||
me.indexTOC = 1;
|
||||
me.dist = 0;
|
||||
for (var wpt = 1; wpt <= me.arrivalIndex[n]; wpt += 1) {
|
||||
me.dist += me.flightplans[n].getWP(wpt).leg_distance;
|
||||
if (me.dist > fmgc.FMGCInternal.clbDist) {
|
||||
me.indexTOC = wpt;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
me.tocPoint = me.flightplans[n].pathGeod(0, fmgc.FMGCInternal.clbDist);
|
||||
if (n == 2) {
|
||||
#me.tocNode = props.globals.initNode("/autopilot/route-manager/vnav/tc");
|
||||
setprop("/autopilot/route-manager/vnav/tc/latitude-deg", me.tocPoint.lat);
|
||||
setprop("/autopilot/route-manager/vnav/tc/longitude-deg", me.tocPoint.lon);
|
||||
}
|
||||
|
||||
me.insertTOC(n, {lat: me.tocPoint.lat, lon: me.tocPoint.lon}, me.indexTOC);
|
||||
me.flightPlanChanged(n, 0);
|
||||
},
|
||||
|
||||
calculateVerticalPoints: func(n, explicit = 0) {
|
||||
if (me.getPlanSizeNoDiscont(n) <= 1) {
|
||||
# to do: hide toc and tod
|
||||
return;
|
||||
calculateTODPoint: func(n) {
|
||||
if (me.getPlanSizeNoDiscont(n) <= 1 or fmgc.FMGCInternal.desReached) {
|
||||
setprop("/autopilot/route-manager/vnav/td/latitude-deg", 0.0); # temporary fix, for some reason the symbol refuses to go away
|
||||
setprop("/autopilot/route-manager/vnav/td/longitude-deg", 0.0); # temporary fix, for some reason the symbol refuses to go away
|
||||
return;
|
||||
}
|
||||
|
||||
if (fmgc.FMGCInternal.clbSet and !fmgc.FMGCInternal.clbReached) {
|
||||
if (explicit) {
|
||||
me.deleteVerticalWaypoint(n, me.getIndexOfTOC(n), "tc");
|
||||
me.insertTOC(n);
|
||||
} else {
|
||||
if (me.tocIndex[n] != -99) {
|
||||
var indexTOC_old = me.getIndexOfTOC(n);
|
||||
var tocPoint_old = me.flightplans[n].getWP(indexTOC_old);
|
||||
|
||||
me.flightplans[4] = me.flightplans[n].clone();
|
||||
me.flightplans[4].deleteWP(indexTOC_old);
|
||||
var tocPoint_new = me.flightplans[4].pathGeod(0, fmgc.FMGCInternal.clbDist);
|
||||
me.flightplans[4] = nil;
|
||||
|
||||
if (tocPoint_new.lat != tocPoint_old.lat or tocPoint_new.lon != tocPoint_old.lon) {
|
||||
me.deleteVerticalWaypoint(n, indexTOC_old, "tc");
|
||||
me.insertTOC(n);
|
||||
}
|
||||
} else {
|
||||
me.insertTOC(n);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
me.deleteVerticalWaypoint(n, me.getIndexOfTOC(n), "tc");
|
||||
if (fmgc.FMGCInternal.fuelCalculating) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (fmgc.FMGCInternal.desSet and !fmgc.FMGCInternal.desReached) {
|
||||
if (explicit) {
|
||||
me.deleteVerticalWaypoint(n, me.getIndexOfTOD(n), "td");
|
||||
me.insertTOD(n);
|
||||
} else {
|
||||
if (me.todIndex[n] != 99) {
|
||||
var indexTOD_old = me.getIndexOfTOD(n);
|
||||
var todPoint_old = me.flightplans[n].getWP(indexTOD_old);
|
||||
|
||||
me.flightplans[4] = me.flightplans[n].clone();
|
||||
me.flightplans[4].deleteWP(indexTOD_old);
|
||||
var todPoint_new = me.flightplans[4].pathGeod(me.arrivalIndex[n] - 1, -fmgc.FMGCInternal.desDist);
|
||||
me.flightplans[4] = nil;
|
||||
|
||||
if (todPoint_new.lat != todPoint_old.lat or todPoint_new.lon != todPoint_old.lon) {
|
||||
me.deleteVerticalWaypoint(n, indexTOD_old, "td");
|
||||
me.insertTOD(n);
|
||||
}
|
||||
} else {
|
||||
me.insertTOD(n);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
me.deleteVerticalWaypoint(n, me.getIndexOfTOD(n), "td");
|
||||
me.indexTOD = me.getIndexOfTOD(n);
|
||||
if (me.indexTOD != -99) {
|
||||
me.flightplans[n].deleteWP(me.indexTOD);
|
||||
fmgc.windController.deleteWind(n, me.indexTOD);
|
||||
me.flightPlanChanged(n, 0);
|
||||
}
|
||||
|
||||
if (!fmgc.FMGCInternal.desSet) {
|
||||
return;
|
||||
}
|
||||
|
||||
me.indexTOD = me.arrivalIndex[n];
|
||||
me.dist = 0;
|
||||
for (var wpt = me.arrivalIndex[n]; wpt >= 1; wpt -= 1) {
|
||||
me.dist += me.flightplans[n].getWP(wpt).leg_distance;
|
||||
if (me.dist > fmgc.FMGCInternal.desDist) {
|
||||
me.indexTOD = wpt;
|
||||
break;
|
||||
}
|
||||
# check for tod before toc
|
||||
}
|
||||
|
||||
me.todPoint = me.flightplans[n].pathGeod(me.arrivalIndex[n], -fmgc.FMGCInternal.desDist);
|
||||
if (n == 2) {
|
||||
#me.tocNode = props.globals.initNode("/autopilot/route-manager/vnav/tc");
|
||||
setprop("/autopilot/route-manager/vnav/td/latitude-deg", me.todPoint.lat);
|
||||
setprop("/autopilot/route-manager/vnav/td/longitude-deg", me.todPoint.lon);
|
||||
}
|
||||
|
||||
me.insertTOD(n, {lat: me.todPoint.lat, lon: me.todPoint.lon}, me.indexTOD);
|
||||
me.flightPlanChanged(n, 0);
|
||||
},
|
||||
|
||||
# insertPlaceBearingDistance - insert PBD waypoint at specified index,
|
||||
|
@ -994,7 +958,7 @@ var flightPlanController = {
|
|||
var errs = [];
|
||||
call(func {
|
||||
me.currentToWptIndex.setValue(1);
|
||||
}, nil, nil, nil,errs);
|
||||
}, nil, nil, nil, errs);
|
||||
if (size(errs) != 0) { debug.printerror(errs); }
|
||||
}
|
||||
me.active.setValue(1);
|
||||
|
@ -1022,7 +986,8 @@ var flightPlanController = {
|
|||
|
||||
if (runCalculate and callCalculate) {
|
||||
me.calculateDecelPoint(n);
|
||||
me.calculateVerticalPoints(n, 1);
|
||||
me.calculateTOCPoint(n);
|
||||
me.calculateTODPoint(n);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
# A3XX FMGC Fuel Driver
|
||||
# Copyright (c) 2020 Matthew Maring (msattmaring)
|
||||
# Copyright (c) 2020 Matthew Maring (mattmaring)
|
||||
|
||||
########
|
||||
# FUEL #
|
||||
|
@ -85,7 +85,7 @@ var updateFuel = func {
|
|||
if (fmgc.FMGCInternal.toFromSet and fmgc.FMGCInternal.crzSet and fmgc.FMGCInternal.crzTempSet and fmgc.FMGCInternal.zfwSet) {
|
||||
crz = fmgc.FMGCInternal.crzFl;
|
||||
temp = fmgc.FMGCInternal.crzTemp;
|
||||
dist = flightPlanController.arrivalDist.getValue();
|
||||
dist = flightPlanController.totalDist.getValue();
|
||||
|
||||
trpWind = fmgc.FMGCInternal.tripWind;
|
||||
wind_value = fmgc.FMGCInternal.tripWindValue;
|
||||
|
@ -94,23 +94,15 @@ var updateFuel = func {
|
|||
}
|
||||
dist = dist - (dist * wind_value * 0.002);
|
||||
|
||||
#trip_fuel = 4.003e+02 + (dist * -5.399e+01) + (dist * dist * -7.322e-02) + (dist * dist * dist * 1.091e-05) + (dist * dist * dist * dist * 2.962e-10) + (dist * dist * dist * dist * dist * -1.178e-13) + (dist * dist * dist * dist * dist * dist * 6.322e-18) + (crz * 5.387e+01) + (dist * crz * 1.583e+00) + (dist * dist * crz * 7.695e-04) + (dist * dist * dist * crz * -1.057e-07) + (dist * dist * dist * dist * crz * 1.138e-12) + (dist * dist * dist * dist * dist * crz * 1.736e-16) + (crz * crz * -1.171e+00) + (dist * crz * crz * -1.219e-02) + (dist * dist * crz * crz * -2.879e-06) + (dist * dist * dist * crz * crz * 3.115e-10) + (dist * dist * dist * dist * crz * crz * -4.093e-15) + (crz * crz * crz * 9.160e-03) + (dist * crz * crz * crz * 4.311e-05) + (dist * dist * crz * crz * crz * 4.532e-09) + (dist * dist * dist * crz * crz * crz * -2.879e-13) + (crz * crz * crz * crz * -3.338e-05) + (dist * crz * crz * crz * crz * -7.340e-08) + (dist * dist * crz * crz * crz * crz * -2.494e-12) + (crz * crz * crz * crz * crz * 5.849e-08) + (dist * crz * crz * crz * crz * crz * 4.898e-11) + (crz * crz * crz * crz * crz * crz * -3.999e-11);
|
||||
trip_fuel = 4.018e+02 + (dist*3.575e+01) + (dist*dist*-4.260e-02) + (dist*dist*dist*-1.446e-05) + (dist*dist*dist*dist*4.101e-09) + (dist*dist*dist*dist*dist*-6.753e-13) + (dist*dist*dist*dist*dist*dist*5.074e-17) + (crz*-2.573e+01) + (dist*crz*-1.583e-01) + (dist*dist*crz*8.147e-04) + (dist*dist*dist*crz*4.485e-08) + (dist*dist*dist*dist*crz*-7.656e-12) + (dist*dist*dist*dist*dist*crz*4.503e-16) + (crz*crz*4.427e-01) + (dist*crz*crz*-1.137e-03) + (dist*dist*crz*crz*-4.409e-06) + (dist*dist*dist*crz*crz*-3.345e-11) + (dist*dist*dist*dist*crz*crz*4.985e-15) + (crz*crz*crz*-2.471e-03) + (dist*crz*crz*crz*1.223e-05) + (dist*dist*crz*crz*crz*9.660e-09) + (dist*dist*dist*crz*crz*crz*-2.127e-14) + (crz*crz*crz*crz*5.714e-06) + (dist*crz*crz*crz*crz*-3.546e-08) + (dist*dist*crz*crz*crz*crz*-7.536e-12) + (crz*crz*crz*crz*crz*-4.061e-09) + (dist*crz*crz*crz*crz*crz*3.355e-11) + (crz*crz*crz*crz*crz*crz*-1.451e-12);
|
||||
if (trip_fuel < 400) {
|
||||
trip_fuel = 400;
|
||||
} else if (trip_fuel > 80000) {
|
||||
trip_fuel = 80000;
|
||||
}
|
||||
# get trip fuel
|
||||
trip_fuel = getprop("/fuel/integrated/lr-fuel") * 1000; # fix this
|
||||
|
||||
# cruize temp correction
|
||||
trip_fuel = trip_fuel + (0.033 * (temp - 15 + (2 * crz / 10)) * flightPlanController.arrivalDist.getValue());
|
||||
trip_fuel = trip_fuel + (0.033 * (temp - 15 + (2 * crz / 10)) * flightPlanController.totalDist.getValue());
|
||||
|
||||
# get trip time
|
||||
trip_time = getprop("/fuel/integrated/lr-time");
|
||||
|
||||
trip_time = 9.095e-02 + (dist*-3.968e-02) + (dist*dist*4.302e-04) + (dist*dist*dist*2.005e-07) + (dist*dist*dist*dist*-6.876e-11) + (dist*dist*dist*dist*dist*1.432e-14) + (dist*dist*dist*dist*dist*dist*-1.177e-18) + (crz*7.348e-01) + (dist*crz*3.310e-03) + (dist*dist*crz*-8.700e-06) + (dist*dist*dist*crz*-4.214e-10) + (dist*dist*dist*dist*crz*5.652e-14) + (dist*dist*dist*dist*dist*crz*-6.379e-18) + (crz*crz*-1.449e-02) + (dist*crz*crz*-7.508e-06) + (dist*dist*crz*crz*4.529e-08) + (dist*dist*dist*crz*crz*3.699e-13) + (dist*dist*dist*dist*crz*crz*8.466e-18) + (crz*crz*crz*1.108e-04) + (dist*crz*crz*crz*-4.126e-08) + (dist*dist*crz*crz*crz*-9.645e-11) + (dist*dist*dist*crz*crz*crz*-1.544e-16) + (crz*crz*crz*crz*-4.123e-07) + (dist*crz*crz*crz*crz*1.831e-10) + (dist*dist*crz*crz*crz*crz*7.438e-14) + (crz*crz*crz*crz*crz*7.546e-10) + (dist*crz*crz*crz*crz*crz*-1.921e-13) + (crz*crz*crz*crz*crz*crz*-5.453e-13);
|
||||
if (trip_time < 10) {
|
||||
trip_time = 10;
|
||||
} else if (trip_time > 480) {
|
||||
trip_time = 480;
|
||||
}
|
||||
# if (low air conditioning) {
|
||||
# trip_fuel = trip_fuel * 0.995;
|
||||
#}
|
||||
|
@ -119,15 +111,6 @@ var updateFuel = func {
|
|||
#} else if (engine anti-ice) {
|
||||
# trip_fuel = trip_fuel * 1.02;
|
||||
#}
|
||||
|
||||
zfw = fmgc.FMGCInternal.zfw;
|
||||
landing_weight_correction = 9.951e+00 + (dist*-2.064e+00) + (dist*dist*2.030e-03) + (dist*dist*dist*8.179e-08) + (dist*dist*dist*dist*-3.941e-11) + (dist*dist*dist*dist*dist*2.443e-15) + (crz*2.771e+00) + (dist*crz*3.067e-02) + (dist*dist*crz*-1.861e-05) + (dist*dist*dist*crz*2.516e-10) + (dist*dist*dist*dist*crz*5.452e-14) + (crz*crz*-4.483e-02) + (dist*crz*crz*-1.645e-04) + (dist*dist*crz*crz*5.212e-08) + (dist*dist*dist*crz*crz*-8.721e-13) + (crz*crz*crz*2.609e-04) + (dist*crz*crz*crz*3.898e-07) + (dist*dist*crz*crz*crz*-4.617e-11) + (crz*crz*crz*crz*-6.488e-07) + (dist*crz*crz*crz*crz*-3.390e-10) + (crz*crz*crz*crz*crz*5.835e-10);
|
||||
trip_fuel = trip_fuel + (landing_weight_correction * (fmgc.FMGCInternal.lw * 1000 - 121254.24421) / 2204.622622);
|
||||
if (trip_fuel < 400) {
|
||||
trip_fuel = 400;
|
||||
} else if (trip_fuel > 80000) {
|
||||
trip_fuel = 80000;
|
||||
}
|
||||
|
||||
fmgc.FMGCInternal.tripFuel = trip_fuel / 1000;
|
||||
fmgc.FMGCInternal.tripTime_num = trip_time;
|
||||
|
@ -200,6 +183,7 @@ var updateFuel = func {
|
|||
}
|
||||
|
||||
fmgc.FMGCInternal.tow = num(fmgc.FMGCInternal.zfw + fmgc.FMGCInternal.block - fmgc.FMGCInternal.taxiFuel);
|
||||
fmgc.FMGCNodes.tow.setValue(fmgc.FMGCInternal.tow);
|
||||
|
||||
# Calculate climb/descent fuel
|
||||
if (fmgc.FMGCInternal.toFromSet and fmgc.FMGCInternal.crzSet and fmgc.FMGCInternal.crzTempSet and fmgc.FMGCInternal.zfwSet) {
|
||||
|
@ -266,7 +250,7 @@ var updateFuel = func {
|
|||
}
|
||||
_distance += fmgc.flightPlanController.flightplans[i].getWP(wpt).leg_distance;
|
||||
var _wp = fmgc.flightPlanController.flightplans[i].getWP(wpt);
|
||||
if (wpt < fmgc.flightPlanController.tocIndex[i]) {
|
||||
if (wpt < fmgc.flightPlanController.getIndexOfTOC(i)) {
|
||||
_clb_distance += fmgc.flightPlanController.flightplans[i].getWP(wpt).leg_distance;
|
||||
var _multiplier = _clb_distance / fmgc.FMGCInternal.clbDist;
|
||||
append(efob_values[i], fmgc.FMGCInternal.block - fmgc.FMGCInternal.taxiFuel - _multiplier * fmgc.FMGCInternal.clbFuel / 1000);
|
||||
|
@ -287,8 +271,8 @@ var updateFuel = func {
|
|||
}
|
||||
# to-do: add other conditions
|
||||
}
|
||||
} else if (wpt >= fmgc.flightPlanController.tocIndex[i] and wpt <= fmgc.flightPlanController.todIndex[i]) {
|
||||
if (wpt != fmgc.flightPlanController.tocIndex[i]) {
|
||||
} else if (wpt >= fmgc.flightPlanController.getIndexOfTOC(i) and wpt <= fmgc.flightPlanController.getIndexOfTOD(i)) {
|
||||
if (wpt != fmgc.flightPlanController.getIndexOfTOC(i)) {
|
||||
_crz_distance += fmgc.flightPlanController.flightplans[i].getWP(wpt).leg_distance;
|
||||
}
|
||||
var _multiplier = _crz_distance / (fmgc.flightPlanController.arrivalDist.getValue() - fmgc.FMGCInternal.clbDist - fmgc.FMGCInternal.desDist);
|
||||
|
@ -307,7 +291,7 @@ var updateFuel = func {
|
|||
# if (_wp.speed_cstr == nil or _wp.speed_cstr == 0 or _wp.speed_cstr_type == "computed" or _wp.speed_cstr_type == "computed-mach") {
|
||||
#
|
||||
# }
|
||||
} else if (wpt > fmgc.flightPlanController.todIndex[i] and wpt < fmgc.flightPlanController.arrivalIndex[i]) {
|
||||
} else if (wpt > fmgc.flightPlanController.getIndexOfTOD(i) and wpt < fmgc.flightPlanController.arrivalIndex[i]) {
|
||||
_des_distance += fmgc.flightPlanController.flightplans[i].getWP(wpt).leg_distance;
|
||||
var _multiplier = _des_distance / fmgc.FMGCInternal.desDist;
|
||||
append(efob_values[i], fmgc.FMGCInternal.block - fmgc.FMGCInternal.taxiFuel - fmgc.FMGCInternal.tripFuel + fmgc.FMGCInternal.desFuel / 1000 - _multiplier * fmgc.FMGCInternal.desFuel / 1000);
|
||||
|
|
|
@ -447,7 +447,7 @@ var windController = {
|
|||
}
|
||||
}
|
||||
|
||||
if ((!fmgc.FMGCInternal.clbSet and waypoint.wp_role == "sid") or (fmgc.FMGCInternal.clbSet and i <= fmgc.flightPlanController.tocIndex[plan])) {
|
||||
if ((!fmgc.FMGCInternal.clbSet and waypoint.wp_role == "sid") or (fmgc.FMGCInternal.clbSet and i <= fmgc.flightPlanController.getIndexOfTOC(plan))) {
|
||||
if (found == 0) {
|
||||
append(me.winds[plan], waypoint_winds.new(waypoint.id, "departure", 0));
|
||||
} else {
|
||||
|
@ -455,7 +455,7 @@ var windController = {
|
|||
me.winds[plan][i].type = "departure";
|
||||
me.includeWind = 0;
|
||||
}
|
||||
} else if ((!fmgc.FMGCInternal.desSet and (waypoint.wp_role == "star" or waypoint.wp_role == "approach" or waypoint.wp_role == "missed")) or (fmgc.FMGCInternal.desSet and i >= fmgc.flightPlanController.todIndex[plan])) {
|
||||
} else if ((!fmgc.FMGCInternal.desSet and (waypoint.wp_role == "star" or waypoint.wp_role == "approach" or waypoint.wp_role == "missed")) or (fmgc.FMGCInternal.desSet and i >= fmgc.flightPlanController.getIndexOfTOD(plan))) {
|
||||
if (found == 0) {
|
||||
append(me.winds[plan], waypoint_winds.new(waypoint.id, "arrival", 0));
|
||||
} else {
|
||||
|
|
|
@ -153,11 +153,13 @@ var fuelPredInput = func(key, i) {
|
|||
if (size(scratchpad) == 0) {
|
||||
var zfw = pts.Fdm.JSBsim.Inertia.weightLbs.getValue() - pts.Consumables.Fuel.totalFuelLbs.getValue();
|
||||
fmgc.FMGCInternal.zfw = sprintf("%3.1f", math.round(zfw / 1000, 0.1));
|
||||
fmgc.FMGCNodes.zfw.setValue(fmgc.FMGCInternal.zfw);
|
||||
fmgc.FMGCInternal.zfwSet = 1;
|
||||
if (fmgc.FMGCInternal.blockSet != 1) {
|
||||
fmgc.FMGCInternal.block = pts.Consumables.Fuel.totalFuelLbs.getValue() / 1000;
|
||||
fmgc.FMGCInternal.blockSet = 1;
|
||||
fmgc.FMGCInternal.tow = fmgc.FMGCInternal.zfw + fmgc.FMGCInternal.block - fmgc.FMGCInternal.taxiFuel;
|
||||
fmgc.FMGCNodes.tow.setValue(fmgc.FMGCInternal.tow);
|
||||
fmgc.FMGCInternal.fuelRequest = 1;
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
|
@ -181,6 +183,7 @@ var fuelPredInput = func(key, i) {
|
|||
if (zfw != nil and zfws > 0 and zfws <= 5 and (find(".", zfwi[0]) == -1 or size(split(".", zfwi[0])[1]) <= 1) and zfwcg != nil and zfwcgs > 0 and zfwcgs <= 4 and (find(".", zfwi[1]) == -1 or size(split(".", zfwi[1])[1]) <= 1)) {
|
||||
if (zfw >= zfw_min and zfw <= zfw_max and zfwcg >= 8.0 and zfwcg <= 45.0) {
|
||||
fmgc.FMGCInternal.zfw = zfw;
|
||||
fmgc.FMGCNodes.zfw.setValue(fmgc.FMGCInternal.zfw);
|
||||
fmgc.FMGCInternal.zfwSet = 1;
|
||||
fmgc.FMGCInternal.zfwcg = zfwcg;
|
||||
fmgc.FMGCInternal.zfwcgSet = 1;
|
||||
|
@ -188,6 +191,7 @@ var fuelPredInput = func(key, i) {
|
|||
fmgc.FMGCInternal.block = pts.Consumables.Fuel.totalFuelLbs.getValue() / 1000;
|
||||
fmgc.FMGCInternal.blockSet = 1;
|
||||
fmgc.FMGCInternal.tow = fmgc.FMGCInternal.zfw + fmgc.FMGCInternal.block - fmgc.FMGCInternal.taxiFuel;
|
||||
fmgc.FMGCNodes.tow.setValue(fmgc.FMGCInternal.tow);
|
||||
fmgc.FMGCInternal.fuelRequest = 1;
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
|
@ -219,11 +223,13 @@ var fuelPredInput = func(key, i) {
|
|||
}
|
||||
if (scratchpad >= zfw_min and scratchpad <= zfw_max) {
|
||||
fmgc.FMGCInternal.zfw = scratchpad;
|
||||
fmgc.FMGCNodes.zfw.setValue(fmgc.FMGCInternal.zfw);
|
||||
fmgc.FMGCInternal.zfwSet = 1;
|
||||
if (fmgc.FMGCInternal.blockSet != 1) {
|
||||
fmgc.FMGCInternal.block = pts.Consumables.Fuel.totalFuelLbs.getValue() / 1000;
|
||||
fmgc.FMGCInternal.blockSet = 1;
|
||||
fmgc.FMGCInternal.tow = fmgc.FMGCInternal.zfw + fmgc.FMGCInternal.block - fmgc.FMGCInternal.taxiFuel;
|
||||
fmgc.FMGCNodes.tow.setValue(fmgc.FMGCInternal.tow);
|
||||
fmgc.FMGCInternal.fuelRequest = 1;
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
|
|
|
@ -143,6 +143,7 @@ var initInputA = func(key, i) {
|
|||
} else if (key == "L6") {
|
||||
if (scratchpad == "CLR") {
|
||||
fmgc.FMGCInternal.crzFt = 10000;
|
||||
fmgc.FMGCNodes.crzFt.setValue(fmgc.FMGCInternal.crzFt);
|
||||
fmgc.FMGCInternal.crzFl = 100;
|
||||
fmgc.altvert();
|
||||
fmgc.updateRouteManagerAlt();
|
||||
|
@ -185,6 +186,7 @@ var initInputA = func(key, i) {
|
|||
} else if (crzs >= 1 and crzs <= 3 and crz != nil and temps >= 1 and temps <= 3 and temp != nil) {
|
||||
if (crz > 0 and crz <= 390 and temp >= -99 and temp <= 99) {
|
||||
fmgc.FMGCInternal.crzFt = crz * 100;
|
||||
fmgc.FMGCNodes.crzFt.setValue(fmgc.FMGCInternal.crzFt);
|
||||
fmgc.FMGCInternal.crzFl = crz;
|
||||
fmgc.altvert();
|
||||
fmgc.updateRouteManagerAlt();
|
||||
|
@ -217,6 +219,7 @@ var initInputA = func(key, i) {
|
|||
if (crzs >= 1 and crzs <= 3 and crz != nil) {
|
||||
if (crz > 0 and crz <= 390) {
|
||||
fmgc.FMGCInternal.crzFt = crz * 100;
|
||||
fmgc.FMGCNodes.crzFt.setValue(fmgc.FMGCInternal.crzFt);
|
||||
fmgc.FMGCInternal.crzFl = crz;
|
||||
fmgc.altvert();
|
||||
fmgc.updateRouteManagerAlt();
|
||||
|
|
|
@ -190,9 +190,11 @@ var initInputB = func(key, i) {
|
|||
if (size(scratchpad) == 0) {
|
||||
var zfw = pts.Fdm.JSBsim.Inertia.weightLbs.getValue() - pts.Consumables.Fuel.totalFuelLbs.getValue();
|
||||
fmgc.FMGCInternal.zfw = sprintf("%3.1f", math.round(zfw / 1000, 0.1));
|
||||
fmgc.FMGCNodes.zfw.setValue(fmgc.FMGCInternal.zfw);
|
||||
fmgc.FMGCInternal.zfwSet = 1;
|
||||
if (!fmgc.FMGCInternal.blockConfirmed and fmgc.FMGCInternal.blockSet) {
|
||||
fmgc.FMGCInternal.tow = fmgc.FMGCInternal.zfw + fmgc.FMGCInternal.block - fmgc.FMGCInternal.taxiFuel;
|
||||
fmgc.FMGCNodes.tow.setValue(fmgc.FMGCInternal.tow);
|
||||
fmgc.FMGCInternal.fuelRequest = 1;
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
|
@ -219,11 +221,13 @@ var initInputB = func(key, i) {
|
|||
if (zfw != nil and zfws > 0 and zfws <= 5 and (find(".", zfwi[0]) == -1 or size(split(".", zfwi[0])[1]) <= 1) and zfwcg != nil and zfwcgs > 0 and zfwcgs <= 4 and (find(".", zfwi[1]) == -1 or size(split(".", zfwi[1])[1]) <= 1)) {
|
||||
if (zfw >= zfw_min and zfw <= zfw_max and zfwcg >= 8.0 and zfwcg <= 45.0) {
|
||||
fmgc.FMGCInternal.zfw = zfw;
|
||||
fmgc.FMGCNodes.zfw.setValue(fmgc.FMGCInternal.zfw);
|
||||
fmgc.FMGCInternal.zfwSet = 1;
|
||||
fmgc.FMGCInternal.zfwcg = zfwcg;
|
||||
fmgc.FMGCInternal.zfwcgSet = 1;
|
||||
if (!fmgc.FMGCInternal.blockConfirmed and fmgc.FMGCInternal.blockSet) {
|
||||
fmgc.FMGCInternal.tow = fmgc.FMGCInternal.zfw + fmgc.FMGCInternal.block - fmgc.FMGCInternal.taxiFuel;
|
||||
fmgc.FMGCNodes.tow.setValue(fmgc.FMGCInternal.tow);
|
||||
fmgc.FMGCInternal.fuelRequest = 1;
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
|
@ -258,9 +262,11 @@ var initInputB = func(key, i) {
|
|||
}
|
||||
if (scratchpad >= zfw_min and scratchpad <= zfw_max) {
|
||||
fmgc.FMGCInternal.zfw = scratchpad;
|
||||
fmgc.FMGCNodes.zfw.setValue(fmgc.FMGCInternal.zfw);
|
||||
fmgc.FMGCInternal.zfwSet = 1;
|
||||
if (!fmgc.FMGCInternal.blockConfirmed and fmgc.FMGCInternal.blockSet) {
|
||||
fmgc.FMGCInternal.tow = fmgc.FMGCInternal.zfw + fmgc.FMGCInternal.block - fmgc.FMGCInternal.taxiFuel;
|
||||
fmgc.FMGCNodes.tow.setValue(fmgc.FMGCInternal.tow);
|
||||
fmgc.FMGCInternal.fuelRequest = 1;
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
|
@ -311,6 +317,7 @@ var initInputB = func(key, i) {
|
|||
fmgc.FMGCInternal.minDestFob = 0;
|
||||
fmgc.FMGCInternal.minDestFobSet = 0;
|
||||
fmgc.FMGCInternal.tow = 0;
|
||||
fmgc.FMGCNodes.tow.setValue(fmgc.FMGCInternal.tow);
|
||||
fmgc.FMGCInternal.lw = 0;
|
||||
fmgc.FMGCInternal.tripWind = "HD000";
|
||||
fmgc.FMGCInternal.tripWindValue = 0;
|
||||
|
@ -332,6 +339,7 @@ var initInputB = func(key, i) {
|
|||
fmgc.FMGCInternal.blockSet = 1;
|
||||
if (fmgc.FMGCInternal.zfwSet) {
|
||||
fmgc.FMGCInternal.tow = num(fmgc.FMGCInternal.zfw + fmgc.FMGCInternal.block - fmgc.FMGCInternal.taxiFuel);
|
||||
fmgc.FMGCNodes.tow.setValue(fmgc.FMGCInternal.tow);
|
||||
fmgc.FMGCInternal.fuelRequest = 1;
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
|
@ -349,6 +357,7 @@ var initInputB = func(key, i) {
|
|||
fmgc.FMGCInternal.blockSet = 1;
|
||||
if (fmgc.FMGCInternal.zfwSet) {
|
||||
fmgc.FMGCInternal.tow = num(fmgc.FMGCInternal.zfw + fmgc.FMGCInternal.block - fmgc.FMGCInternal.taxiFuel);
|
||||
fmgc.FMGCNodes.tow.setValue(fmgc.FMGCInternal.tow);
|
||||
fmgc.FMGCInternal.fuelRequest = 1;
|
||||
fmgc.FMGCInternal.fuelCalculating = 1;
|
||||
fmgc.fuelCalculating.setValue(1);
|
||||
|
|
|
@ -62,6 +62,7 @@ var MCDU_reset = func(i) {
|
|||
fmgc.FMGCInternal.costIndex = 0;
|
||||
fmgc.FMGCInternal.costIndexSet = 0;
|
||||
fmgc.FMGCInternal.crzFt = 10000;
|
||||
fmgc.FMGCNodes.crzFt.setValue(fmgc.FMGCInternal.crzFt);
|
||||
fmgc.altvert();
|
||||
fmgc.updateRouteManagerAlt();
|
||||
fmgc.FMGCInternal.crzFl = 100;
|
||||
|
@ -100,6 +101,7 @@ var MCDU_reset = func(i) {
|
|||
|
||||
# INT-B
|
||||
fmgc.FMGCInternal.zfw = 0;
|
||||
fmgc.FMGCNodes.zfw.setValue(fmgc.FMGCInternal.zfw);
|
||||
fmgc.FMGCInternal.zfwSet = 0;
|
||||
fmgc.FMGCInternal.zfwcg = 25.0;
|
||||
fmgc.FMGCInternal.zfwcgSet = 0;
|
||||
|
@ -124,6 +126,7 @@ var MCDU_reset = func(i) {
|
|||
fmgc.FMGCInternal.minDestFob = 0;
|
||||
fmgc.FMGCInternal.minDestFobSet = 0;
|
||||
fmgc.FMGCInternal.tow = 0;
|
||||
fmgc.FMGCNodes.tow.setValue(fmgc.FMGCInternal.tow);
|
||||
fmgc.FMGCInternal.lw = 0;
|
||||
fmgc.FMGCInternal.tripWind = "HD000";
|
||||
fmgc.FMGCInternal.tripWindValue = 0;
|
||||
|
|
|
@ -203,7 +203,7 @@ var vertRev = {
|
|||
mcdu_message(me.computer, "FORMAT ERROR");
|
||||
}
|
||||
} elsif (index == 5) {
|
||||
if ((!fmgc.FMGCInternal.clbSet and me.wp.wp_role == "sid") or (fmgc.FMGCInternal.clbSet and me.index <= fmgc.flightPlanController.tocIndex[me.plan])) {
|
||||
if ((!fmgc.FMGCInternal.clbSet and me.wp.wp_role == "sid") or (fmgc.FMGCInternal.clbSet and me.index <= fmgc.flightPlanController.getIndexOfTOC[me.plan])) {
|
||||
if (canvas_mcdu.myCLBWIND[me.computer] == nil) {
|
||||
canvas_mcdu.myCLBWIND[me.computer] = windCLBPage.new(me.computer);
|
||||
} else {
|
||||
|
@ -211,7 +211,7 @@ var vertRev = {
|
|||
}
|
||||
fmgc.windController.accessPage[me.computer] = "VERTREV";
|
||||
setprop("MCDU[" ~ me.computer ~ "]/page", "WINDCLB");
|
||||
} else if ((!fmgc.FMGCInternal.desSet and (me.wp.wp_role == "star" or me.wp.wp_role == "approach" or me.wp.wp_role == "missed")) or (fmgc.FMGCInternal.desSet and me.index >= fmgc.flightPlanController.todIndex[me.plan])) {
|
||||
} else if ((!fmgc.FMGCInternal.desSet and (me.wp.wp_role == "star" or me.wp.wp_role == "approach" or me.wp.wp_role == "missed")) or (fmgc.FMGCInternal.desSet and me.index >= fmgc.flightPlanController.getIndexOfTOD(me.plan))) {
|
||||
if (canvas_mcdu.myDESWIND[me.computer] == nil) {
|
||||
canvas_mcdu.myDESWIND[me.computer] = windDESPage.new(me.computer);
|
||||
} else {
|
||||
|
|
1215
Systems/fuel-driver.xml
Normal file
1215
Systems/fuel-driver.xml
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Add table
Reference in a new issue