:orphan: .. **************************************************************************** .. CUI .. .. The Advanced Framework for Simulation, Integration, and Modeling (AFSIM) .. .. The use, dissemination or disclosure of data in this file is subject to .. limitation or restriction. See accompanying README and LICENSE for details. .. **************************************************************************** .. _SixDOF_Propulsion_System_Label: 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 :model:`WSF_SIX_DOF_FUEL` to further define the fuel system, augmenting the fuel data provided in the **propulsion_data** block of the :model:`WSF_SIX_DOF_MOVER`, and including support for things like **bingo** fuel states and other simple, top-level fuel-related data interaction. .. command:: propulsion_data ... end_propulsion_data .. parsed-literal:: propulsion_data // `Engines/Thrust Producers`_ engine_ rel_pos_x_ ... rel_pos_y_ ... rel_pos_z_ ... rel_yaw_ ... rel_pitch_ ... rel_roll_ ... fuel_feed_ ... end_engine // `Fuel Tank Definition`_ fuel_tank_ 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_ source_tank_ ... target_tank_ ... end_fuel_transfer // Commands below for :model:`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 :command:`six_dof_object_types` block). These define 'types' of engines which can then be referenced from within a :command:`engine` block within a :command:`propulsion_data` block within a :command:`rigid_body_vehicle_type` or :command:`point_mass_vehicle_type` block. For more information about creating thrust producer types, see :ref:`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. .. command:: engine ... end_engine .. parsed-literal:: 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 .. command:: rel_pos_x This is the x-location of the thrust point relative to the parent's reference point using the parent's body coordinate system. .. command:: rel_pos_y This is the y-location of the thrust point relative to the parent's reference point using the parent's body coordinate system. .. command:: rel_pos_z This is the z-location of the thrust point relative to the parent's reference point using the parent's body coordinate system. .. command:: rel_yaw This specifies the yaw of the thrust point about its reference point relative to the parent's body coordinate system. .. command:: rel_pitch This specifies the pitch of the thrust point about its reference point relative to the parent's body coordinate system. .. command:: rel_roll This specifies the roll of the thrust point about its reference point relative to the parent's body coordinate system. .. command:: fuel_feed 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 ==================== .. command:: fuel_tank ... end_fuel_tank :block: 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. .. parsed-literal:: fuel_tank 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 .. command:: max_fuel_quantity This is the maximum quantity of fuel that can be contained in the tank. .. command:: current_fuel_qty This is the current quantity of fuel that is in the tank. .. command:: max_flow_rate 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. .. command:: max_fill_rate This is the maximum flow rate that the tank can accept from an outside source, such as an in-flight refueling source. .. command:: max_xfer_rate This is the maximum flow rate that the tank can accept from another tank or provide to another tank. .. command:: cg_full_x 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. .. command:: cg_full_y 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. .. command:: cg_full_z 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. .. command:: cg_empty_x 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. .. command:: cg_empty_y 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. .. command:: cg_empty_z 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 :command:`rigid_body_vehicle_type` or :command:`point_mass_vehicle_type` block). .. command:: fuel_transfer ... end_fuel_transfer :block: 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. .. parsed-literal:: fuel_transfer Fuel_Xfer source_tank_ ... target_tank_ ... end_fuel_transfer Example fuel_transfer block : .. parsed-literal:: 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 .. command:: source_tank 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). .. command:: target_tank 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 (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. .. command:: throttle_setting_mil This specifies the control_value defined in flight_controls that will be used to control the MIL (military) power throttle setting. .. command:: throttle_setting_ab This specifies the control_value defined in flight_controls that will be used to control the AB (afterburner) power throttle setting. .. command:: throttle_setting_reverser This specifies the control_value defined in flight_controls that will be used to control the thrust-reverser control setting. .. command:: throttle_setting_yaw This specifies the control_value defined in flight_controls that will be used to control the yaw thrust vectoring control setting. .. command:: throttle_setting_pitch This specifies the control_value defined in flight_controls that will be used to control the pitch thrust vectoring control setting. Return to :doc:`six_dof_object_types`, :doc:`rigid_body_vehicle_type`, :doc:`point_mass_vehicle_type`