Summary and outputs

Core assumptions

📖 In Drela's Words - aerodynamic summary

The wing airfoil performance is represented by a parameterized transonic airfoil family spanning a range of thicknesses, whose performance is determined by 2D viscous/inviscid CFD calculation for a range of lift coefficients and Mach numbers. Together with suitable sweep corrections, this gives reliable profile+wave drag of the wing in cruise and high climb and high descent. The fuselage drag is likewise obtained from compressible viscous/inviscid CFD, suitably simplified with axisymmetric-based approximations. A side benefit is that detailed knowledge of the fuselage boundary layers makes it possibly for TASOPT to reliably predict the benefits of boundary layer ingestion in fuselage-mounted engines.

The drag of only the minor remaining components such as nacelles is obtained by traditional wetted area methods, but corrected for supervelocities estimated with vortex sheet models. Induced drag is predicted by fairly standard Trefftz-Plane analysis

The following table summarizes the modelling assumptions for the aerodynamic contributors. Excrescence drag is modelled as specifiable factors for the fuselage, and wings and control surfaces.

ComponentLiftDragPitching Moment
WingSet by geometry and loading assumptionsLinked to $C_L$ via 2D CFD and discretization of a finite swept wing†Integrates discretized lift distribution and assumed airfoil pitching moments
Fuselage-Profile drag via axisymmetric IBLTLift contribution linearized with prescribed $CMV_{f1}$ per slender body theory
Horz. Stab.Set by stability requirementsFinite swept wing for fixed $c_{d,f}$, $c_{d,p}$Linked to $C_{L,h}$ via 2D CFD and discretization of a finite swept wing
Vert. Stab.-Finite swept wing for fixed $c_{d,f}$, $c_{d,p}$-
Nacelle-Wetted area with overspeed corrections-

† Can also use lower-fidelity Reynolds scaling for a finite swept wing with prescribed airfoil quantities, $c_{d,f}$, $c_{d,p}$.


Aircraft drag polars

The overall aerodynamic performance of the trimmed aircraft can be generated by aeroperf_sweep() and visualized via a DragPolar() plot:


Airfoil database and summary

The default airfoil section performance database can be found at ./aero/airfoil_data/C.air and is stored in an airfoil struct within the aircraft struct at TASOPT.aircraft.wing.airsection. A summary plot of the airfoil performance can be generated by plot_airf():

Airfoil lift, drag, and pitching moment performance.


TASOPT.aerodynamics.aeroperf_sweepFunction
aeroperf_sweep(ac_orig, CL_range; Mach=nothing, imission=1, ip=ipcruise1, rfuel=1, rpay=1, ξpay=0.5)

Performs a sweep over a range of lift coefficients (CL_range) for a given aircraft model, evaluating aerodynamic and performance metrics at each point.

This function deep-copies the input aircraft model, sets the lift coefficient, balances the aircraft, and computes drag and related quantities for each value in CL_range. The results are collected in arrays for further analysis or plotting and returned in a NamedTuple.

🔃 Inputs and Outputs

Inputs:

  • ac_orig: Aircraft model object (deep-copied internally).
  • CL_range: Range of lift coefficients to sweep.
  • Mach: Mach number at which points are evaluated. If none specified, defaults to value at specified ip, imission (optl.).
  • imission::Integer: Mission index (default: 1, optl.).
  • ip::Integer: Flight point index, determining altitude (default: ipcruise1, optl.).
  • rfuel::Float64: Fuel fraction (default: 1, optl.).
  • rpay::Float64: Payload fraction (default: 1, optl.).
  • ξpay::Float64: Payload distribution factor (0.0 = front-loaded, 1.0 = rear-loaded; default: 0.5, optl.). Doesn't matter if rpay = 1.

Outputs:

  • Returns a named tuple of vectors containing:
    • Mach: Mach number at which points are evaluated.
    • CLs: Lift coefficients at each point.
    • CDs: Drag coefficients at each point.
    • LDs: Lift-to-drag ratios.
    • CLhs: Horizontal tail lift coefficients.
    • CDis: Induced drag coefficients.
    • CDwings, CDfuses, CDhtails, CDvtails, CDothers: Component drag breakdowns.
    • clpos, clpss, clpts: airfoil section lift coefficients (root, spanbreak, and tip).

Sample usage:

```julia
CL_range = 0.2:0.05:0.8
results_nb = aeroperf_sweep(ac, CL_range, print_results=true)
```

See also: TASOPT.DragPolar, TASOPT.balance_aircraft!, TASOPT.aerodynamics.aircraft_drag!.

source
TASOPT.DragPolarFunction
DragPolar(ac; CL_range = 0.2:0.05:0.8, 
          show_drag_components=false, show_airfoil_data=false, 
          title=nothing, legend=true, print_results=false)

Generates drag polar plots for a given aircraft model by sweeping over a range of lift coefficients and computing aerodynamic performance metrics.

This function calls aeroperf_sweep to evaluate drag, lift-to-drag ratio, and component breakdowns across CL_range. It produces two side-by-side plots:

  • CL vs CD (with optional drag component breakdowns).
  • CL vs L/D (with optional airfoil section data).
🔃 Inputs and Outputs

Inputs:

  • ac: Aircraft model object.
  • CL_range: Range of lift coefficients to sweep (default: 0.2:0.05:0.8).
  • Mach: Mach number at which points are evaluated. If none specified, defaults to value at specified ip, imission (optl.).
  • show_drag_components::Bool: If true, overlays induced drag and component drag contributions (CDi, CDwing, CDfuse, CDhtail, CDvtail, CDother) on the CL–CD plot (default: false).
  • show_airfoil_data::Bool: If true, overlays airfoil section performance (clpss, cdss) on both plots (default: false).
  • title::Union{String,Nothing}: Custom plot title. If nothing, uses a default title with aircraft name (default: nothing).
  • legend::Bool: Show legend in plots (default: true).
  • print_results::Bool: Print detailed output from aeroperf_sweep (default: false).

Outputs:

  • Returns a combined Plots.Plot object with two subplots:
    • Left subplot: CL vs CD (with optional drag components and airfoil data).
    • Right subplot: CL vs L/D (with optional airfoil data).

Sample usage:

```julia
f = DragPolar(ac; CL_range=0.2:0.05:0.8, 
                 show_drag_components=true, 
                 show_airfoil_data=false)
display(f)
```

See also: aeroperf_sweep, TASOPT.balance_aircraft!, TASOPT.aerodynamics.aircraft_drag!.

source
TASOPT.aerodynamics.plot_airfFunction
plot_airf(airf::airfoil)

Plots aerodynamic characteristics of the airfoil database, including its drag and pitching moment curves across lift coefficients and airfoil thickness-to-chord ratios (τ).

🔃 Inputs and Outputs

Inputs:

  • airf::airfoil: airfoil data struct

Outputs:

  • Returns a Plots.Plot object with three panels:
    • Top subplot: cl vs cd (drag polar for multiple τ).
    • Bottom subplot: cl vs cm (moment curve for multiple τ).
    • Side panel: Legend indicating the thickness-to-chord ratio values (τ).

Sample usage:

```julia
ac = load_default_model(); size_aircraft!(ac)
airf = ac.wing.airsection
f1 = plot_airf(airf)
f2 = plot_airf(ac)
```
source
plot_airf(ac::TASOPT.aircraft)

Convenience for plot_airf(airf::airfoil)

source