.. DO NOT EDIT. .. THIS FILE WAS AUTOMATICALLY GENERATED BY SPHINX-GALLERY. .. TO MAKE CHANGES, EDIT THE SOURCE PYTHON FILE: .. "api/gallery/aerodynamics/wings/plot_03_oswald_drag_polar.py" .. LINE NUMBERS ARE GIVEN BELOW. .. only:: html .. note:: :class: sphx-glr-download-link-note :ref:`Go to the end ` to download the full example code or to run this example in your browser via JupyterLite. .. rst-class:: sphx-glr-example-title .. _sphx_glr_api_gallery_aerodynamics_wings_plot_03_oswald_drag_polar.py: Oswald's efficiency factor and the parabolic drag polar ======================================================= W. Bailey Oswald's NACA Report 408 (1933) folded every source of lift-dependent drag of a whole aeroplane into one *efficiency factor*, so its drag polar becomes :math:`C_D = C_{D0} + C_L^2/(\pi e AR)` (:func:`~engineeringkit.aerodynamics.drag_polar`). The maximum lift-to-drag ratio lies where a line from the origin is tangent to the polar, at :math:`C_L = \sqrt{\pi e AR C_{D0}}` (:func:`~engineeringkit.aerodynamics.best_glide_cl`). The empirical :func:`~engineeringkit.aerodynamics.oswald_efficiency_estimate` supplies :math:`e` for straight wings. .. GENERATED FROM PYTHON SOURCE LINES 17-23 .. code-block:: Python import matplotlib.pyplot as plt import numpy as np from engineeringkit.aerodynamics import best_glide_cl, drag_polar, glide_ratio, oswald_efficiency_estimate from engineeringkit.aerodynamics.visualizers import plot_drag_polar .. GENERATED FROM PYTHON SOURCE LINES 24-26 Polars for three aspect ratios ------------------------------ .. GENERATED FROM PYTHON SOURCE LINES 26-43 .. code-block:: Python cd0 = 0.022 cl = np.linspace(-0.4, 1.6, 401) fig, ax = plt.subplots(figsize=(6, 4.5)) for AR in [5.0, 8.0, 10.0]: e = float(oswald_efficiency_estimate(AR)) plot_drag_polar(cl, drag_polar(cl, cd0, AR, e), ax=ax, label=f"AR = {AR:.0f}, e = {e:.2f}") cl_star = float(best_glide_cl(cd0, AR, e)) ld_max = float(glide_ratio(cl_star, drag_polar(cl_star, cd0, AR, e))) print(f"AR = {AR:4.1f}: e = {e:.3f}, best-glide C_L = {cl_star:.3f}, (L/D)max = {ld_max:.2f}") # At the tangent point induced drag equals parasite drag. assert np.isclose(drag_polar(cl_star, cd0, AR, e), 2 * cd0) assert np.isclose(ld_max, 0.5 * np.sqrt(np.pi * e * AR / cd0)) ax.set_title("Parabolic drag polars and best-glide tangents") fig.tight_layout() plt.show() .. image-sg:: /api/gallery/aerodynamics/wings/images/sphx_glr_plot_03_oswald_drag_polar_001.png :alt: Parabolic drag polars and best-glide tangents :srcset: /api/gallery/aerodynamics/wings/images/sphx_glr_plot_03_oswald_drag_polar_001.png :class: sphx-glr-single-img .. rst-class:: sphx-glr-script-out .. code-block:: none AR = 5.0: e = 0.901, best-glide C_L = 0.558, (L/D)max = 12.68 AR = 8.0: e = 0.811, best-glide C_L = 0.669, (L/D)max = 15.22 AR = 10.0: e = 0.757, best-glide C_L = 0.723, (L/D)max = 16.44 .. rst-class:: sphx-glr-timing **Total running time of the script:** (0 minutes 0.157 seconds) .. _sphx_glr_download_api_gallery_aerodynamics_wings_plot_03_oswald_drag_polar.py: .. only:: html .. container:: sphx-glr-footer sphx-glr-footer-example .. container:: lite-badge .. image:: images/jupyterlite_badge_logo.svg :target: ../../../../lite/lab/index.html?path=api/gallery/aerodynamics/wings/plot_03_oswald_drag_polar.ipynb :alt: Launch JupyterLite :width: 150 px .. container:: sphx-glr-download sphx-glr-download-jupyter :download:`Download Jupyter notebook: plot_03_oswald_drag_polar.ipynb ` .. container:: sphx-glr-download sphx-glr-download-python :download:`Download Python source code: plot_03_oswald_drag_polar.py ` .. container:: sphx-glr-download sphx-glr-download-zip :download:`Download zipped: plot_03_oswald_drag_polar.zip ` .. only:: html .. rst-class:: sphx-glr-signature `Gallery generated by Sphinx-Gallery `_