DSAeroToolsSim.Models.Propulsion package

DSAeroToolsSim.Models.Propulsion.fixedPSFC module

Fixed PSFC Propulsion Model, constant or variable power lapse

DSAeroToolsSim

REQUIRED INPUT STRUCTURE

Vehicle.PropulsionModel.powerSL

Required, sea-level maximum engine power

Vehicle.PropulsionModel.etap

Required, propeller efficiency

Vehicle.PropulsionModel.dp

Required, propeller diameter

Vehicle.PropulsionModel.lapseModel

Optional, defaults to “gaggFerrar”

Vehicle.State.Atmosphere.rho[-1]

Latest density must have been already appended

DSAeroToolsSim.Models.Propulsion.fixedPSFC.JSONify(Vehicle)

JSONification of Propulsion Model

Called by Vehicle’s JSONify method. This function creates a JSON-compatible dictionary of the PropulsionModel attributes.

The function does not return the dictionary, but rather stores it in the Vehicle’s PropulsionModel.JSON attribute.

Parameters:

Vehicle (Vehicle) – Vehicle whose PropulsionModel is being JSONified

DSAeroToolsSim.Models.Propulsion.fixedPSFC.fixedPSFC(Vehicle, *args)

Constant Power-Specific Fuel Consumption (PSFC) propulsion model

Appends the following propulsion-related variables to Vehicle.State.Propulsion:
  • ‘thrust’

  • ‘thrustPower’

  • ‘throttle’

  • ‘SFC’

  • ‘energyWeightBurnRate’

  • ‘energyBurnRate’

It also returns ‘thrust’ for convenience. See segments for example.

There are two ways that a segment can call this propulsion model:
  • “available” for the first scenario (`thrust = Vehicle.PropulsionModel("available")`)

  • “required” for the second scenario (`thrust = Vehicle.PropulsionModel("required")`)

In the “available” case, the power is given by the model, “full throttle” (takeoff, climb).

In the “required” case, the power is given by the aero model, or thrust = drag (level cruise).

In the case of “required”, the drag must have been appended to the state before thrust is called.

It is therefore a good rule of thumb to call the drag model before the thrust model in the segments. See segments.

Parameters:
  • Vehicle (Vehicle) – Vehicle from which the thrust is being called for. Automatically passed when a call to the Wrapper is made.

  • args[0] (str) – Type of propulsion call, either “available” or “required”

Raises:
  • ValueError – fixedPSFC must take exactly 1 argument (“available” or “required”)

  • ValueError – fixedPSFC argument must be a string

  • ValueError – fixedPSFC argument must be ‘available’ or ‘required’

  • ValueError – fixedPSFC requires drag to be appended to the state before thrust is called in the “required” case

Returns:

Thrust force

Return type:

float

DSAeroToolsSim.Models.Propulsion.fixedTSFC module

Fixed Thrust-Specific Fuel Consumption, constant thrust model

DSAeroToolsSim

REQUIRED INPUT STRUCTURE

Vehicle.PropulsionModel.thrustSL

Required, sea-level maximum thrust

Vehicle.PropulsionModel.TSFC

Required, thrust-specific fuel consumption

DSAeroToolsSim.Models.Propulsion.fixedTSFC.JSONify(Vehicle)

JSONification of Propulsion Model

Called by Vehicle’s JSONify method. This function creates a JSON-compatible dictionary of the PropulsionModel attributes.

The function does not return the dictionary, but rather stores it in the Vehicle’s PropulsionModel.JSON attribute.

Parameters:

Vehicle (Vehicle) – Vehicle whose PropulsionModel is being JSONified

DSAeroToolsSim.Models.Propulsion.fixedTSFC.fixedTSFC(Vehicle, *args)

Constant Thrust-Specific Fuel Consumption (TSFC) propulsion model

Appends the following propulsion-related variables to Vehicle.State.Propulsion:
  • ‘thrust’

  • ‘thrustPower’

  • ‘throttle’

  • ‘SFC’

  • ‘energyWeightBurnRate’

  • ‘energyBurnRate’

It also returns ‘thrust’ for convenience. See segments for example.

There are two ways that a segment can call this propulsion model:
  • “available” for the first scenario (`thrust = Vehicle.PropulsionModel("available")`)

  • “required” for the second scenario (`thrust = Vehicle.PropulsionModel("required")`)

In the “available” case, the thrust is given by the model, “full throttle” (takeoff, climb).

In the “required” case, the thrust is given by the aero model, or thrust = drag (level cruise).

In the case of “required”, the drag must have been appended to the state before thrust is called.

It is therefore a good rule of thumb to call the drag model before the thrust model in the segments. See segments.

Parameters:

Vehicle (Vehicle) – Vehicle from which the thrust is being called for. Automatically passed when a call to the Wrapper is made.

Raises:
  • ValueError – fixedTSFC() takes exactly 1 argument

  • ValueError – fixedTSFC() argument must be a string

  • ValueError – fixedTSFC() argument must be ‘available’ or ‘required’

  • ValueError – fixedTSFC(‘required’) requires drag to be appended to the state before thrust is called!

Returns:

Thrust force

Return type:

float

DSAeroToolsSim.Models.Propulsion.mattinglyTurbofan module

Mattingly Turbofan Propulsion Model

DSAeroToolsSim

REQUIRED INPUT STRUCTURE

Vehicle.PropulsionModel.thrustSL

Required, sea-level maximum thrust

Vehicle.PropulsionModel.TR

Optional, engine’s throttle ratio (not throttle!)

If not defined, TR is calculated

If calculated, requires:

  • Vehicle.PropulsionModel.designAlt

  • Vehicle.PropulsionModel.designMach

Vehicle.PropulsionModel.BPR

Required, “high” or “low”

Vehicle.PropulsionModel.TSFCtype

Required, “constant” or “variable”

If “constant”, requires:

  • Vehicle.PropulsionModel.TSFC

Vehicle.PropulsionModel.afterburning

Optional, defaults to False

Can only be used if BPR is “low”

If BPR = “high”, afterburning = False by default

Vehicle.State.Trajectory.V[-1]

Latest velocity must have been already appended

Vehicle.State.Atmosphere.T[-1]

Latest temp. must have been already appended

Vehicle.State.Atmosphere.p[-1]

Latest pressure must have been already appended

Vehicle.State.Atmosphere.SoS[-1]

Latest speed of sound must have been appended

DSAeroToolsSim.Models.Propulsion.mattinglyTurbofan.JSONify(Vehicle)

JSONification of Propulsion Model

Called by Vehicle’s JSONify method. This function creates a JSON-compatible dictionary of the PropulsionModel attributes.

The function does not return the dictionary, but rather stores it in the Vehicle’s PropulsionModel.JSON attribute.

Parameters:

Vehicle (Vehicle) – Vehicle whose PropulsionModel is being JSONified

DSAeroToolsSim.Models.Propulsion.mattinglyTurbofan.mattinglyTurbofan(Vehicle, *args)

J.D. Mattingly Turbofan Thrust Model

Appends the following propulsion-related variables to Vehicle.State.Propulsion:
  • ‘thrust’

  • ‘thrustPower’

  • ‘throttle’

  • ‘SFC’

  • ‘energyWeightBurnRate’

  • ‘energyBurnRate’

It also returns ‘thrust’ for convenience. See segments for example.

There are two ways that a segment can call this propulsion model:
  • “available” for the first scenario (`thrust = Vehicle.PropulsionModel("available")`)

  • “required” for the second scenario (`thrust = Vehicle.PropulsionModel("required")`)

In the “available” case, the thrust is given by the model, “full throttle” (takeoff, climb).

In the “required” case, the thrust is given by the aero model, or thrust = drag (level cruise).

In the case of “required”, the drag must have been appended to the state before thrust is called.

It is therefore a good rule of thumb to call the drag model before the thrust model in the segments. See segments.

The engine’s throttle ratio can either be defined (Vehicle.PropulsionModel.TR) or calculated using:
  • Vehicle.PropulsionModel.designAlt

  • Vehicle.PropulsionModel.designMach

The engine’s TSFC can either be defined (TSFCtype = “constant”) or calculated in the loop (TSCtype = “variable”)

The engine’s BPR can either be “high” or “low”. If “high”, afterburning is set to False by default.

Afterburning can only be used with BPR = “low”.

### Note: mattinglyTurbofan requires the following states to be appended to the Vehicle.State:
  • Vehicle.State.Trajectory.V

  • Vehicle.State.Atmosphere.T

  • Vehicle.State.Atmosphere.p

  • Vehicle.State.Atmosphere.SoS

Parameters:

Vehicle (Vehicle) – Vehicle from which the thrust is being called for. Automatically passed when a call to the Wrapper is made.

Raises:
  • ValueError – mattinglyTurbofan() takes exactly 1 argument

  • ValueError – mattinglyTurbofan() argument must be a string

  • ValueError – mattinglyTurbofan() argument must be ‘available’ or ‘required’

  • ValueError – mattinglyTurbofan(‘required’) requires drag to be appended to the state before thrust is called!

  • ValueError – Propulsion model must have attribute ‘thrustSL’

  • ValueError – Propulsion model must have attribute ‘BPR’

  • ValueError – Propulsion model must have attribute ‘TSFCtype’

  • ValueError – Propulsion model must have attribute ‘TSFC’ if TSFCtype is ‘constant’

Returns:

Thrust force

Return type:

float

DSAeroToolsSim.Models.Propulsion.mattinglyTurbojet module

Mattingly Turbojet Model

DSAeroToolsSim

REQUIRED INPUT STRUCTURE

Vehicle.PropulsionModel.thrustSL

Required, sea-level maximum thrust

Vehicle.PropulsionModel.TR

Optional, recommended

If not defined, defaulted to 1.1

Vehicle.PropulsionModel.TSFCtype

Required, “constant” or “variable”

If “constant”, requires:

  • Vehicle.PropulsionModel.TSFC

Vehicle.PropulsionModel.afterburning

Optional, defaults to False

Vehicle.State.Trajectory.V[-1]

Latest velocity must have been already appended

Vehicle.State.Atmosphere.T[-1]

Latest temp. must have been already appended

Vehicle.State.Atmosphere.p[-1]

Latest pressure must have been already appended

Vehicle.State.Atmosphere.SoS[-1]

Latest speed of sound must have been appended

DSAeroToolsSim.Models.Propulsion.mattinglyTurbojet.JSONify(Vehicle)

JSONification of Propulsion Model

Called by Vehicle’s JSONify method. This function creates a JSON-compatible dictionary of the PropulsionModel attributes.

The function does not return the dictionary, but rather stores it in the Vehicle’s PropulsionModel.JSON attribute.

Parameters:

Vehicle (Vehicle) – Vehicle whose PropulsionModel is being JSONified

DSAeroToolsSim.Models.Propulsion.mattinglyTurbojet.mattinglyTurbojet(Vehicle, *args)

J.D. Mattingly Turbojet Thrust Model

Appends the following propulsion-related variables to Vehicle.State.Propulsion:
  • ‘thrust’

  • ‘thrustPower’

  • ‘throttle’

  • ‘SFC’

  • ‘energyWeightBurnRate’

  • ‘energyBurnRate’

It also returns ‘thrust’ for convenience. See segments for example.

There are two ways that a segment can call this propulsion model:
  • “available” for the first scenario (`thrust = Vehicle.PropulsionModel("available")`)

  • “required” for the second scenario (`thrust = Vehicle.PropulsionModel("required")`)

In the “available” case, the thrust is given by the model, “full throttle” (takeoff, climb).

In the “required” case, the thrust is given by the aero model, or thrust = drag (level cruise).

In the case of “required”, the drag must have been appended to the state before thrust is called.

It is therefore a good rule of thumb to call the drag model before the thrust model in the segments. See segments.

The engine’s throttle ratio can either be defined (Vehicle.PropulsionModel.TR) or defaulted to 1.1.

The engine’s TSFC can either be defined (TSFCtype = “constant”) or calculated in the loop (TSCtype = “variable”)

### Note: mattinglyTurbofan requires the following states to be appended to the Vehicle.State:
  • Vehicle.State.Trajectory.V

  • Vehicle.State.Atmosphere.T

  • Vehicle.State.Atmosphere.p

  • Vehicle.State.Atmosphere.SoS

Parameters:

Vehicle (Vehicle) – Vehicle from which the thrust is being called for. Automatically passed when a call to the Wrapper is made.

Raises:
  • ValueError – mattinglyTurbojet() takes exactly 1 argument

  • ValueError – mattinglyTurbojet() argument must be a string

  • ValueError – mattinglyTurbojet() argument must be ‘available’ or ‘required’

  • ValueError – Mattingly turbojet model requires thrustSL to be defined

  • ValueError – Mattingly turbojet model requires TSFCtype to be defined

  • ValueError – Mattingly turbojet model requires TSFC to be defined if TSFCtype is constant

  • ValueError – mattinglyTurbofan(‘required’) requires drag to be appended to the state before thrust is called!

Returns:

Thrust force

Return type:

float

DSAeroToolsSim.Models.Propulsion.mattinglyTurboprop module

Mattingly Thrust Models

DSAeroToolsSim

REQUIRED INPUT STRUCTURE

Vehicle.PropulsionModel.thrustSL

Required, sea-level maximum thrust

If not defined, defaulted to 1.1

Vehicle.PropulsionModel.TR

Optional, engine’s throttle ratio (not throttle!)

If not defined, TR is calculated

Then requires:

  • Vehicle.PropulsionModel.designAlt

  • Vehicle.PropulsionModel.designMach

# Vehicle.PropulsionModel.TSFCtype

Required, “constant” or “variable”

If “constant”, requires:

  • Vehicle.PropulsionModel.TSFC

Vehicle.State.Trajectory.V[-1]

Latest velocity must have been already appended

Vehicle.State.Atmosphere.T[-1]

Latest temp. must have been already appended

Vehicle.State.Atmosphere.p[-1]

Latest pressure must have been already appended

Vehicle.State.Atmosphere.SoS[-1]

Latest speed of sound must have been appended

DSAeroToolsSim.Models.Propulsion.mattinglyTurboprop.JSONify(Vehicle)

JSONification of Propulsion Model

Called by Vehicle’s JSONify method. This function creates a JSON-compatible dictionary of the PropulsionModel attributes.

The function does not return the dictionary, but rather stores it in the Vehicle’s PropulsionModel.JSON attribute.

Parameters:

Vehicle (Vehicle) – Vehicle whose PropulsionModel is being JSONified

DSAeroToolsSim.Models.Propulsion.mattinglyTurboprop.mattinglyTurboprop(Vehicle, *args)

J.D. Mattingly Turboprop Thrust Model

Appends the following propulsion-related variables to Vehicle.State.Propulsion:
  • ‘thrust’

  • ‘thrustPower’

  • ‘throttle’

  • ‘SFC’

  • ‘energyWeightBurnRate’

  • ‘energyBurnRate’

It also returns ‘thrust’ for convenience. See segments for example.

There are two ways that a segment can call this propulsion model:
  • “available” for the first scenario (`thrust = Vehicle.PropulsionModel("available")`)

  • “required” for the second scenario (`thrust = Vehicle.PropulsionModel("required")`)

In the “available” case, the thrust is given by the model, “full throttle” (takeoff, climb).

In the “required” case, the thrust is given by the aero model, or thrust = drag (level cruise).

In the case of “required”, the drag must have been appended to the state before thrust is called.

It is therefore a good rule of thumb to call the drag model before the thrust model in the segments. See segments.

The engine’s throttle ratio can either be defined (Vehicle.PropulsionModel.TR) or calculated using:
  • Vehicle.PropulsionModel.designAlt

  • Vehicle.PropulsionModel.designMach

For some reason, if TR <= 1, the thrust diverges, or becomes negative, I’m not quite sure. Thus, TR is set to 1.01 by default if the calculated TR with designAlt and designMach falls bellow 1.01.

The engine’s TSFC can either be defined (TSFCtype = “constant”) or calculated in the loop (TSCtype = “variable”)

### Note: mattinglyTurbofan requires the following states to be appended to the Vehicle.State:
  • Vehicle.State.Trajectory.V

  • Vehicle.State.Atmosphere.T

  • Vehicle.State.Atmosphere.p

  • Vehicle.State.Atmosphere.SoS

Parameters:

Vehicle (Vehicle) – Vehicle from which the thrust is being called for. Automatically passed when a call to the Wrapper is made.

Raises:
  • ValueError – mattinglyTurboprop() takes exactly 1 argument

  • ValueError – mattinglyTurboprop() argument must be a string

  • ValueError – mattinglyTurboprop() argument must be ‘available’ or ‘required’

  • ValueError – mattinglyTurboprop() requires thrustSL to be defined!

  • ValueError – mattinglyTurboprop() requires TSFCtype to be defined!

  • ValueError – mattinglyTurboprop() requires TSFC to be defined if TSFCtype is constant!

  • ValueError – mattinglyTurboprop(‘required’) requires drag to be appended to the state before thrust is called!

Returns:

Thrust force

Return type:

float