AeroFuse.VortexLattice.HorseshoeType
Horseshoe(panel :: Panel3D, normal, drift = zeros(3))

Generate a Horseshoe corresponding to a Panel3D, an associated normal vector, and a "drift velocity".

AeroFuse.VortexLattice.VortexRingMethod

Constructor for making a VortexRing with a Panel3D. The following convention is adopted:

    p1 —front leg→ p4
    |               |
left leg       right leg
    ↓               ↓
    p2 —back leg-→ p3
AeroFuse.VortexLattice.control_pointMethod
control_point(panel :: Panel3D)

Compute the control point of a Panel3D for horseshoes/vortex rings, which is the average of the 3-quarter point on each side of the trailing legs.

AeroFuse.bound_legMethod
bound_leg(panel :: Panel3D)

Compute the bound leg for a Panel3D, for horseshoes/vortex rings, which quarter point on each side of the trailing legs.

AeroFuse.form_factorMethod
form_factor(fuse :: HyperEllipseFuselage)

Compute the form factor of HyperEllipseFuselage for parasitic drag estimation based on the DATCOM formula (Raymer - Aircraft Design: A Conceptual Approach, 4th Ed., Eq. 12.31): $FF = 1 + 60 / f³ + f / 400$

AeroFuse.form_factorMethod
form_factor(wing :: Wing, M, num)
form_factor(wing_mesh :: WingMesh, M, num)

Compute the form factor $K_f$ of a Wing or WingMesh at Mach number $M$ for parasitic drag estimation based on Raymer's formula for wing, tail, strut, and pylon (Raymer - Aircraft Design: A Conceptual Approach, 4th Ed., Eq. 12.30): $FF = (1 + 0.6(t/c)ₘₐₓ / (x/c) + 100(t/c)ₘₐₓ^4) ⨯ 1.34M^0.18 × cos(Λ_m)^0.28$.

An integer num is required for interpolating Wing's airfoils' coordinates to determine their maximum thickness-to-chord ratios.

AeroFuse.lateral_stability_derivativesMethod
lateral_stability_derivatives(dvs, U, m, Iyy, Q, S, c)

Compute the stability derivatives for the lateral forces and moments with respect to the sideslip angle, roll and yaw rates: $[Y,L,N]_{β,p,r}$

The inputs are force and moment coefficient stability derivatives matrix dvs, the freestream speed U, the mass m and lateral moment sof inertia $I_{xx}, I_{zz}$, the dynamic pressure Q, reference area $S$ and span length $b$.

AeroFuse.longitudinal_stability_derivativesFunction
longitudinal_stability_derivatives(dvs, U₀, m, Iyy, Q, S, c)

Compute the stability derivatives for the longitudinal forces and moments with resepct to speed, angle of attack, and pitch rate: $[X,Z,M]_{u,α,q}$

The inputs are force and moment coefficient stability derivatives matrix dvs, the freestream speed U, the mass m and longitudinal moment of inertia $I_{yy}$, the dynamic pressure Q, reference area $S$ and chord length $c$.

AeroFuse.make_horseshoesMethod
make_horseshoes(wing :: WingMesh)

Generate an array of Horseshoes defined by the chord coordinates and normal vectors defined by the camber distribution of a WingMesh.

AeroFuse.make_vortex_ringsMethod
make_vortex_rings(wing :: WingMesh)

Generate an array of VortexRings defined by the camber coordinates and normal vectors of a WingMesh.

AeroFuse.parasitic_drag_coefficientFunction
parasitic_drag_coefficient(
    fuse :: HyperEllipseFuselage, 
    refs :: References, 
    x_tr :: Real, 
    ts = 0:0.01:1
)

Estimate the profile drag coefficient of a HyperEllipseFuselage using the wetted-area method based on Schlichting's skin-friction coefficient formula with given References, a specified transition location $xₜᵣ$ as a ratio of the fuselage length, and optionally the parametric distribution t ∈ [0,1] for the discretization of the nose, cabin and rear sections.

AeroFuse.parasitic_drag_coefficientMethod
parasitic_drag_coefficient(
    L, x_tr, 
    ρ, V, M, μ, S_ref, 
    S_wet, Kf, fM
)

Compute the parasitic drag coefficient $C_{D₀}$ with the following quantities. Uses a transition-based model from laminar to turbulent flow based on Schlichting's skin-friction coefficient formulas.

Arguments

  • L = Reference length (m)
  • x_tr = Transition location as ratio of reference length
  • ρ = Density (kg/m³)
  • V = Speed (m/s)
  • M = Mach number
  • S_ref = Reference area (m²)
  • μ = Dynamic viscosity (kg/(m ⋅ s))
  • S_wet = Wetted area (m²)
  • Kf = Form factor
  • fM = Mach number influence
AeroFuse.parasitic_drag_coefficientMethod
parasitic_drag_coefficient(
    wing :: Wing, 
    refs :: References,
    x_tr
)

Estimate the profile drag coefficient of a Wing using the wetted-area method based on Schlichting's skin-friction coefficient formula with given References, a specified transition location $xₜᵣ ∈ [0,1]$ as a ratio of the chord lengths.

AeroFuse.parasitic_drag_coefficientMethod
parasitic_drag_coefficient(
    wing :: WingMesh, 
    refs :: References
    x_tr :: Real, 
    u_es, 
)

Estimate the profile drag coefficient of a WingMesh using the local-friction and local-dissipation method based on Schlichting's skin-friction coefficient formula with given References, a specified transition ratio $xₜᵣ$, and edge velocities $\mathbf u_e$.

At present, the edge velocities would be computed using the vortex lattice method via VortexLatticeSystem. For this case, the panels corresponding to the camber distribution are used in the calculation.

AeroFuse.plot_panelsMethod
plot_panels(panels :: Array{Panel3D})

Get the coordinates of an array of Panel3D for plotting.

AeroFuse.plot_planformMethod
plot_planform(wing :: AbstractWing)

Get the planform coordinates of an AbstractWing for plotting.

AeroFuse.plot_surfaceMethod
plot_surface(wing :: AbstractWing)
plot_surface(wing :: AbstractWing, 
             span_num :: Vector{Integer}, 
             chord_num :: Integer)

Get the surface coordinates of an AbstractWing for plotting, optionally with specified spanwise and chordwise discretizations.

AeroFuse.print_infoFunction
print_info(wing :: AbstractWing)

Print the relevant geometric characteristics of an AbstractWing.

AeroFuse.solve_caseMethod
solve_case(
    components :: Vector{Horseshoe}, 
    fs :: Freestream, 
    refs :: References;
    name = :aircraft :: Symbol, 
    compressible = false :: Boolean,
    print = false :: Boolean,
    print_components = false :: Boolean
)

Perform a vortex lattice analysis given a vector of Horseshoes, a Freestream condition, and References values.

AeroFuse.solve_caseMethod
solve_case(foil :: Foil, uniform :: Uniform2D; sources = false, wake_length = 1e3, num_panels :: Int64 = 60)

Evaluate a doublet-source case given a Foil with a Uniform2D, with optional named arguments to specify whether the source terms are non-zero, the length of the wake, and the number of panels for the analysis.

AeroFuse.spanwise_loadingMethod
spanwise_loading(panels :: Matrix{Panel3D}, CFs, S)
spanwise_loading(wing :: WingMesh, CFs, S)

Obtain the spanwise aerodynamic loads (CDi, CY, CL) for a given matrix of Panel3Ds, surface coefficients CFs over the panels, and reference area $S$.

If a WingMesh is provided instead of the matrix, then it will compute the chordwise panel distribution over the surface.

AeroFuse.spanwise_loadingMethod
spanwise_loading(wing_mesh :: WingMesh, ref :: References, CFs, Γs)

Obtain the spanwise aerodynamic loads (CDi, CY, CL, CL_norm) for a given WingMesh, reference values ref, surface coefficients CFs, and circulations $Γ$.

The chordwise normalized lift coefficient loading CL_norm is calculated via the formula $C_L = 2Γ / ρVc$ based on the reference speed $V$ and chord $c$ from ref.

Note that the surface coefficients CFs should be computed in wind axes to match CL_norm.