JSBSim Buoyant forces: Difference between revisions

From FlightGear wiki
Jump to navigation Jump to search
Line 233: Line 233:
  </system>
  </system>
  <system file="airship_added_mass"/>
  <system file="airship_added_mass"/>
</syntaxhighlight lang="xml">
</syntaxhighlight>


=== Modelling heat transfer ===
=== Modelling heat transfer ===
Line 246: Line 246:


For an airship with a single ellipsoid gas cell (like most pressure airships) this could be expressed as follows (from [http://gitorious.org/anders-hangar/znp-k US Navy ZNP-K / Goodyear K-type airship]):
For an airship with a single ellipsoid gas cell (like most pressure airships) this could be expressed as follows (from [http://gitorious.org/anders-hangar/znp-k US Navy ZNP-K / Goodyear K-type airship]):
<syntaxhighlight lang="xml">
  <heat>
  <heat>
   <function name="buoyant_forces/gas-cell/dU_conduction">
   <function name="buoyant_forces/gas-cell/dU_conduction">
Line 276: Line 277:
   </function>
   </function>
  </heat>
  </heat>
</syntaxhighlight>


For the ballonets a similar formulation can be used, but with the gas cell temperature instead of the atmosphere temperature.
For the ballonets a similar formulation can be used, but with the gas cell temperature instead of the atmosphere temperature.

Revision as of 21:10, 6 April 2014

JSBSim has support for buoyant gas cells. This page will attempt to explain how to configure them for a JSBSim aircraft.

FGGasCell and FGBallonet

A gas cell models one container (cell) of buoyant gas. It may contain zero or more ballonets (i.e. containers of air). All gas cells in a FDM configuration are declared in the <buoyant_forces> section.

The physical model for FGGasCell and FGBallonet is based on the general gas law.

Configuration File Format

<buoyant_forces>
  <gas_cell type="{HYDROGEN | HELIUM | AIR}">
    <location unit="{M | IN | ...}">
      <x> {number} </x>
      <y> {number} </y>
      <z> {number} </z>
    </location>
    <x_width unit="{M | IN | ...}"> {number} </x_width>
    <y_width unit="{M | IN | ...}"> {number} </y_width>
    <z_width unit="{M | IN | ...}"> {number} </z_width>
    <x_radius unit="{M | IN | ...}"> {number} </x_radius>
    <y_radius unit="{M | IN | ...}"> {number} </y_radius>
    <z_radius unit="{M | IN | ...}"> {number} </z_radius>
    <max_overpressure unit="{PA | PSI | ...}"> {number} </max_overpressure>
    <valve_coefficient unit="{M4*SEC/KG | FT4*SEC/SLUG}"> {number} </valve_coefficient>
    <fullness> {number} </fullness>  
    <heat>
      {heat transfer coefficient functions} [lbs ft / sec]
    </heat>
    <ballonet>
      <location unit="{M | IN | ...}">
        <x> {number} </x>
        <y> {number} </y>
        <z> {number} </z>
      </location>
      <x_width unit="{M | IN | ...}"> {number} </x_width>
      <y_width unit="{M | IN | ...}"> {number} </y_width>
      <z_width unit="{M | IN | ...}"> {number} </z_width>
      <x_radius unit="{M | IN | ...}"> {number} </x_radius>
      <y_radius unit="{M | IN | ...}"> {number} </y_radius>
      <z_radius unit="{M | IN | ...}"> {number} </z_radius>
      <max_overpressure unit="{PA | PSI | ...}"> {number} </max_overpressure>
      <valve_coefficient unit="{M4*SEC/KG | FT4*SEC/SLUG}"> {number} </valve_coefficient>
      <fullness> {number} </fullness>  
      <heat>
       {heat transfer coefficient functions} [lb ft / (sec Rankine)]
      </heat>
      <blower_input>
       {input air flow function} [ft^3 / sec]
      </blower_input>
    </ballonet>
  </gas_cell>
</buoyant_forces>

Parameter definitions

Gas cell element
type type of gas in the cell. One of HYDROGEN, HELIUM or AIR.
location location of the centre of the cell in the structural frame of the aircraft. This is were the forces and mass of the cell are applied.
{x/y/z}_radius radius of both ends of the cell in the respective direction.
{x/y/z}_width width (excluding the radius) of the cell in the respective direction.
fullness initial fullness of the cell, normally between 0 and 1. Values above 1 initialize the cell at pressure.
max_overpressure maximum pressure in the cell. In case of excessive pressure gas is automatically valved off.
valve_coefficient the capacity of the manual gas valve. The valve is considered to be located at the top of the cell. The valve coefficient determine the flow out of the cell according to dVolume/dt = ValveCoefficient * DeltaPressure.
heat zero or more FGFunction:s describing the heat flow from the atmosphere into the gas cell. Unit: [lb ft / (sec Rankine)]. If there are no heat transfer functions at all the cell temperature will always be equal that of the surrounding atmosphere. A constant function returning 0 results in adiabatic behaviour, i.e. no heat transfer at all.
Ballonet element
There can be zero or more ballonets in a gas cell.
location location of the centre of the ballonet in the structural frame of the aircraft. This is were the forces and mass of the ballonet are applied.
{x/y/z}_radius radius of both ends of the ballonet in the respective direction.
{x/y/z}_width width (excluding any radius) of the ballonet in the respective direction.
max_overpressure maximum pressure in the ballonet. In case of excessive pressure air is automatically valved off to the atmosphere.
valve_coefficient the capacity of the exit valve between the ballonet and the atmosphere. The valve coefficient determine the flow out of the ballonet according to dVolume/dt = ValveCoefficient * DeltaPressure.
heat zero or more FGFunction:s describing the heat flow from the enclosing gas cell into the ballonet. Unit: [lb ft / (sec Rankine)]. The heat flowing to the ballonet will be deducted from the enclosing gas cell.
blower_input one FGFunction describing the air flow into the ballonet. Unit: [ft3 / sec] at the temperature and pressure of the ballonet.

Notes

  • Gas cell and ballonet shape
    • The shape of a cell or ballonet must be specified. It determines the maximum volume of the cell or ballonet and its inertia properties.
    • The supported cell and ballonet shapes are ellipsoid (3 radii given) and cylindrical (2 equal radii and one width given). For other combinations the inertia reverts to that of a point mass.

Examples

There are several different types of buoyant aircraft that can be simulated, among them unpressurized and pressurized gas balloons, rigid (unpressurized) airships and pressure airships (blimps and semi-rigid airships).

  • Unpressurized gas balloons. The pressure in the gas cell is kept at that of the atmosphere and the cell's volume will vary with the surrounding air pressure. If the maximum volume of the gas cell is exceeded gas will be lost to the atmosphere. Example: ZF Navy free balloon.
  • Pressurized gas balloons. The gas pressure may exceed that of the surrounding atmosphere (e.g. when the maximum volume has been reached or due to stretching of the envelope). Example: weather balloon.
  • Rigid (unpressurized) airships. The gas cells are kept at atmosphere pressure and vary in volume. The rigid outer shape of the hull maintains its shape regardless of the volume of the gas cells. Example: Zeppelin LZ 121 Nordstern.
  • Pressure airships. The gas cells are kept at a higher pressure than the surrounding atmosphere by means of ballonets (air bladders inside the gas cell) that compensate for volume changes of the lifting gas. As a result the envelope (the outer skin of the gas cells) is kept at its maximum volume and maintains its shape. Examples: Submarine Scout, Zeppelin NT, US Navy ZNP-K / Goodyear K-type airship.

Modelling added mass

When a body immersed in a fluid accelerates its inertia is not only determined by its inherent mass properties but also by some of the fluid that surrounds the body. If the density of the body is not significantly larger than that of the fluid this effect, usually called added or virtual mass, needs to be taken into account.

For buoyant aircraft in JSBSim added mass can be modelled using external forces and the airship_added_mass.xml system available in fgdata/Aircraft/Generic/JSBSim/Systems/. This model is based on NACA report 184 (Max M. Munk, "Aerodynamic forces on airship hulls", 1924).

To use this system a set of external forces need to be defined which will be used to transmit forces and moments due to added mass. A template for the forces needed follows below:

 <external_reactions>
   <force name="added-mass-bx" frame="BODY">
     <location unit="">
       { AERORP }
     </location>
     <direction>
       <x> 1.0 </x>
       <y> 0.0 </y>
       <z> 0.0 </z>
     </direction>
   </force>
   <force name="added-mass-by" frame="BODY">
     <location unit="">
       { AERORP }
     </location>
     <direction>
       <x> 0.0 </x>
       <y> 1.0 </y>
       <z> 0.0 </z>
     </direction>
   </force>
   <force name="added-mass-bz" frame="BODY">
     <location unit="">
       { AERORP }
     </location>
     <direction>
       <x> 0.0 </x>
       <y> 0.0 </y>
       <z> 1.0 </z>
     </direction>
   </force>
   <force name="added-mass-pitch[0]" frame="BODY">
     <location unit="">
       <x> AERORP X </x>
       <y> AERORP Y </y>
       <z> AERORP Z - 0.3048 </z>
     </location>
     <direction>
       <x> 1.0 </x>
       <y> 0.0 </y>
       <z> 0.0 </z>
     </direction>
   </force>
   <force name="added-mass-pitch[1]" frame="BODY">
     <location unit="M">
       <x> AERORP X </x>
       <y> AERORP Y </y>
       <z> AERORP Z + 0.3048 </z>
     </location>
     <direction>
       <x> 1.0 </x>
       <y> 0.0 </y>
       <z> 0.0 </z>
     </direction>
   </force>
   <force name="added-mass-yaw[0]" frame="BODY">
     <location unit="M">
       <x> AERORP X </x>
       <y> AERORP Y - 0.3048 </y>
       <z> 0.0 </z>
     </location>
     <direction>
       <x> 1.0 </x>
       <y> 0.0 </y>
       <z> 0.0 </z>
     </direction>
   </force>
   <force name="added-mass-yaw[1]" frame="BODY">
     <location unit="M">
       <x> AERORP X </x>
       <y> AERORP Y + 0.3048 </y>
       <z> 0.0 </z>
     </location>
     <direction>
       <x> 1.0 </x>
       <y> 0.0 </y>
       <z> 0.0 </z>
     </direction>
   </force>
 </external_reactions>

The added mass system is configured with the total volume of the hull (aero/constants/volume-ft3), the sum of the squares of the length and maximum diameter of the hull (aero/constants/length-diameter-ft2) and three coefficients (aero/constants/added-mass/k-axial, aero/constants/added-mass/k-traverse and aero/constants/added-mass/k-rotational). The coefficients are set based on the fitness ratio of the hull (length over diameter) and can be interpolated from the table last in (Max M. Munk, "Aerodynamic forces on airship hulls", NACA report 184, 1924). Note that the coefficients entered for this system should have reversed sign compared to those in the report (i.e. be negative).

A typical setup of the added mass system looks like this (from US Navy ZNP-K / Goodyear K-type airship):

 <system name="constants">
  <!-- Aerodynamic constants. -->
  <property value="249.20"> aero/constants/length-ft </property>
  <property value="57.85"> aero/constants/diameter-ft </property>
  <property value="65447.3"> aero/constants/length-diameter-ft2 </property>
  <property value="425000.0"> aero/constants/volume-ft3 </property>
  
  <property value="-0.08"> aero/constants/added-mass/k-axial </property>
  <property value="-0.88"> aero/constants/added-mass/k-traverse </property>
  <property value="-0.65"> aero/constants/added-mass/k-rotational </property>
 </system>
 <system file="airship_added_mass"/>

Modelling heat transfer

As seen in the list of parameters above, buoyant forces puts the burden of modelling heat the transfer between the gas cell and the environment and between the gas cell and any ballonets on the user. This is due to various configurations having different properties and leaving the possibilities open is JSBSim's approach.

One general but somewhat simplified view of heat transfer would divide it into the following parts:

  • Heat transfer through conduction. The heat transferred per time unit is the product of the conductivity of the envelope material, the surface area between the gas and the atmosphere and the difference in temperature between the gas and the atmosphere.
  • Heat transfer through black body radiation. The heat transferred per time unit is the product of Stefan-Boltzmann's constant, the emissivity of the envelope material, the surface area between the gas and the atmosphere and the difference between atmosphere temperature to the power of 4 and the the gas temperature to the power of 4.

The formulation of both parts ignore conduction within the gas cell.

For an airship with a single ellipsoid gas cell (like most pressure airships) this could be expressed as follows (from US Navy ZNP-K / Goodyear K-type airship):

 <heat>
   <function name="buoyant_forces/gas-cell/dU_conduction">
     <product>
       <value> 35685.00 </value> < !-- Surface area [ft2] -- >
       <value>     0.05 </value> < !-- Conductivity [lb / (K ft sec)] (Guess) -- >
       <difference>
         <property> atmosphere/T-R </property>
         <property> buoyant_forces/gas-cell/temp-R </property>
       </difference>
     </product>
   </function>
   <function name="buoyant_forces/gas-cell/dU_radiation">
     <product>
       <value> 0.1714e-8 </value> < !-- Stefan-Boltzmann's constant
                                        [Btu / (h ft^2 R^4)] -- >
       <value>       0.2 </value> < !-- Emissivity [0,1] (Guess) -- >
       <value>   35685.0 </value> < !-- Surface area [ft2] -- >
       <difference>
         <pow>
           <property> atmosphere/T-R </property>
           <value> 4.0 </value>
         </pow>
         <pow>
           <property> buoyant_forces/gas-cell/temp-R </property>
           <value> 4.0 </value>
         </pow>
       </difference>
     </product>
   </function>
 </heat>

For the ballonets a similar formulation can be used, but with the gas cell temperature instead of the atmosphere temperature.

For a traditional rigid airship with several cylindrical gas cells a first approximation would be to only use the surface area towards the atmosphere in the formulation above and ignore heat exchange with the neighbouring gas cells.

Sources