aerosandbox.aerodynamics.aero_3D.aero_buildup

Attributes

Classes

AeroBuildup

A workbook-style aerodynamics buildup.

Module Contents

class aerosandbox.aerodynamics.aero_3D.aero_buildup.AeroBuildup(airplane, op_point, xyz_ref=None, model_size='small', include_wave_drag=True)[source]

Bases: aerosandbox.ExplicitAnalysis

A workbook-style aerodynamics buildup.

Example usage:

>>> import aerosandbox as asb
>>> ab = asb.AeroBuildup(  # This sets up the analysis, but doesn't execute calculation
>>>     airplane=my_airplane,  # type: asb.Airplane
>>>     op_point=my_operating_point,  # type: asb.OperatingPoint
>>>     xyz_ref=[0.1, 0.2, 0.3],  # Moment reference and center of rotation.
>>> )
>>> aero = ab.run()  # This executes the actual aero analysis.
>>> aero_with_stability_derivs = ab.run_with_stability_derivatives()  # Same, but also gets stability derivatives.
Parameters:
default_analysis_specific_options[source]

This is part of AeroSandbox’s “analysis-specific options” feature, which lets you “tag” geometry objects with flags that change how different analyses act on them.

This variable, default_analysis_specific_options, allows you to specify default values for options that can be used for specific problems.

This should be a dictionary, where: * keys are the geometry-like types that you might be interested in defining parameters for. * values are dictionaries, where: * keys are strings that label a given option * values are anything. These are used as the default values, in the event that the associated geometry doesn’t override those.

An example of what this variable might look like, for a vortex-lattice method aerodynamic analysis:

>>> default_analysis_specific_options = {
>>>     Airplane: dict(
>>>         profile_drag_coefficient=0
>>>     ),
>>>     Wing    : dict(
>>>         wing_level_spanwise_spacing=True,
>>>         spanwise_resolution=12,
>>>         spanwise_spacing="cosine",
>>>         chordwise_resolution=12,
>>>         chordwise_spacing="cosine",
>>>         component=None,  # type: int
>>>         no_wake=False,
>>>         no_alpha_beta=False,
>>>         no_load=False,
>>>         drag_polar=dict(
>>>             CL1=0,
>>>             CD1=0,
>>>             CL2=0,
>>>             CD2=0,
>>>             CL3=0,
>>>             CD3=0,
>>>         ),
>>>     )
>>> }
airplane[source]
op_point[source]
xyz_ref = None[source]
model_size = 'small'[source]
include_wave_drag = True[source]
__repr__()[source]
class AeroComponentResults[source]
s_ref: float[source]
c_ref: float[source]
b_ref: float[source]
op_point: aerosandbox.performance.OperatingPoint[source]
F_g: List[float | aerosandbox.aerodynamics.aero_3D.aero_buildup_submodels.fuselage_aerodynamics_utilities.np.ndarray][source]
M_g: List[float | aerosandbox.aerodynamics.aero_3D.aero_buildup_submodels.fuselage_aerodynamics_utilities.np.ndarray][source]
span_effective: float[source]
oswalds_efficiency: float[source]
__repr__()[source]
property F_b: List[float | aerosandbox.aerodynamics.aero_3D.aero_buildup_submodels.fuselage_aerodynamics_utilities.np.ndarray][source]

An [x, y, z] list of forces in body axes [N]

Return type:

List[Union[float, aerosandbox.aerodynamics.aero_3D.aero_buildup_submodels.fuselage_aerodynamics_utilities.np.ndarray]]

property F_w: List[float | aerosandbox.aerodynamics.aero_3D.aero_buildup_submodels.fuselage_aerodynamics_utilities.np.ndarray][source]

An [x, y, z] list of forces in wind axes [N]

Return type:

List[Union[float, aerosandbox.aerodynamics.aero_3D.aero_buildup_submodels.fuselage_aerodynamics_utilities.np.ndarray]]

property M_b: List[float | aerosandbox.aerodynamics.aero_3D.aero_buildup_submodels.fuselage_aerodynamics_utilities.np.ndarray][source]

An [x, y, z] list of moments about body axes [Nm]

Return type:

List[Union[float, aerosandbox.aerodynamics.aero_3D.aero_buildup_submodels.fuselage_aerodynamics_utilities.np.ndarray]]

property M_w: List[float | aerosandbox.aerodynamics.aero_3D.aero_buildup_submodels.fuselage_aerodynamics_utilities.np.ndarray][source]

An [x, y, z] list of moments about wind axes [Nm]

Return type:

List[Union[float, aerosandbox.aerodynamics.aero_3D.aero_buildup_submodels.fuselage_aerodynamics_utilities.np.ndarray]]

property L: float | aerosandbox.aerodynamics.aero_3D.aero_buildup_submodels.fuselage_aerodynamics_utilities.np.ndarray[source]

The lift force [N]. Definitionally, this is in wind axes.

Return type:

Union[float, aerosandbox.aerodynamics.aero_3D.aero_buildup_submodels.fuselage_aerodynamics_utilities.np.ndarray]

property Y: float | aerosandbox.aerodynamics.aero_3D.aero_buildup_submodels.fuselage_aerodynamics_utilities.np.ndarray[source]

The side force [N]. Definitionally, this is in wind axes.

Return type:

Union[float, aerosandbox.aerodynamics.aero_3D.aero_buildup_submodels.fuselage_aerodynamics_utilities.np.ndarray]

property D: float | aerosandbox.aerodynamics.aero_3D.aero_buildup_submodels.fuselage_aerodynamics_utilities.np.ndarray[source]

The drag force [N]. Definitionally, this is in wind axes.

Return type:

Union[float, aerosandbox.aerodynamics.aero_3D.aero_buildup_submodels.fuselage_aerodynamics_utilities.np.ndarray]

property l_b: float | aerosandbox.aerodynamics.aero_3D.aero_buildup_submodels.fuselage_aerodynamics_utilities.np.ndarray[source]

The rolling moment [Nm] in body axes. Positive is roll-right.

Return type:

Union[float, aerosandbox.aerodynamics.aero_3D.aero_buildup_submodels.fuselage_aerodynamics_utilities.np.ndarray]

property m_b: float | aerosandbox.aerodynamics.aero_3D.aero_buildup_submodels.fuselage_aerodynamics_utilities.np.ndarray[source]

The pitching moment [Nm] in body axes. Positive is nose-up.

Return type:

Union[float, aerosandbox.aerodynamics.aero_3D.aero_buildup_submodels.fuselage_aerodynamics_utilities.np.ndarray]

property n_b: float | aerosandbox.aerodynamics.aero_3D.aero_buildup_submodels.fuselage_aerodynamics_utilities.np.ndarray[source]

The yawing moment [Nm] in body axes. Positive is nose-right.

Return type:

Union[float, aerosandbox.aerodynamics.aero_3D.aero_buildup_submodels.fuselage_aerodynamics_utilities.np.ndarray]

run()[source]

Computes the aerodynamic forces and moments on the airplane.

Returns: a dictionary with keys:

  • ‘F_g’ : an [x, y, z] list of forces in geometry axes [N]

  • ‘F_b’ : an [x, y, z] list of forces in body axes [N]

  • ‘F_w’ : an [x, y, z] list of forces in wind axes [N]

  • ‘M_g’ : an [x, y, z] list of moments about geometry axes [Nm]

  • ‘M_b’ : an [x, y, z] list of moments about body axes [Nm]

  • ‘M_w’ : an [x, y, z] list of moments about wind axes [Nm]

  • ‘L’ : the lift force [N]. Definitionally, this is in wind axes.

  • ‘Y’ : the side force [N]. This is in wind axes.

  • ‘D’ : the drag force [N]. Definitionally, this is in wind axes.

  • ‘l_b’, the rolling moment, in body axes [Nm]. Positive is roll-right.

  • ‘m_b’, the pitching moment, in body axes [Nm]. Positive is pitch-up.

  • ‘n_b’, the yawing moment, in body axes [Nm]. Positive is nose-right.

  • ‘CL’, the lift coefficient [-]. Definitionally, this is in wind axes.

  • ‘CY’, the sideforce coefficient [-]. This is in wind axes.

  • ‘CD’, the drag coefficient [-]. Definitionally, this is in wind axes.

  • ‘Cl’, the rolling coefficient [-], in body axes

  • ‘Cm’, the pitching coefficient [-], in body axes

  • ‘Cn’, the yawing coefficient [-], in body axes

Nondimensional values are nondimensionalized using reference values in the AeroBuildup.airplane object.

Data types:
  • The “L”, “Y”, “D”, “l_b”, “m_b”, “n_b”, “CL”, “CY”, “CD”, “Cl”, “Cm”, and “Cn” keys are:

    • floats if the OperatingPoint object is not vectorized (i.e., if all attributes of OperatingPoint

    are floats, not arrays).

    • arrays if the OperatingPoint object is vectorized (i.e., if any attribute of OperatingPoint is an

    array).

  • The “F_g”, “F_b”, “F_w”, “M_g”, “M_b”, and “M_w” keys are always lists, which will contain either

floats or arrays, again depending on whether the OperatingPoint object is vectorized or not.

Return type:

Dict[str, Union[Union[float, aerosandbox.aerodynamics.aero_3D.aero_buildup_submodels.fuselage_aerodynamics_utilities.np.ndarray], List[Union[float, aerosandbox.aerodynamics.aero_3D.aero_buildup_submodels.fuselage_aerodynamics_utilities.np.ndarray]]]]

run_with_stability_derivatives(alpha=True, beta=True, p=True, q=True, r=True)[source]

Computes the aerodynamic forces and moments on the airplane, and the stability derivatives.

Arguments essentially determine which stability derivatives are computed. If a stability derivative is not needed, leaving it False will speed up the computation.

Parameters:
  • alpha (-) – If True, compute the stability derivatives with respect to the angle of attack (alpha).

  • beta (-) – If True, compute the stability derivatives with respect to the sideslip angle (beta).

  • p (-) – If True, compute the stability derivatives with respect to the body-axis roll rate (p).

  • q (-) – If True, compute the stability derivatives with respect to the body-axis pitch rate (q).

  • r (-) – If True, compute the stability derivatives with respect to the body-axis yaw rate (r).

Return type:

Dict[str, Union[Union[float, aerosandbox.aerodynamics.aero_3D.aero_buildup_submodels.fuselage_aerodynamics_utilities.np.ndarray], List[Union[float, aerosandbox.aerodynamics.aero_3D.aero_buildup_submodels.fuselage_aerodynamics_utilities.np.ndarray]]]]

Returns: a dictionary with keys:

  • ‘F_g’ : an [x, y, z] list of forces in geometry axes [N]

  • ‘F_b’ : an [x, y, z] list of forces in body axes [N]

  • ‘F_w’ : an [x, y, z] list of forces in wind axes [N]

  • ‘M_g’ : an [x, y, z] list of moments about geometry axes [Nm]

  • ‘M_b’ : an [x, y, z] list of moments about body axes [Nm]

  • ‘M_w’ : an [x, y, z] list of moments about wind axes [Nm]

  • ‘L’ : the lift force [N]. Definitionally, this is in wind axes.

  • ‘Y’ : the side force [N]. This is in wind axes.

  • ‘D’ : the drag force [N]. Definitionally, this is in wind axes.

  • ‘l_b’ : the rolling moment, in body axes [Nm]. Positive is roll-right.

  • ‘m_b’ : the pitching moment, in body axes [Nm]. Positive is pitch-up.

  • ‘n_b’ : the yawing moment, in body axes [Nm]. Positive is nose-right.

  • ‘CL’ : the lift coefficient [-]. Definitionally, this is in wind axes.

  • ‘CY’ : the sideforce coefficient [-]. This is in wind axes.

  • ‘CD’ : the drag coefficient [-]. Definitionally, this is in wind axes.

  • ‘Cl’ : the rolling coefficient [-], in body axes

  • ‘Cm’ : the pitching coefficient [-], in body axes

  • ‘Cn’ : the yawing coefficient [-], in body axes

Along with additional keys, depending on the value of the alpha, beta, p, q, and r arguments. For example, if alpha=True, then the following additional keys will be present:

  • ‘CLa’ : the lift coefficient derivative with respect to alpha [1/rad]

  • ‘CDa’ : the drag coefficient derivative with respect to alpha [1/rad]

  • ‘CYa’ : the sideforce coefficient derivative with respect to alpha [1/rad]

  • ‘Cla’ : the rolling moment coefficient derivative with respect to alpha [1/rad]

  • ‘Cma’ : the pitching moment coefficient derivative with respect to alpha [1/rad]

  • ‘Cna’ : the yawing moment coefficient derivative with respect to alpha [1/rad]

  • ‘x_np’: the neutral point location in the x direction [m]

Nondimensional values are nondimensionalized using reference values in the AeroBuildup.airplane object.

Data types:
  • The “L”, “Y”, “D”, “l_b”, “m_b”, “n_b”, “CL”, “CY”, “CD”, “Cl”, “Cm”, and “Cn” keys are:

    • floats if the OperatingPoint object is not vectorized (i.e., if all attributes of OperatingPoint

    are floats, not arrays).

    • arrays if the OperatingPoint object is vectorized (i.e., if any attribute of OperatingPoint is an

    array).

  • The “F_g”, “F_b”, “F_w”, “M_g”, “M_b”, and “M_w” keys are always lists, which will contain either

floats or arrays, again depending on whether the OperatingPoint object is vectorized or not.

wing_aerodynamics(wing, include_induced_drag=True)[source]

Estimates the aerodynamic forces, moments, and derivatives on a wing in isolation.

Moments are given with the reference at Wing [0, 0, 0].

Parameters:
  • wing (aerosandbox.geometry.Wing) – A Wing object that you wish to analyze.

  • op_point – The OperatingPoint that you wish to analyze the fuselage at.

  • include_induced_drag (bool) –

Return type:

AeroComponentResults

Returns:

fuselage_aerodynamics(fuselage, include_induced_drag=True)[source]

Estimates the aerodynamic forces, moments, and derivatives on a fuselage in isolation.

Assumes:
  • The fuselage is a body of revolution aligned with the x_b axis.

  • The angle between the nose and the freestream is less than 90 degrees.

Moments are given with the reference at Fuselage [0, 0, 0].

Uses methods from Jorgensen, Leland Howard. “Prediction of Static Aerodynamic Characteristics for Slender Bodies Alone and with Lifting Surfaces to Very High Angles of Attack”. NASA TR R-474. 1977.

Parameters:
Return type:

AeroComponentResults

Returns:

aerosandbox.aerodynamics.aero_3D.aero_buildup.aero[source]