Archived

This topic is now archived and is closed to further replies.

Somebody_Else

FSBuild & The Queen

Recommended Posts

Hi All,I'm hoping someone far cleverer can assist me! I've been trying to do some proper fuel planning instead of the usual "end up at destination with way more fuel than you ought to approach". For this I've been playing about with FSBuild.I've downloaded the performance file from the fsbuild website, but it is throwing up some curious results.I'm currently flying from EGLL - KJFK. For the first 2hr40mins of the flight my actual fuel on board was consistently +2 tonnes over the FSbuild estimates; great, no problem with that.However in the course of 55 mins from one position to the next my positive fuel quantity of +2T dropped to +0.02T; this difference has steadily fallen until the waypoint I've just passed over my actual fuel is -1.8 below the FSBuild estimate.I've been in level flight (ZFW 228,023kg @FL360, cruising at 0.84) with winds, plotted into the FMC, accurate in terms of wind speed but a tad more nose on than FSBuilds wind, eg wind on FSBUILD is 297@32 but actual is more like 275@32 which is nose on.I've gone from being +2T over to -2T under.Is this to be expected, am I worrying over nothing? (A difference of 4T of fuel is about 30 mins flying time).Thanks For your timeCraig Baillie

Share this post


Link to post
Share on other sites
Help AVSIM continue to serve you!
Please donate today!

umm, go to Help>Assistance (something like that , 2 option) and press route , it will show route and also how much fuel you need, get that amout of fuel and add some incase of something happen

Share this post


Link to post
Share on other sites

TOPCAT is better at fuel planning than FSBuild which is better at planning a route than it is planning fuel. That is about to change, for what it's worth the makers of TOPCAT are due to release Professional Flight Planner X in a few short months.

Share this post


Link to post
Share on other sites

Well thanks for your replies; I was looking more into the fuel burns as I am getting some inconsistent results.You should note that TOPCAT (by the developers own admission) is not a fuel planner. It will provide you with a great estimate that will ensure you will get to your destination with plenty to spare. FSBUILD is a great fuel planner, if you can get the burn profiles right (for example the LDS I always seem to be within a tonne). Unfortunately I am getting strange problems with the 747 but I think its more to do with flying longer and inaccurate data e.g. weather 3hrs down the line etc.PFPX will certainly be a great addition and I am looking forward to trying it out.RegardsCraig

Share this post


Link to post
Share on other sites

You can do it by hand using the included document "02 Cruise and Fuel Planning" on the start menu, under the PMDG 747 dealy. This is for FSX, not sure if it exists for FS9. But that is how I generally do it, has all your charts/burns in there.

Share this post


Link to post
Share on other sites

Speak of the devil... I just created a file in MATLAB to calculate fuel burn using the tables given in the manuals... In my experience FSBuild always missed a few tonnes and by hand always added a few tonnes somewhere... I haven't had a chance to test my fuel calculator out yet, but if you give me a set of points (pax, cargo, distance, wind factor overall, distance to alternate, contingency fuel in minutes, overall direction of flight, and taxi fuel in minutes) I can give you a number to try out...For anyone who's interested, here's my code: (PMDG Admins, if this contains copyrighted stuff from the manuals, please let me know and I'll take it down).

% PMDG B747-400 Fuel planner% By Frank Grivel% Last edited 17/05/2011 00:32clear variables%--------------------------% Weight information%--------------------------OEW = 178806; %kgsPax = input('Input passenger weight (kg): '); % Weight of passengersNum_Pax = round(Pax / 81.66876972); % Number of passengersCargo = input('Input cargo weight (kg): '); % Weight of cargoPayload = Pax + Cargo; % Payload weightZFW = OEW + Payload; % Zero Fuel Weight (kgs)if ZFW > 246143	error('The ZFW is too high, please reduce load.');endMinimum_Fuel = 24000/2.2046; % Minimum fuel (kgs)Alt_Weight = ZFW + Minimum_Fuel;if Alt_Weight > 285000	error('The landing weight at the alternate is too high, check your weights.')end%--------------------------% Direction of flight%--------------------------East_West = input('Is the flight eastbound or westbound (east - 1, west - 2)? ');if East_West > 2	error('Input 1 or 2 for respectively east or west.')elseif East_West < 1	error('Input 1 or 2 for respectively east or west.')end%--------------------------% Altitudes%--------------------------Flight_Levels = [300:10:420]';Max_FL_Weight = [0 395000 385000 367500 350000 335000 315000 305000 285000 272500 247500 250000 238000]';Opt_FL_Weight = [385000 367500 350000 335000 315000 305000 285000 272500 247500 250000 238000 227500 213000]';Max_Opt_Table = [Flight_Levels Max_FL_Weight Opt_FL_Weight];%--------------------------% Time/fuel burn tables%--------------------------Trip_Length = [400:400:8400]';Flight_Levels_Fuel = [310:10:410];Time_Minutes_410 = [66 (60*1)+41 (60*2)+30 (60*3)+21 (60*4)+13 (60*5)+0 (60*5)+48 (60*6)+43 (60*7)+30 (60*8)+21 (60*9)+12 (60*10)+0 (60*10)+48 (60*11)+43 (60*12)+31 (60*13)+22 (60*14)+12 (60*15)+2 (60*15)+54 (60*16)+43 (60*17)+31]';Time_Minutes_390 = [66 (60*1)+41 (60*2)+30 (60*3)+21 (60*4)+13 (60*5)+0 (60*5)+48 (60*6)+43 (60*7)+30 (60*8)+21 (60*9)+12 (60*9)+58 (60*10)+48 (60*11)+42 (60*12)+31 (60*13)+21 (60*14)+12 (60*15)+0 (60*15)+54 (60*16)+42 (60*17)+31]';Time_Minutes_370 = [65 (60*1)+39 (60*2)+29 (60*3)+19 (60*4)+12 (60*4)+59 (60*5)+46 (60*6)+42 (60*7)+28 (60*8)+18 (60*9)+9 (60*9)+55 (60*10)+45 (60*11)+39 (60*12)+31 (60*13)+18 (60*14)+9 (60*14)+47 (60*15)+51 (60*16)+39 (60*17)+28]';Time_Minutes_350 = [65 (60*1)+39 (60*2)+28 (60*3)+18 (60*4)+10 (60*4)+57 (60*5)+44 (60*6)+40 (60*7)+25 (60*8)+15 (60*9)+6 (60*9)+51 (60*10)+41 (60*11)+35 (60*12)+31 (60*13)+13 (60*14)+5 (60*14)+42 (60*15)+46 (60*16)+33 (60*17)+22]';Time_Minutes_330 = [64 (60*1)+37 (60*2)+26 (60*3)+18 (60*4)+8 (60*4)+56 (60*5)+42 (60*6)+38 (60*7)+23 (60*8)+13 (60*9)+3 (60*9)+47 (60*10)+37 (60*11)+31 (60*12)+31 (60*13)+9 (60*14)+1 (60*14)+38 (60*15)+42 (60*16)+30 (60*17)+20]';Time_Minutes_310 = [60 (60*1)+34 (60*2)+22 (60*3)+15 (60*4)+5 (60*4)+53 (60*5)+39 (60*6)+35 (60*7)+20 (60*8)+8 (60*8)+57 (60*9)+42 (60*10)+32 (60*11)+25 (60*12)+31 (60*13)+3 (60*13)+54 (60*14)+31 (60*15)+35 (60*16)+23 (60*17)+16]';Time_Minutes_400 = (Time_Minutes_410 + Time_Minutes_390) ./ 2;Time_Minutes_380 = (Time_Minutes_390 + Time_Minutes_370) ./ 2;Time_Minutes_360 = (Time_Minutes_370 + Time_Minutes_350) ./ 2;Time_Minutes_340 = (Time_Minutes_350 + Time_Minutes_330) ./ 2;Time_Minutes_320 = (Time_Minutes_330 + Time_Minutes_310) ./ 2;Time_Minutes = [Time_Minutes_410 Time_Minutes_400 Time_Minutes_390 Time_Minutes_380 Time_Minutes_370 Time_Minutes_360 Time_Minutes_350 Time_Minutes_340 Time_Minutes_330 Time_Minutes_320 Time_Minutes_310];Time_Average = zeros(21,1);for m = 1:21    	Time_Average(m) = (sum(Time_Minutes(m,1:11))/11);endFuel_Burn_410 = [15.4 21.1 28.1 33.1 39.9 46.7 54.9 61.7 69.0 76.7 84.4 89.8 100.1 108.0 117.0 124.7 135.2 143.3 153.3 161.5 172.4]';Fuel_Burn_390 = [15.6 21.4 28.4 32.9 39.7 46.6 55.0 62.0 69.2 76.8 84.2 89.5 100.3 107.8 117.4 124.1 135.4 143.8 153.7 161.9 172.8]';Fuel_Burn_370 = [16.0 21.8 28.7 33.2 40.1 46.8 55.1 61.8 69.0 76.8 84.5 89.9 100.8 107.5 117.2 124.8 135.3 143.2 153.4 161.6 172.4]';Fuel_Burn_350 = [16.2 22.2 29.3 34.0 41.0 47.9 56.3 63.1 70.3 79.4 85.3 90.7 101.6 108.5 116.8 124.6 134.9 143.1 152.8 161.1 171.8]';Fuel_Burn_330 = [16.3 22.7 30.1 35.2 42.5 49.2 58.2 77.0 77.3 80.0 90.7 93.4 104.3 110.7 118.3 127.0 137.4 145.6 156.0 164.2 175.1]';Fuel_Burn_310 = [16.7 23.4 31.3 36.7 44.3 51.4 60.9 80.0 75.9 83.6 95.5 97.5 108.9 115.2 122.9 137.0 142.0 150.1 160.1 172.8 182.3]';Fuel_Burn_400 = (Fuel_Burn_410 + Fuel_Burn_390) ./ 2;Fuel_Burn_380 = (Fuel_Burn_390 + Fuel_Burn_370) ./ 2;Fuel_Burn_360 = (Fuel_Burn_370 + Fuel_Burn_350) ./ 2;Fuel_Burn_340 = (Fuel_Burn_350 + Fuel_Burn_330) ./ 2;Fuel_Burn_320 = (Fuel_Burn_330 + Fuel_Burn_310) ./ 2;Fuel_Burn = [Fuel_Burn_410 Fuel_Burn_400 Fuel_Burn_390 Fuel_Burn_380 Fuel_Burn_370 Fuel_Burn_360 Fuel_Burn_350 Fuel_Burn_340 Fuel_Burn_330 Fuel_Burn_320 Fuel_Burn_310] .* 1000;Adjust_410 = 317;Adjust_390 = 400;Adjust_370 = 454;Adjust_350 = 390;Adjust_330 = 308;Adjust_310 = 145;Adjust_400 = (Adjust_410 + Adjust_390)/2;Adjust_380 = (Adjust_390 + Adjust_370)/2;Adjust_360 = (Adjust_370 + Adjust_350)/2;Adjust_340 = (Adjust_350 + Adjust_330)/2;Adjust_320 = (Adjust_330 + Adjust_310)/2;Adjust_Table = [Adjust_410 Adjust_400 Adjust_390 Adjust_380 Adjust_370 Adjust_360 Adjust_350 Adjust_340 Adjust_330 Adjust_320 Adjust_310];%--------------------------% Alternate information%--------------------------Alt_Length = [100:100:500]';Alt_Time = [30 41 57 70 80]';Alt_Fuel_195 = [3000 5000 6400 8000 9500]';Alt_Fuel_216 = [3300 5250 7100 9000 10200]';Alt_Fuel_246 = [3600 6000 7800 9700 11500]';Alt_Fuel_Table = [Alt_Fuel_195 Alt_Fuel_216 Alt_Fuel_246];%--------------------------% Route length information%--------------------------Route_Length = input('Input distance to fly (NM): ');if Route_Length > 8400	error('The route is too long.')endAlternate_Dist = input('Input distance to Alternate (NM): ');if Alternate_Dist > 500	error('The distance to alternate is too long.')endWind_Correction = input('Input wind correction (knots): ');Matrix_NR = Route_Length/400;Matrix_R = round(Matrix_NR);if Route_Length >= 400		if Matrix_R > Matrix_NR     	Matrix_index_upper = Matrix_R;    	Matrix_index_lower = Matrix_R - 1;	elseif Matrix_R < Matrix_NR    	Matrix_index_upper = Matrix_R + 1;    	Matrix_index_lower = Matrix_R;	elseif Matrix_NR == Matrix_R    	Matrix_index_upper = Matrix_R;    	Matrix_index_lower = Matrix_R;	end	Distance_Wind_Correct = (((Time_Average(Matrix_index_upper) - Time_Average(Matrix_index_lower)) / 400) * (Route_Length - Trip_Length(Matrix_index_lower)) + Time_Average(Matrix_index_lower) * Wind_Correction)/60;	Route_NAM = Route_Length + Distance_Wind_Correct;	elseif Route_Length < 400		Distance_Wind_Correct = (Time_Average(1)/400) * Route_Length * (Wind_Correction / 60);	Route_NAM = Route_Length + Distance_Wind_Correct;	end%----------------------------% Alternate fuel calculations%----------------------------Alt_Matrix_NR = Alternate_Dist/100;Alt_Matrix_R = round(Alt_Matrix_NR);if Alternate_Dist >= 100   	if Alt_Matrix_R > Alt_Matrix_NR    	Alt_Matrix_index_upper = Alt_Matrix_R;    	Alt_Matrix_index_lower = Alt_Matrix_R - 1;	elseif Alt_Matrix_R < Alt_Matrix_NR    	Alt_Matrix_index_upper = Alt_Matrix_R + 1;    	Alt_Matrix_index_lower = Alt_Matrix_R;	elseif Alt_Matrix_NR == Alt_Matrix_R    	Alt_Matrix_index_upper = Alt_Matrix_R;    	Alt_Matrix_index_lower = Alt_Matrix_R;	end		if Alt_Weight <= 215500    	Alt_Fuel = (Alt_Fuel_Table(Alt_Matrix_index_upper,1) - Alt_Fuel_Table(Alt_Matrix_index_lower,1))/100 * (Alternate_Dist - Alt_Length(Alt_Matrix_index_lower)) + Alt_Fuel_Table(Alt_Matrix_index_lower,1);	elseif Alt_Weight > 215500    	Alt_Fuel = (Alt_Fuel_Table(Alt_Matrix_index_upper,2) - Alt_Fuel_Table(Alt_Matrix_index_lower,2))/100 * (Alternate_Dist - Alt_Length(Alt_Matrix_index_lower)) + Alt_Fuel_Table(Alt_Matrix_index_lower,2);	elseif Alt_Weight > 245500    	Alt_Fuel = (Alt_Fuel_Table(Alt_Matrix_index_upper,3) - Alt_Fuel_Table(Alt_Matrix_index_lower,3))/100 * (Alternate_Dist - Alt_Length(Alt_Matrix_index_lower)) + Alt_Fuel_Table(Alt_Matrix_index_lower,3);	end	elseif Alternate_Dist < 100		if Alt_Weight <= 215500    	Alt_Fuel = (Alt_Fuel_Table(1,1))/100 * (Alternate_Dist);	elseif Alt_Weight > 215500    	Alt_Fuel = (Alt_Fuel_Table(1,2))/100 * (Alternate_Dist);	elseif Alt_Weight > 245500    	Alt_Fuel = (Alt_Fuel_Table(1,3))/100 * (Alternate_Dist);	end	endContingency_min = input('How much contingency fuel would you like onboard (minutes)? ');Contingency_Fuel = (18000/2.2046) * (Contingency_min / 60);Planned_Landing_Weight = ZFW + Minimum_Fuel + Alt_Fuel + Contingency_Fuel;%--------------------------% Flight Level calculations%--------------------------Difference = zeros(1,13);for j = 1:13	Difference(j) = Opt_FL_Weight(j) - Planned_Landing_Weight;endMinimum_Diff = min(abs(Difference));FL_index = find(abs(Difference) == Minimum_Diff);if mod(FL_index,2) == 0	Even_FL = 1;elseif mod(FL_index,2) == 1	Even_FL = 0;endif Even_FL == 1 && East_West == 2	FL_index = FL_index - 1;elseif Even_FL == 0 && East_West == 1	FL_index = FL_index - 1;endFL_index_Fuel = FL_index - 1;if Flight_Levels(FL_index) < Flight_Levels_Fuel(FL_index_Fuel)	error('Flight levels do not match up.')elseif Flight_Levels(FL_index) > Flight_Levels_Fuel(FL_index_Fuel)	error('Flight levels do not match up.')endFinal_FL = Flight_Levels_Fuel(FL_index_Fuel);%--------------------------% Cruise fuel calculations%--------------------------Matrix_Fuel_NR = Route_Length/400;Matrix_Fuel_R = round(Matrix_Fuel_NR);if Route_Length >= 400	if Matrix_Fuel_R > Matrix_Fuel_NR    	Matrix_Fuel_index_upper = Matrix_Fuel_R;    	Matrix_Fuel_index_lower = Matrix_Fuel_R - 1;	elseif Matrix_Fuel_R < Matrix_Fuel_NR    	Matrix_Fuel_index_upper = Matrix_Fuel_R + 1;    	Matrix_Fuel_index_lower = Matrix_Fuel_R;	elseif Matrix_Fuel_NR == Matrix_Fuel_R    	Matrix_Fuel_index_upper = Matrix_Fuel_R;    	Matrix_Fuel_index_lower = Matrix_Fuel_R;	end	Basic_Fuel_Required = (((Fuel_Burn(Matrix_Fuel_index_upper,FL_index_Fuel) - Fuel_Burn(Matrix_Fuel_index_lower,FL_index_Fuel)) / 400) * (Route_Length - Trip_Length(Matrix_Fuel_index_lower)) + Fuel_Burn(Matrix_Fuel_index_lower,FL_index_Fuel));elseif Route_Length < 400		Basic_Fuel_Required = (Fuel_Burn(1,FL_index_Fuel)) / 400 * Route_Length;	end	Fuel_Adjust = ((Planned_Landing_Weight - 216000)/4500) * Adjust_Table(FL_index_Fuel);Taxi_time = input('How long is the taxi time (minutes)? ');Taxi_Fuel = Taxi_time * 40;%--------------------------% Final fuel & weights%--------------------------Fuel_at_takeoff = Basic_Fuel_Required + Fuel_Adjust + Minimum_Fuel + Alt_Fuel + Contingency_Fuel;Fuel_Required = Basic_Fuel_Required + Fuel_Adjust + Minimum_Fuel + Alt_Fuel + Contingency_Fuel + Taxi_Fuel;Stand_Gross_Weight = ZFW + Fuel_Required;Takeoff_Gross_Weight = ZFW + Fuel_at_takeoff;if Takeoff_Gross_Weight > 397000	error('The MTOW has been exceeded, check your weights.')end%--------------------------% Inital flight levels%--------------------------Difference_Initial_FL = zeros(1,13);for l = 1:13	Difference_Initial_FL(l) = Opt_FL_Weight(l) - Takeoff_Gross_Weight;endMinimum_Diff_TOFL = min(abs(Difference_Initial_FL));TOFL_index = find(abs(Difference_Initial_FL) == Minimum_Diff_TOFL);if TOFL_index > 1	if mod(TOFL_index,2) == 0    	Even_TOFL = 1;	elseif mod(TOFL_index,2) == 1    	Even_TOFL = 0;	end	if Even_TOFL == 1 && East_West == 2    	TOFL_index = TOFL_index - 1;	elseif Even_TOFL == 0 && East_West == 1    	TOFL_index = TOFL_index - 1;	endTOFL_index_Fuel = TOFL_index - 1;Takeoff_FL = Flight_Levels_Fuel(TOFL_index_Fuel);elseif TOFL_index == 1	if mod(TOFL_index,2) == 0    	Even_TOFL = 1;	elseif mod(TOFL_index,2) == 1    	Even_TOFL = 0;	end	if Even_TOFL == 1 && East_West == 2    	Takeoff_FL = 300;	elseif Even_TOFL == 0 && East_West == 1    	Takeoff_FL = 290;	endelseif TOFL_index == 12 	if mod(TOFL_index,2) == 0    	Even_TOFL = 1;	elseif mod(TOFL_index,2) == 1    	Even_TOFL = 0;	end	if Even_TOFL == 1 && East_West == 2    	TOFL_index = TOFL_index;	elseif Even_TOFL == 0 && East_West == 1    	TOFL_index = TOFL_index - 1;	endTOFL_index_Fuel = TOFL_index - 1;Takeoff_FL = Flight_Levels_Fuel(TOFL_index_Fuel);elseif TOFL_index == 13 	if mod(TOFL_index,2) == 0    	Even_TOFL = 1;	elseif mod(TOFL_index,2) == 1    	Even_TOFL = 0;	end	if Even_TOFL == 1 && East_West == 2    	TOFL_index = TOFL_index;	elseif Even_TOFL == 0 && East_West == 1    	TOFL_index = TOFL_index - 1;	endTOFL_index_Fuel = TOFL_index - 2;Takeoff_FL = Flight_Levels_Fuel(TOFL_index_Fuel);end%--------------------------% Outputs%--------------------------Distance = round(Route_NAM)Total_Payload = round(Payload)Zero_Fuel_Weight = round(ZFW)Planned_Landing_Weight = round(Planned_Landing_Weight)Alternate_Fuel = round(Alt_Fuel)Contingency_Fuel = round(Contingency_Fuel)Fuel_Required = round(Fuel_Required)Fuel_Burnoff = round(Basic_Fuel_Required + Fuel_Adjust)Taxi_Fuel = round(Taxi_Fuel)Stand_Gross_Weight = round(Stand_Gross_Weight)Takeoff_Gross_Weight = round(Takeoff_Gross_Weight)Final_Flight_Level = round(Final_FL)Initial_Flight_Level = round(Takeoff_FL)Num_Pax

Share this post


Link to post
Share on other sites
TOPCAT is better at fuel planning than FSBuild which is better at planning a route than it is planning fuel. That is about to change, for what it's worth the makers of TOPCAT are due to release Professional Flight Planner X in a few short months.
I don't believe TOPCAT takes into account the winds aloft.Michael Cubine

Share this post


Link to post
Share on other sites
I don't believe TOPCAT takes into account the winds aloft.Michael Cubine
Which is why us math buffs are around creating the stuff for free. Franks calculator looks pretty substantial, though I haven't looked any further than the text. I also have my own calculator in Google Docs, the link is in my signature.

Share this post


Link to post
Share on other sites

Cheers guys, some interesting posts.If I had more time I would do the calculation by hand; I've got it all printed out. I'm finding at the moment I am spending about 30-45 mins on pre flight with the Ocean stuff and that is with a fair amount of automation. This is as long as I really want to spend on planning things. Taking the manual approach with fuel planning is probably a step too far.I think for now I will just add more on and live with the slightly un realistic overload of fuel. Frank; the code looks impressive but MATLAB is a new concept to me; a google search has answered what Matlab is but can the code you've posted be turned into a running tool?Eric; I will try the calculator next time I am planning a med/long haul!CheersCraig

Share this post


Link to post
Share on other sites
Cheers guys, some interesting posts.If I had more time I would do the calculation by hand; I've got it all printed out. I'm finding at the moment I am spending about 30-45 mins on pre flight with the Ocean stuff and that is with a fair amount of automation. This is as long as I really want to spend on planning things. Taking the manual approach with fuel planning is probably a step too far.I think for now I will just add more on and live with the slightly un realistic overload of fuel. Frank; the code looks impressive but MATLAB is a new concept to me; a google search has answered what Matlab is but can the code you've posted be turned into a running tool?Eric; I will try the calculator next time I am planning a med/long haul!CheersCraig
Assuming you can use visual basic, I don't think it would be too hard to rewrite the commands... seeing as I'm free for the next few weeks, I'll try my hand at it. The only thing I'm really worried about with visual basic is that matrix manipulation isn't as easy as in MATLAB. But we shall see.Frank

Share this post


Link to post
Share on other sites

Ha,I'm afraid my programming days never went much beyond BASIC, Pascal & a little foray into C++. Haven't looked into computer programming for over 10years now!Craig

Share this post


Link to post
Share on other sites