<?xml version="1.0"?>

<!--
***********************************************************************************
c172p, June 2015 
Fuel system for 2 different engines at choice, JSBSim FDM
***********************************************************************************
-->

<system name="fuel">
    <property type="bool" value="0">/engines/active-engine/already-started-in-session</property>

    <!-- *********************************************************************************** -->
    <!-- Main tanks: 0 and 1, Integral 2 and 3                                                                 -->
    <!-- Collector Tanks: 4, constant-level intermediate float chamber                       -->
    <!-- Fuel Flow Rates in pounds per second                                                -->
    <!-- *********************************************************************************** -->

    <channel name="Float Chamber">
        <!-- Give tank[4] priority regardless of engine is used -->
        <switch name="Float Chamber From Engine 0">
            <output>propulsion/tank[4]/priority</output>
            <default value="0"/>
            <test logic="AND" value="1">
                /engines/active-engine/killed EQ 0
            </test>
        </switch>
    </channel>

    <!-- ****************************************************** -->
    <!-- Collector Tank 4 level-maintenance                     -->
    <!-- ****************************************************** -->
    <channel name="To Tank6">
        <!-- from Tank 0 (to Collector Tank 4) -->
        <fcs_function name="propulsion/tank[0]/contents-volume-gal">
            <function>
                <quotient>
                    <p> propulsion/tank[0]/contents-lbs </p>
                    <p> propulsion/tank[0]/density-lbs_per_gal </p>
                </quotient>
            </function>
        </fcs_function>
        <switch name="fuel/from-tank0-to-tank4">
            <default value="0"/>
            <test logic="AND" value="0.1">
                propulsion/tank[0]/priority EQ 1 
                propulsion/tank[0]/contents-volume-gal GT propulsion/tank[0]/unusable-volume-gal
                /consumables/fuel/tank[4]/level-lbs LT 0.05
                propulsion/tank[4]/priority EQ 1
                accelerations/Nz GE 0
                fuel/tank EQ 0
            </test>
        </switch>

        <!-- from Tank 1 (to Collector Tank 4) -->
        <fcs_function name="propulsion/tank[1]/contents-volume-gal">
            <function>
                <quotient>
                    <p> propulsion/tank[1]/contents-lbs </p>
                    <p> propulsion/tank[1]/density-lbs_per_gal </p>
                </quotient>
            </function>
        </fcs_function>
        <switch name="fuel/from-tank1-to-tank4">
            <default value="0"/>
            <test logic="AND" value="0.1">
                propulsion/tank[1]/priority EQ 1 
                propulsion/tank[1]/contents-volume-gal GT propulsion/tank[1]/unusable-volume-gal
                /consumables/fuel/tank[4]/level-lbs LT 0.05
                propulsion/tank[4]/priority EQ 1
                accelerations/Nz GE 0
                fuel/tank EQ 0
            </test>
        </switch>

        <!-- from Tank 2 (to Collector Tank 4) -->
        <fcs_function name="propulsion/tank[2]/contents-volume-gal">
            <function>
                <quotient>
                    <p> propulsion/tank[2]/contents-lbs </p>
                    <p> propulsion/tank[2]/density-lbs_per_gal </p>
                </quotient>
            </function>
        </fcs_function>
        <switch name="fuel/from-tank2-to-tank4">
            <default value="0"/>
            <test logic="AND" value="0.1">
                propulsion/tank[2]/priority EQ 1
                propulsion/tank[2]/contents-volume-gal GT propulsion/tank[2]/unusable-volume-gal
                /consumables/fuel/tank[4]/level-lbs LT 0.05
                propulsion/tank[4]/priority EQ 1
                accelerations/Nz GE 0
                fuel/tank EQ 1
            </test>
        </switch>

        <!-- from Tank 3 (to Collector Tank 4) -->
        <fcs_function name="propulsion/tank[3]/contents-volume-gal">
            <function>
                <quotient>
                    <p> propulsion/tank[3]/contents-lbs </p>
                    <p> propulsion/tank[3]/density-lbs_per_gal </p>
                </quotient>
            </function>
        </fcs_function>
        <switch name="fuel/from-tank3-to-tank4">
            <default value="0"/>
            <test logic="AND" value="0.1">
                propulsion/tank[3]/priority EQ 1
                propulsion/tank[3]/contents-volume-gal GT propulsion/tank[3]/unusable-volume-gal
                /consumables/fuel/tank[4]/level-lbs LT 0.05
                propulsion/tank[4]/priority EQ 1
                accelerations/Nz GE 0
                fuel/tank EQ 1
            </test>
        </switch>

    </channel>

    <!-- Total from Tank 0 and Tank 1 to Collector Tank 4 -->
    <channel name="Total flow rate into tank 4">
        <summer name="tank0 and 1 to tank4">
            <input>fuel/from-tank0-to-tank4</input>
            <input>fuel/from-tank1-to-tank4</input>
            <input>fuel/from-tank2-to-tank4</input>
            <input>fuel/from-tank3-to-tank4</input>
            <output>propulsion/tank[4]/external-flow-rate-pps</output>
        </summer>
    </channel>


    <!-- ****************************************************** -->
    <!-- FLOW RATE from each MAIN TANK (consumption)            -->
    <!-- ****************************************************** -->

    <channel name="Total flow rates">
        <summer name="fuel/tank0-flow-rate">
            <input>-fuel/from-tank0-to-tank4</input>
            <output>propulsion/tank[0]/external-flow-rate-pps</output>
        </summer>
        <summer name="fuel/tank1-flow-rate">
            <input>-fuel/from-tank1-to-tank4</input>
            <output>propulsion/tank[1]/external-flow-rate-pps</output>
        </summer>

        <summer name="fuel/tank2-flow-rate">
            <input>-fuel/from-tank2-to-tank4</input>
            <output>propulsion/tank[2]/external-flow-rate-pps</output>
        </summer>
        <summer name="fuel/tank3-flow-rate">
            <input>-fuel/from-tank3-to-tank4</input>
            <output>propulsion/tank[3]/external-flow-rate-pps</output>
        </summer>
    </channel>
    
    <channel name="fuel-system">
        <switch name="/engines/active-engine/already-started-in-session">
            <default value="0"/>
            <test logic="AND" value="/engines/active-engine/already-started-in-session">
                /engines/active-engine/already-started-in-session GT 0
            </test>
            <test logic="AND" value="1">
                /controls/engines/active-engine EQ 0
                /fdm/jsbsim/propulsion/engine[0]/set-running GT 0
            </test>
             <test logic="AND" value="1">
                /controls/engines/active-engine EQ 1
                /fdm/jsbsim/propulsion/engine[1]/set-running GT 0
            </test>
            <output>/engines/active-engine/already-started-in-session</output>
        </switch>
    </channel>
</system>