Skip to content

Latest commit

 

History

History
159 lines (129 loc) · 6.43 KB

README.md

File metadata and controls

159 lines (129 loc) · 6.43 KB

Stable Dev Build Status Coverage Aqua QA

Aerodynamic models of 3D wings using the Vortex Step Method

The Vortex Step Method (VSM) is an enhanced lifting line method that improves upon the classic approach by solving the circulation system at the three-quarter chord position, among the most important details. This adjustment allows for more accurate calculations of lift and drag forces, particularly addressing the shortcomings in induced drag prediction. VSM is further refined by coupling it with 2D viscous airfoil polars, making it well-suited for complex geometries, including low aspect ratio wings, as well as configurations with sweep, dihedral, and anhedral angles.

The software presented here includes a couple of examples: a rectangular wing, a leading-edge inflatable kite and a ram-air kite.

This package was translated from the Python code version 1.0.0 available at https://github.com/ocayon/Vortex-Step-Method with some extensions as documented in News.md.

Installation

Install Julia 1.10 or later, if you haven't already. On Linux, make sure that Python3, Matplotlib and LaTeX are installed:

sudo apt install python3-matplotlib
sudo apt install texlive-full texlive-fonts-extra cm-super

Furthermore, the packages TestEnv and ControlPlots must be installed globally:

julia -e 'using Pkg; Pkg.add("TestEnv"); Pkg.add("ControlPlots")'

Before installing this software it is suggested to create a new project, for example like this:

mkdir vsm
cd vsm
julia --project=.

Then add VortexStepMethod from Julia's package manager, by typing:

using Pkg
pkg"add VortexStepMethod"

at the Julia prompt. You can run the unit tests with the command:

pkg"test VortexStepMethod"

To run the examples, type:

using VortexStepMethod
VortexStepMethod.install_examples()
include("examples/menu.jl")

Running the examples as developer

If you have git installed, check out this repo because it makes it easier to understand the code:

mkdir repos
cd repos
git clone https://github.com/Albatross-Kite-Transport/VortexStepMethod.jl
cd VortexStepMethod.jl

You can launch Julia with:

julia --project

or with:

./bin/run_julia

In Julia, first update the packages:

using Pkg
Pkg.update()

and then you can display a menu with the available examples:

include("examples/menu.jl")

To browse the code, it is suggested to use VSCode with the Julia plugin.

Input

Three kinds of input data is needed:

  • The wing geometry, defined by section:

    • for the rectangualar wing two sections, two points in CAD reference frame + polars
      (three different options to provide them) per section
    • kite wing: model of polars included, n sections to define
  • The airflow and turn rate:

    • v_app vector and omega (turn rate) vector in Kite Body (KB) reference frame
  • The configuration:

    • how many panels
      --> two sections make a panel.

Apart from the wing geometry there is no input file yet, the input has to be defined in the code.

Example for defining the required input:

# Step 1: Define wing parameters
n_panels = 20          # Number of panels
span = 20.0            # Wing span [m]
chord = 1.0            # Chord length [m]
v_a = 20.0             # Magnitude of inflow velocity [m/s]
density = 1.225        # Air density [kg/m³]
alpha_deg = 30.0       # Angle of attack [degrees]
alpha = deg2rad(alpha_deg)

# Step 2: Create wing geometry with linear panel distribution
wing = Wing(n_panels, spanwise_panel_distribution=LINEAR)

# Add wing sections - defining only tip sections with inviscid airfoil model
add_section!(wing, 
    [0.0, span/2, 0.0],    # Left tip LE 
    [chord, span/2, 0.0],  # Left tip TE
    INVISCID)
add_section!(wing, 
    [0.0, -span/2, 0.0],   # Right tip LE
    [chord, -span/2, 0.0], # Right tip TE
    INVISCID)

# Step 3: Initialize aerodynamics
wa = BodyAerodynamics([wing])

# Set inflow conditions
vel_app = [cos(alpha), 0.0, sin(alpha)] .* v_a
set_va!(wa, vel_app)

It is possible to import the wing geometry using an .obj file as shown in the example ram_air_kite.jl. During the import the polars are calculated automatically using XFoil. This approach is valid for rigid wings and ram-air kites, but not for leading edge inflatable kites.

Surfplan files can be converted to an input for VortexStepMethod.jl using the SurfplanAdapter.

Output

  • the aerodynamic forces Fx, Fy, Fz
  • the aerodynamic moments Mx, My, Mz
  • the force coefficients CL, CD, CS (side force coefficient)
  • the status of the solver (is the result valid)

In addition, the spanwise distribution of these and additional values are available.

See also the documentation.

Citation

If you use this project in your research, please consider citing it. Citation details can be found in the CITATION.cff file included in this repository.

License

This project is licensed under the MIT License - see the LICENSE file for details.

WAIVER

Technische Universiteit Delft hereby disclaims all copyright interest in the package “VortexStepMethod.jl” written by the Author(s).

Prof.dr. H.G.C. (Henri) Werij, Dean of Aerospace Engineering

Copyright

Copyright (c) 2022 Oriol Cayon

Copyright (c) 2024 Oriol Cayon, Jelle Poland, TU Delft

Copyright (c) 2025 Oriol Cayon, Jelle Poland, Bart van de Lint, Uwe Fechner