SymbolicAWEModels

Documentation for the package SymbolicAWEModels.

This package provides modular symbolic models of Airborne Wind Energy (AWE) systems, which consist of one or more wings, tethers, winches and a bridle system with or without pulleys. The kite is modeled as a deforming rigid body with orientation governed by quaternion dynamics. The aerodynamic forces and moments are computed using the Vortex Step Method. The tether is modeled as point masses connected by spring-damper elements, with aerodynamic drag modeled realistically. The winchs are modeled as motors/generators that can reel in or out the tethers.

The SymbolicAWEModel has the following subcomponents implemented in separate packages:

This package is part of the Julia Kite Power Tools, which consist of the following packages:

Julia Kite Power Tools

Installation

Install Julia 1.11 using juliaup, if you haven't already. On Linux, make sure that Python3 and Matplotlib are installed:

sudo apt install python3-matplotlib

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

mkdir test
cd test
julia --project="."

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

using Pkg
pkg"add SymbolicAWEModels"

at the Julia prompt. You can run the unit tests with the command (careful, can take 60 min):

pkg"test SymbolicAWEModels"

You can copy the examples to your project with:

using SymbolicAWEModels
SymbolicAWEModels.install_examples()

This also adds the extra packages, needed for the examples to the project. Furthermore, it creates a folder data with some example input files. You can now run the examples with the command:

include("examples/menu.jl")

You can also run the ram-air-kite example like this:

include("examples/ram_air_kite.jl")

This will take some minutes to precompile the first time you run it.

Ram air kite model

This model represents the kite as a deforming rigid body, with orientation governed by quaternion dynamics. Aerodynamics are computed using the Vortex Step Method. The kite is controlled from the ground via four tethers.

Initialize:

using SymbolicAWEModels, ControlPlots
set = Settings("system.yaml")
sam = SymbolicAWEModel(set, "ram")
init!(sam)

Simulate and plot:

log = sim_oscillate!(sam)
plot(sam.sys_struct, log; plot_all=false, plot_heading=true)

Ram heading

The simple_ram model removes the bridle system, and has 1-segment tethers. The tether properties and attach points can be approximated using the complex ram air kite model and a helper tether model. This makes the heading response of the simple model very close to the heading response of the complex model.

Initialize:

init!(sam)
tether_sam = SymbolicAWEModel(set, "tether")
init!(tether_sam)
simple_sam = SymbolicAWEModel(set, "simple_ram")
init!(simple_sam)

Simulate and plot:

SymbolicAWEModels.copy_to_simple!(sam, tether_sam, simple_sam)
simple_log = sim_oscillate!(simple_sam)
plot(simple_sam.sys_struct, simple_log; plot_all=false, plot_heading=true)

Simple ram heading

See also

Questions?

If you have any questions or problems, please submit an issue or start a discussion. The Julia community is also very helpful: Julia Discourse. You can also send an email to Bart van de Lint (bart@vandelint.net).

Authors: Bart van de Lint (bart@vandelint.net), Uwe Fechner (uwe.fechner.msc@gmail.com)