SixDOF Propulsion System Definition¶
The propulsion system includes thrust producers, such as turbojet 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 SixDOF 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_SIX_DOF_FUEL to further define the fuel system, augmenting the fuel data provided in the propulsion_data block of the WSF_SIX_DOF_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 // Commands below for WSF_RIGID_BODY_SIX_DOF_MOVER only 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 turbine-driven jet engines, ramjets/scramjets, liquid-propellant rocket engines, and solid-propellant rocket motors) are performed outside of a command:WSF_SIX_DOF_MOVER.vehicle_type block (but within a six_dof_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 rigid_body_vehicle_type or point_mass_vehicle_type block. For more information about creating thrust producer types, see SixDOF 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 fuel tank is created on instantiation.
- engine <engine_type_name> <engine_base_type_name> … end_engine¶
engine TurbofanFighter TURBOFAN_TYPE_V // 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 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 rigid_body_vehicle_type or point_mass_vehicle_type block).
- fuel_transfer <fuel_transfer_name> … end_fuel_transfer¶
Regardless of whether a fuel transfer is defined within the propulsion_data block or a vehicle 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 :
point_mass_vehicle_type DropTank-300 BASE_TYPE propulsion_data fuel_tank DropTank ... end_fuel_tank end_propulsion_data end_point_mass_vehicle_type point_mass_vehicle_type FuelTransferExample BASE_TYPE subobject SubobjectTank DropTank-300 ... end_subobject fuel_transfer DropTankToMainXfer source_tank SubobjectTank.DropTank target_tank MainFuelTank end_fuel_transfer end_point_mass_vehicle_type
Throttle Settings (RB6-only)¶
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.
- 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.
- throttle_setting_reverser <string>¶
This specifies the control_value defined in flight_controls that will be used to control the thrust-reverser control setting.
Return to six_dof_object_types, rigid_body_vehicle_type, point_mass_vehicle_type