Package: flightgear-data-aircrafts Version: 3.0.0-1 Severity: wishlist Tags: patch
https://answers.yahoo.com/question/index?qid=20060818093900AABI7C4 "The Seneca can be modified to carry more fuel, however the Seneca already has a terrible useful load capability. The engine-nacelle fuel tanks offered by Tom's Aircraft (STC SA2205SW, originally by Nayak Aviation) are auxiliary tanks and fuel must be transferred into the mains to be used, a process which takes just over an hour for their entire 30-gallon capacity. However, there are no gauges or indicators whatsoever of fuel level or fuel transfer. So the only possible way to "know" whether the fuel transferred or not is to watch the aircraft's factory fuel gauges and determine, after an hour of flight where you've added 30 gallons and burned 22-24, whether it looks like the gauges indicate roughly 3-4 gallons more per side than they indicated an hour before." The attached patch implements said optional tanks. Additionally, it corrects the max weight in the front and aft baggage holds to 100 pounds each (instead of 200). In "Equipment > Fuel and Payload", you can watch the nacelle tanks slowly[1] empty themselves into the main tanks during flight. There is no other way to know how much fuel remains in these tanks, just like in reality. Also, note that these tanks occupy space that was formerly available for cargo in reality, but was never implemented in FlightGear. And obviously, filling these tanks must be at the expense of payload. Like in most aircraft, one cannot take max fuel and max payload at the same time; it's a tradeoff. The fuel in these tanks increases the range of the SenecaII from 800 to 970 nmi (approximately; actual range depends on payload, wind and how well you fly...).
---------------------------------------------------------------------- Revision: 4de47308fec1a8d3354ed0e0846f4574a40bbb71 Parent: a1938d7b46898441959a01cf7a9fc145cc724d29 Author: Ludovic Brenta Date: 2014-08-31T17:43:00 Branch: org.flightgear.aircraft.SenecaII Changelog: * Add extra-long-range fuel tanks in the engine nacelles. Changes against parent a1938d7b46898441959a01cf7a9fc145cc724d29 patched Nasal/SenecaII.nas patched SenecaII-base.xml patched SenecaII-jsbsim.xml ============================================================ --- Nasal/SenecaII.nas 0787b6637818bae913fa8eb8862ad7a46dcde591 +++ Nasal/SenecaII.nas dd7b9f90bb5f27bfdaf6c0bcb895710d95a10de1 @@ -27,12 +27,17 @@ var timedUpdate = func { settimer( timedUpdate, 0 ); }; +var tanks = []; + var seneca_init = func { props.globals.initNode( "autopilot/CENTURYIII/controls/mode", 2, "INT" ); props.globals.initNode( "autopilot/CENTURYIII/controls/manual-trim", 0, "INT" ); props.globals.initNode( "autopilot/CENTURYIII/controls/disconnect", 0, "BOOL" ); ki266.new(0); + foreach( var n; props.globals.getNode("/consumables/fuel").getChildren("tank") ) { + append(tanks, FuelTank.new (n)); + } updateClients = []; foreach( var n; props.globals.getNode("/systems/fuel").getChildren( "fuel-pump" ) ) { append( updateClients, FuelPump.new( n ) ); @@ -154,14 +159,12 @@ var FuelTank = {}; var FuelTank = {}; -FuelTank.new = func(nr) { +FuelTank.new = func(base) { var obj = {}; obj.parents = [FuelTank]; - obj.baseN = props.globals.getNode( "/consumables/fuel/tank[" ~ nr ~ "]", 1 ); - obj.emptyN = obj.baseN.initNode("empty", 0, "BOOL" ); - obj.capacityN = obj.baseN.initNode("capacity-gal_us", 0.0 ); - obj.contentN = obj.baseN.initNode("level-gal_us", 0.0 ); - + obj.emptyN = base.initNode("empty", 0, "BOOL" ); + obj.capacityN = base.initNode("capacity-gal_us", 0.0 ); + obj.contentN = base.initNode("level-gal_us", 0.0 ); return obj; }; @@ -194,11 +197,7 @@ FuelPump.new = func(base) { } obj.serviceableNode = base.initNode( "serviceable", 1, "BOOL" ); obj.sourceTankNode = base.initNode( "source-tank", -1, "INT" ); - - obj.tanks = []; - append( obj.tanks, FuelTank.new( 0 ) ); - append( obj.tanks, FuelTank.new( 1 ) ); - obj.destinationTank = FuelTank.new( base.getNode("destination-tank").getValue() ); + obj.destinationTankNode = base.initNode("destination-tank", -1, "INT"); obj.fuel_flow_gphNode = base.getNode( "fuel-flow-gph", 1 ); return obj; }; @@ -210,11 +209,15 @@ FuelPump.update = func(dt) { !me.serviceableNode.getValue() and return; var sourceTank = me.sourceTankNode.getValue(); - if(sourceTank == nil or sourceTank < 0 or sourceTank >= size(me.tanks) ) return + if (sourceTank == nil or sourceTank < 0 or sourceTank >= size(tanks)) return; - #if source is empty, go away - me.tanks[sourceTank].empty() and return; + var destinationTank = me.destinationTankNode.getValue(); + if (destinationTank == nil or destinationTank < 0 or destinationTank >= size (tanks)) + return; + + if (tanks[sourceTank].empty()) return; + # compute fuel flow var flow_gph = me.fuel_flow_gphNode.getValue(); @@ -223,19 +226,19 @@ FuelPump.update = func(dt) { var transfer_fuel = flow_gph * dt / 3600; - #consume fuel, up to the available source-level - #and destination-space - var source_level = me.tanks[sourceTank].level(); + # consume fuel, up to the available source-level and destination-space + var source_level = tanks[sourceTank].level(); if( transfer_fuel > source_level ) transfer_fuel = source_level; - var destination_space = me.destinationTank.capacity() - me.destinationTank.level(); + var destination_space = tanks[destinationTank].capacity() + - tanks[destinationTank].level(); if( transfer_fuel > destination_space ) transfer_fuel = destination_space; - me.tanks[sourceTank].level( source_level - transfer_fuel ); - me.destinationTank.level( me.destinationTank.level() + transfer_fuel ); + tanks[sourceTank].level( source_level - transfer_fuel ); + tanks[destinationTank].level( tanks[destinationTank].level() + transfer_fuel ); } ############################################### ============================================================ --- SenecaII-base.xml f31d886b1561c549339182f8777619a31d9c2da2 +++ SenecaII-base.xml dfe69acd8f053d827aa2e97ffbc931138000b541 @@ -360,6 +360,8 @@ <path>controls/fuel/tank[1]/fuel_selector-position</path> <path>consumables/fuel/tank[0]/level-lbs</path> <path>consumables/fuel/tank[1]/level-lbs</path> + <path>consumables/fuel/tank[2]/level-lbs</path> + <path>consumables/fuel/tank[3]/level-lbs</path> <path>fdm/jsbsim/inertia/pointmass-weight-lbs[0]</path> <path>fdm/jsbsim/inertia/pointmass-weight-lbs[1]</path> <path>fdm/jsbsim/inertia/pointmass-weight-lbs[2]</path> @@ -519,8 +521,40 @@ <unusable-gal_us type="double">2.5</unusable-gal_us> <level-gal_us type="double">50</level-gal_us> </tank> - <tank n="2"/> - <tank n="3"/> + <!-- +https://answers.yahoo.com/question/index?qid=20060818093900AABI7C4 + +The Seneca can be modified to carry more fuel, however the Seneca +already has a terrible useful load capability. The engine-nacelle fuel +tanks offered by Tom's Aircraft (STC SA2205SW, originally by Nayak +Aviation) are auxiliary tanks and fuel must be transferred into the +mains to be used, a process which takes just over an hour for their +entire 30-gallon capacity. However, there are no gauges or indicators +whatsoever of fuel level or fuel transfer. So the only possible way to +"know" whether the fuel transferred or not is to watch the aircraft's +factory fuel gauges and determine, after an hour of flight where +you've added 30 gallons and burned 22-24, whether it looks like the +gauges indicate roughly 3-4 gallons more per side than they indicated +an hour before. + --> + <tank n="2"> + <name type="string">Left Engine Nacelle</name> + <capacity-gal_us type="double">15.0</capacity-gal_us> + <unusable-gal_us type="double">0</unusable-gal_us> + <level-gal_us type="double">0</level-gal_us> + </tank> + <tank n="3"> + <name type="string">Right Engine Nacelle</name> + <capacity-gal_us type="double">15.0</capacity-gal_us> + <unusable-gal_us type="double">0</unusable-gal_us> + <level-gal_us type="double">0</level-gal_us> + </tank> + <tank n="4"> + <name type="string">Left carburettor</name> + </tank> + <tank n="5"> + <name type="string">Right carburettor</name> + </tank> </fuel> </consumables> <limits> @@ -684,15 +718,33 @@ </electrical> <fuel> <fuel-pump n="0"> - <name>L/H fuel pump</name> - <destination-tank type="int">2</destination-tank> + <name type="string">Left engine fuel pump</name> + <!-- the source tank is determined by the fuel selector --> + <destination-tank type="int">4</destination-tank> <fuel-flow-gph type="double">100</fuel-flow-gph> </fuel-pump> <fuel-pump n="1"> - <name>R/H fuel pump</name> - <destination-tank type="int">3</destination-tank> + <name type="string">Right engine fuel pump</name> + <!-- the source tank is determined by the fuel selector --> + <destination-tank type="int">5</destination-tank> <fuel-flow-gph type="double">100</fuel-flow-gph> </fuel-pump> + <fuel-pump n="2"> + <name type="string">Left auxiliary fuel pump</name> + <!-- always on and feeds the left wing tank. --> + <enabled type="bool">1</enabled> + <source-tank type="int">2</source-tank> + <destination-tank type="int">0</destination-tank> + <fuel-flow-gph type="double">14</fuel-flow-gph> + </fuel-pump> + <fuel-pump n="3"> + <name type="string">Right auxiliary fuel pump</name> + <!-- always on and feeds the right wing tank. --> + <enabled type="bool">1</enabled> + <source-tank type="int">3</source-tank> + <destination-tank type="int">1</destination-tank> + <fuel-flow-gph type="double">14</fuel-flow-gph> + </fuel-pump> </fuel> </systems> <instrumentation> @@ -779,13 +831,13 @@ <name type="string">Nose Baggage</name> <weight-lb alias="/fdm/jsbsim/inertia/pointmass-weight-lbs[6]"/> <min-lb type="double">0.0</min-lb> - <max-lb type="double">200.0</max-lb> + <max-lb type="double">100.0</max-lb> </weight> <weight> <name type="string">Aft Baggage</name> <weight-lb alias="/fdm/jsbsim/inertia/pointmass-weight-lbs[7]"/> <min-lb type="double">0.0</min-lb> - <max-lb type="double">200.0</max-lb> + <max-lb type="double">100.0</max-lb> </weight> </payload> </PropertyList> ============================================================ --- SenecaII-jsbsim.xml 292c723ad83288e1cb0bbb47bed292260af2829b +++ SenecaII-jsbsim.xml 84de2b214a1a74898f545b727fc6cbccbb1c3358 @@ -287,7 +287,7 @@ <pitch> 0.00 </pitch> <yaw> 0.00 </yaw> </orient> - <feed>2</feed> + <feed>4</feed> <thruster file="bhc-c2yf-2"> <!-- turning clockwise viewed from cockpit --> <location unit="IN"> @@ -315,7 +315,7 @@ <pitch> 0.00 </pitch> <yaw> 0.00 </yaw> </orient> - <feed>3</feed> + <feed>5</feed> <thruster file="bhc-c2yf-2"> <!-- turning counterclockwise viewed from cockpit --> <location unit="IN"> @@ -331,10 +331,11 @@ <sense>-1</sense> </thruster> </engine> - <!-- - two tanks, one each wing - 64gal/61.5 usable each side are longrange tanks - --> + + <!-- two tanks, one each wing. 64gal/61.5 usable each side + are longrange tanks. Because priority is zero, engines + do not draw directly from these tanks; they draw from the + carburettors instead, see below. --> <tank type="FUEL"> <!-- Tank Number 0 (left wing) --> <location unit="IN"> @@ -361,19 +362,54 @@ <type>AVGAS</type> <priority>0</priority> </tank> + + <!-- Two auxiliary tanks at the rear of the engine nacelles. + These are aftermarket modifications installed in the + baggage holds. See + http://www.onaircraft.com/products-services/auxiliary-fuel-tanks/ + --> <tank type="FUEL"> - <!-- Pseudo Tank Number 2 (left wing) --> + <!-- Left nacelle --> <location unit="IN"> <x>-31.5</x> + <y>-71.6</y> + <z>34.3</z> + </location> + <capacity unit="LBS">90</capacity> + <contents unit="LBS">0</contents> + <type>AVGAS</type> + <priority>0</priority> + </tank> + <tank type="FUEL"> + <!-- Right nacelle --> + <location unit="IN"> + <x>-31.5</x> + <y>71.6</y> + <z>34.3</z> + </location> + <capacity unit="LBS">90</capacity> + <contents unit="LBS">0</contents> + <type>AVGAS</type> + <priority>0</priority> + </tank> + + <!-- The carburettors in the engines. They are initially + empty. The primer and fuel pumps feed them from the main + tanks. The engines draw from them. --> + <tank type="FUEL"> + <!-- Left carburettor --> + <location unit="IN"> + <x>-31.5</x> <y>-75.4</y> <z>34.3</z> </location> <capacity unit="LBS">0.1</capacity> <contents unit="LBS">0.0</contents> <type>AVGAS</type> + <priority>1</priority> </tank> <tank type="FUEL"> - <!-- Pseudo Tank Number 3 (right wing) --> + <!-- Right carburettor --> <location unit="IN"> <x>-31.5</x> <y>75.4</y> @@ -382,6 +418,7 @@ <capacity unit="LBS">0.1</capacity> <contents unit="LBS">0.0</contents> <type>AVGAS</type> + <priority>1</priority> </tank> </propulsion> <!-- **********************************************************************
[1] "Slowly" if and only if the patch in #760077 is also applied. -- System Information: Debian Release: jessie/sid APT prefers testing APT policy: (10000, 'testing') Architecture: amd64 (x86_64) Kernel: Linux 3.14-2-amd64 (SMP w/8 CPU cores) Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/dash -- no debconf information