P6DOF Propulsion System Definition

The propulsion system includes thrust producers, such as jet engines, ramjets/scramjets, and rockets (both liquid-propellant and solid-propellant), fuel tanks (which are containers for fuel and or oxidizer) and fuel transfers (which define how fuel will be transferred between tanks).

The propulsion_data block is used to define the propulsion system of a P6DOF object. There is a great deal of flexibility in the propulsion_data which allows a wide range of fuel system configurations. For example, the propulsion_data block for a Space Shuttle orbiter would include three SSME (engines), but no fuel tank or fuel transfer definitions. The propulsion_data block for a Space Shuttle external tank would include a fuel tank, but no engines or fuel transfer definitions. The fuel feed for each SSME (defined in the liquid_propellant_rocket blocks of the propulsion system of the orbiter) would identify the external tank fuel tank as their source of fuel. During runtime, the SSMEs would automatically draw fuel from the external tank’s fuel tank and when the external tank was jettisoned, the fuel flow would automatically be shutoff/terminated since there was no longer a connection.

Note

Users may add a WSF_P6DOF_FUEL to further define the fuel system, augmenting the fuel data provided in the propulsion_data block of the WSF_P6DOF_MOVER, and including support for things like bingo fuel states and other simple, top-level fuel-related data interaction.

propulsion_data … end_propulsion_data
propulsion_data

   // Engines/Thrust Producers
   engine <engine_type_name> <engine_base_type_name>
      rel_pos_x ...
      rel_pos_y ...
      rel_pos_z ...
      rel_yaw ...
      rel_pitch ...
      rel_roll ...
      fuel_feed ...
   end_engine

   // Fuel Tank Definition
   fuel_tank <fuel_tank_name>
      max_fuel_quantity ...
      current_fuel_qty ...
      max_flow_rate ...
      max_fill_rate ...
      max_xfer_rate ...
      cg_full_x ...
      cg_full_y ...
      cg_full_z ...
      cg_empty_x ...
      cg_empty_y ...
      cg_empty_z ...
   end_fuel_tank

   // Fuel Transfer
   fuel_transfer <fuel_transfer_name>
      source_tank ...
      target_tank ...
   end_fuel_transfer

   throttle_setting_mil ...
   throttle_setting_ab ...
   throttle_setting_reverser ...

   throttle_setting_yaw ...
   throttle_setting_pitch ...

end_propulsion_data

Engines/Thrust Producers

Each engine (thrust producer) instance on the vehicle is defined by an “engine” block. However, before an instance of an engine may be specified, the engine type must be defined.

Definitions of thrust producer types (including jet engines [turbojets and turbofans], ramjets/scramjets, liquid-propellant rocket engines, and solid-propellant rocket motors) are performed outside of a p6dof_object_type block (but still within a p6dof_object_types block). These define ‘types’ of engines which can then be referenced from within a engine block within a propulsion_data block within a p6dof_object_type block. For more information about creating thrust producer types, see P6DOF Thrust Producer Types.

The engine block defines how the engine is installed on a vehicle. The key parameters to include are relative position and attitude as well as the source of fuel. If no fuel source (fuel tank) is specified, the engine will not produce thrust, since it lacks fuel. The exception to this is a solid-propellant rocket motor, since its propellant is carried internally.

engine <engine_type_name> <engine_base_type_name> … end_engine
engine   TurbofanFighter   P6DOF_JET_ENGINE

      // Engine Relative Position with Airframe
      rel_pos_x ...
      rel_pos_y ...
      rel_pos_z ...

      // Engine Relative Attitude with Airframe
      rel_yaw ...
      rel_pitch ...
      rel_roll ...

      // Fuel Source for Engine
      fuel_feed ...

end_engine
rel_pos_x <length-value>

This is the x-location of the thrust point relative to the parent’s reference point using the parent’s body coordinate system.

rel_pos_y <length-value>

This is the y-location of the thrust point relative to the parent’s reference point using the parent’s body coordinate system.

rel_pos_z <length-value>

This is the z-location of the thrust point relative to the parent’s reference point using the parent’s body coordinate system.

rel_yaw <angle-value>

This specifies the yaw of the thrust point about its reference point relative to the parent’s body coordinate system.

rel_pitch <angle-value>

This specifies the pitch of the thrust point about its reference point relative to the parent’s body coordinate system.

rel_roll <angle-value>

This specifies the roll of the thrust point about its reference point relative to the parent’s body coordinate system.

fuel_feed <string>

This specifies the name of the fuel_tank from which the engine will draw fuel. Note – This should not be defined for a solid-propellant rocket motor thrust producer, since its propellant is carried internally.

Fuel Tank Definition

fuel_tank <fuel_tank_name> … end_fuel_tank

The fuel tank block provides a means to define tank parameters including fuel quantity, transfer rates, and center of gravity (cg). Multiple tanks can be defined, if desired, or a single tank may be used for simplification. In addition, a propulsion system does not have to contain a fuel tank; engines may draw fuel from tanks located in subobjects, for example. Conversely, an external fuel tank object has a propulsion system that only contains a fuel tank – no engines are included.

fuel_tank <string>
   max_fuel_quantity ...
   current_fuel_qty ...
   max_flow_rate ...
   max_fill_rate ...
   max_xfer_rate ...
   cg_full_x ...
   cg_full_y ...
   cg_full_z ...
   cg_empty_x ...
   cg_empty_y ...
   cg_empty_z ...
end_fuel_tank
max_fuel_quantity <mass-value>

This is the maximum quantity of fuel that can be contained in the tank.

current_fuel_qty <mass-value>

This is the current quantity of fuel that is in the tank.

max_flow_rate <mass-transfer-value>
This is the maximum flow rate that the tank can provide to the engine(s). For proper

operation, this flow rate should exceed the maximum demands than the engine(s) may demand.

max_fill_rate <mass-transfer-value>
This is the maximum flow rate that the tank can accept from an outside source, such as

an in-flight refueling source.

max_xfer_rate <mass-transfer-value>
This is the maximum flow rate that the tank can accept from another tank or provide

to another tank.

cg_full_x <length-value>
This is the x-location of the center of gravity (cg) of the fuel tank (when full)

relative to the reference point of the carrying vehicle, in body coordinates.

cg_full_y <length-value>
This is the y-location of the center of gravity (cg) of the fuel tank (when full)

relative to the reference point of the carrying vehicle, in body coordinates.

cg_full_z <length-value>
This is the z-location of the center of gravity (cg) of the fuel tank (when full)

relative to the reference point of the carrying vehicle, in body coordinates.

cg_empty_x <length-value>
This is the x-location of the center of gravity (cg) of the fuel tank (when empty)

relative to the reference point of the carrying vehicle, in body coordinates.

cg_empty_y <length-value>
This is the y-location of the center of gravity (cg) of the fuel tank (when empty)

relative to the reference point of the carrying vehicle, in body coordinates.

cg_empty_z <length-value>
This is the z-location of the center of gravity (cg) of the fuel tank (when empty)

relative to the reference point of the carrying vehicle, in body coordinates.

Fuel Transfer

Typically, fuel transfers are defined within the propulsion_data block. However, when external tanks (in subobjects) are present, fuel transfers may be defined outside of the propulsion system block (but still within the p6dof_object_type block).

fuel_transfer <fuel_transfer_name> … end_fuel_transfer

Regardless of whether a fuel transfer is defined within the propulsion_data block or the p6dof_object_type block, a fuel transfer always consists of a source tank and a target tank. During runtime, the source tank will attempt to transfer fuel to the target tank, limited by the transfer rates of the two tanks.

fuel_transfer Fuel_Xfer
   source_tank ...
   target_tank ...
end_fuel_transfer

Example fuel_transfer block :

p6dof_object_type DropTank-300 P6DOF_BASE_TYPE
   propulsion_data
      fuel_tank DropTank
         ...
      end_fuel_tank
   end_propulsion_data
end_p6dof_object_type

p6dof_object_type FuelTransferExample P6DOF_BASE_TYPE
   subobject SubobjectTank DropTank-300
      ...
   end_subobject

   fuel_transfer DropTankToMainXfer
      source_tank SubobjectTank.DropTank
      target_tank MainFuelTank
   end_fuel_transfer
end_p6dof_object_type
source_tank <string>
The source tank is defined by its string name. Source tanks can be access on

sub-objects by referencing the sub-object by name, then the source tank name (as shown above).

target_tank <string>
The target tank is defined by its string name. Target tanks can be access on

sub-objects by referencing the sub-object by name, then the target tank name (as shown above).

Throttle Settings

These define the control input for throttles, thurst vectoring controls, and thrust reversers. When these are defined in the propulsion_data block rather than the engine type definition, the definitions apply to all engines on the vehicle rather than only a particular engine. In most cases, defining in the propulsion_data block is best.

throttle_setting_mil <string>
This specifies the control_value defined in flight_controls that will be used

to control the MIL (military) power throttle setting. This can be done at the engine-level or in the propulsion_data of the p6dof_object_type, although in most cases, defining in the propulsion_data block is best.

throttle_setting_ab <string>
This specifies the control_value defined in flight_controls that will be used

to control the AB (afterburner) power throttle setting. This can be done at the engine-level or in the propulsion_data of the p6dof_object_type, although in most cases, defining in the propulsion_data block is best.

throttle_setting_reverser <string>
This specifies the control_value defined in flight_controls that will be used

to control the thrust-reverser control setting. This can be done at the engine-level or in the propulsion_data of the p6dof_object_type, although in most cases, defining in the propulsion_data block is best.

throttle_setting_yaw <string>
This specifies the control_value defined in flight_controls that will be used

to control the yaw thrust vectoring control setting. This can be done at the engine-level or in the propulsion_data of the p6dof_object_type, although in most cases, defining in the propulsion_data block is best.

throttle_setting_pitch <string>
This specifies the control_value defined in flight_controls that will be used

to control the pitch thrust vectoring control setting. This can be done at the engine-level or in the propulsion_data of the p6dof_object_type, although in most cases, defining in the propulsion_data block is best.

Return to p6dof_object_types or p6dof_object_type