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

Reply via email to