Skip to content

Commit b815836

Browse files
authored
Improve readme (#145)
* Remove unused scripts * Update readme
1 parent 845b583 commit b815836

File tree

5 files changed

+141
-143
lines changed

5 files changed

+141
-143
lines changed

README.md

Lines changed: 140 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -13,28 +13,49 @@ SPDX-License-Identifier: MPL-2.0
1313

1414
## Overview
1515

16-
**SymbolicAWEModels.jl** provides modular symbolic models for simulating Airborne Wind Energy (AWE) systems, including:
16+
**SymbolicAWEModels.jl** is a **compiler** for mechanical systems, built for
17+
**Airborne Wind Energy** (AWE) modelling. It takes a structural description
18+
of a system — defined in Julia code or a YAML file — and compiles it into
19+
an efficient ODE solver using
20+
[ModelingToolkit.jl](https://github.com/SciML/ModelingToolkit.jl).
1721

18-
- One or more wings (kites)
19-
- Tethers (with or without pulleys)
20-
- Winches
21-
- Bridle systems
22+
```
23+
Define Components Assemble Compile Simulate
24+
┌──────────────────┐ ┌──────────────┐ ┌─────────────────┐ ┌────────────┐
25+
│ Point, Segment, │──▶│ System │───▶│ SymbolicAWE │───▶│ init!() │
26+
│ Wing, Winch, ... │ │ Structure │ │ Model │ │ next_step! │
27+
│ │ │ │ │ (symbolic eqs → │ │ sim!() │
28+
│ Julia or YAML │ │ (resolves │ │ ODEProblem) │ │ │
29+
│ │ │ references) │ │ │ │ │
30+
└──────────────────┘ └──────────────┘ └─────────────────┘ └────────────┘
31+
```
2232

23-
The kite is modeled as a deforming rigid body with quaternion dynamics for orientation. Aerodynamic forces and moments are computed using the [Vortex Step Method](https://github.com/Albatross-Kite-Transport/VortexStepMethod.jl). Tethers are modeled as point masses connected by spring-damper elements with realistic drag. Winches are modeled as motors/generators that can reel tethers in/out.
33+
The first compilation is slow (minutes) as ModelingToolkit generates and
34+
simplifies the symbolic equations. The result is cached to a binary file,
35+
making subsequent runs fast (seconds).
2436

25-
### Modular Subcomponents
37+
### What can it model?
2638

27-
- **AtmosphericModel** from [AtmosphericModels.jl](https://github.com/aenarete/AtmosphericModels.jl)
28-
- **WinchModel** from [WinchModels.jl](https://github.com/aenarete/WinchModels.jl)
29-
- **Aerodynamics** via [VortexStepMethod.jl](https://github.com/Albatross-Kite-Transport/VortexStepMethod.jl)
39+
SymbolicAWEModels provides building blocks for flexible mechanical systems:
3040

31-
This package is part of the Julia Kite Power Tools ecosystem:
41+
- **Point** masses — static, dynamic, or quasi-static nodes
42+
- **Segment** spring-dampers — with per-unit-length stiffness, damping,
43+
and drag
44+
- **Tether**s — collections of segments controlled by a winch
45+
- **Winch**es — torque-controlled motors with Coulomb and viscous friction
46+
- **Pulley**s — equal-tension constraints between segments
47+
- **Wing**s — rigid body quaternion dynamics with aerodynamic forces from
48+
the [Vortex Step Method](https://github.com/Albatross-Kite-Transport/VortexStepMethod.jl)
49+
- **Group**s — twist degrees of freedom for aeroelastic coupling
50+
- **Transform**s — spherical coordinate positioning of components
3251

33-
![Julia Kite Power Tools](docs/src/kite_power_tools.png)
52+
These components can be combined to model a wide range of systems, from
53+
simple hanging masses to complex kite power systems with multiple tethers,
54+
bridles, and wings.
3455

3556
---
3657

37-
## Installation
58+
## Quick Start
3859

3960
Install Julia using [juliaup](https://github.com/JuliaLang/juliaup):
4061

@@ -44,45 +65,71 @@ juliaup add release
4465
juliaup default release
4566
```
4667

47-
**Quick Start:**
68+
Create a project and add SymbolicAWEModels:
4869

4970
```bash
50-
mkdir my_kite_project
51-
cd my_kite_project
71+
mkdir my_project && cd my_project
5272
julia --project="."
5373
```
5474

55-
Then add the package and copy examples:
56-
5775
```julia
5876
using Pkg
5977
pkg"add SymbolicAWEModels"
60-
61-
using SymbolicAWEModels
62-
SymbolicAWEModels.init_module() # Copies examples and installs dependencies
6378
```
6479

65-
Run the interactive example menu:
80+
### Minimal example — a pendulum
6681

6782
```julia
68-
include("examples/menu.jl")
83+
using SymbolicAWEModels
84+
85+
set = Settings("system.yaml")
86+
set.v_wind = 0.0
87+
88+
# Define components using symbolic names
89+
points = [
90+
Point(:anchor, [0, 0, 0], STATIC),
91+
Point(:mass, [0, 0, -50], DYNAMIC; extra_mass=1.0),
92+
]
93+
segments = [Segment(:spring, set, :anchor, :mass, BRIDLE)]
94+
transforms = [Transform(:tf, deg2rad(-80), 0.0, 0.0;
95+
base_pos=[0, 0, 50], base_point=:anchor, rot_point=:mass)]
96+
97+
# Assemble and compile
98+
sys = SystemStructure("pendulum", set; points, segments, transforms)
99+
sam = SymbolicAWEModel(set, sys)
100+
init!(sam)
101+
102+
# Simulate
103+
for _ in 1:100
104+
next_step!(sam)
105+
end
69106
```
70107

71-
> **Note:** The first run will be slow (several minutes) due to compilation. Run a second time for a significant speedup - subsequent runs will be much faster.
108+
For the full tutorial, see
109+
[Building a System using Julia](https://OpenSourceAWE.github.io/SymbolicAWEModels.jl/dev/tutorial_julia/).
110+
For YAML-based model definition, see
111+
[Building a System using YAML](https://OpenSourceAWE.github.io/SymbolicAWEModels.jl/dev/tutorial_yaml/).
112+
113+
> **Note:** The first run will be slow (several minutes) due to
114+
> compilation. Subsequent runs will be much faster thanks to binary
115+
> caching.
72116
73-
See the [Getting Started Guide](https://OpenSourceAWE.github.io/SymbolicAWEModels.jl/dev/getting_started/) for detailed instructions for registry users, cloned package users, and developers.
117+
See the [Getting Started Guide](https://OpenSourceAWE.github.io/SymbolicAWEModels.jl/dev/getting_started/)
118+
for detailed instructions.
74119

75120
---
76121

77122
## Kite Models
78123

79-
SymbolicAWEModels provides the building blocks for assembling kite models from
80-
YAML or Julia constructors. Ready-to-use kite models live in dedicated packages:
124+
SymbolicAWEModels provides the building blocks for assembling kite models
125+
from YAML or Julia constructors. Ready-to-use kite models live in dedicated
126+
packages:
81127

82-
- **[RamAirKite.jl](https://github.com/OpenSourceAWE/RamAirKite.jl)** — Ram
83-
air kite with bridle system, 4-tether steering, and deformable wing groups
84-
- **[V3Kite.jl](https://github.com/OpenSourceAWE/V3Kite.jl)** — TU Delft V3
85-
leading-edge-inflatable kite, YAML-based configuration
128+
- **[RamAirKite.jl](https://github.com/OpenSourceAWE/RamAirKite.jl)**
129+
Ram air kite with bridle system, 4-tether steering, and deformable wing
130+
groups
131+
- **[V3Kite.jl](https://github.com/OpenSourceAWE/V3Kite.jl)** — TU Delft
132+
V3 leading-edge-inflatable kite, YAML-based configuration
86133

87134
### 2-Plate Kite Example
88135

@@ -92,33 +139,81 @@ A minimal coupled aero-structural model included in `data/2plate_kite/`:
92139
using SymbolicAWEModels, VortexStepMethod
93140

94141
set_data_path("data/2plate_kite")
142+
143+
# Sync aero geometry from structural geometry
95144
struc_yaml = joinpath(get_data_path(), "quat_struc_geometry.yaml")
145+
aero_yaml = joinpath(get_data_path(), "aero_geometry.yaml")
146+
update_aero_yaml_from_struc_yaml!(struc_yaml, aero_yaml)
147+
148+
# Load settings and VSM configuration
96149
set = Settings("system.yaml")
97150
vsm_set = VortexStepMethod.VSMSettings(
98151
joinpath(get_data_path(), "vsm_settings.yaml"))
99152

153+
# Build system structure from YAML
100154
sys = load_sys_struct_from_yaml(struc_yaml;
101155
system_name="2plate_kite", set, vsm_set)
156+
102157
sam = SymbolicAWEModel(set, sys)
103158
init!(sam)
104-
```
105159

106-
For visualization with Makie, see the [Examples](https://OpenSourceAWE.github.io/SymbolicAWEModels.jl/dev/examples/) page.
160+
# Run with a steering ramp
161+
for step in 1:600
162+
t = step * (10.0 / 600)
163+
ramp = clamp(t / 2.0, 0.0, 1.0)
164+
sam.sys_struct.segments[:kcu_steering_left].l0 -= 0.1 * ramp
165+
sam.sys_struct.segments[:kcu_steering_right].l0 += 0.1 * ramp
166+
next_step!(sam; dt=10.0/600, vsm_interval=1)
167+
end
168+
```
107169

108170
![2-plate kite structure](docs/src/assets/2plate_kite_structure.png)
109171

172+
### Running examples
173+
174+
Copy examples to your project and run the interactive menu:
175+
176+
```julia
177+
using SymbolicAWEModels
178+
SymbolicAWEModels.init_module()
179+
include("examples/menu.jl")
180+
```
181+
182+
For visualization, `using GLMakie` enables the built-in plotting extension.
183+
See the [Examples](https://OpenSourceAWE.github.io/SymbolicAWEModels.jl/dev/examples/)
184+
page for details.
185+
110186
---
111187

112-
## See Also
188+
## Ecosystem
189+
190+
Key related packages:
191+
192+
- [RamAirKite.jl](https://github.com/OpenSourceAWE/RamAirKite.jl) — ram
193+
air kite model
194+
- [V3Kite.jl](https://github.com/OpenSourceAWE/V3Kite.jl) — TU Delft V3
195+
kite model
196+
- [KiteUtils.jl](https://github.com/OpenSourceAWE/KiteUtils.jl) — shared
197+
types and utilities
198+
- [VortexStepMethod.jl](https://github.com/Albatross-Kite-Transport/VortexStepMethod.jl)
199+
— aerodynamic solver
200+
- [AtmosphericModels.jl](https://github.com/aenarete/AtmosphericModels.jl)
201+
— wind profiles
202+
- [KiteModels.jl](https://github.com/ufechner7/KiteModels.jl)
203+
non-symbolic, predefined kite models
204+
- [KiteSimulators.jl](https://github.com/aenarete/KiteSimulators.jl)
205+
meta-package
206+
- [KiteControllers.jl](https://github.com/aenarete/KiteControllers.jl)
207+
control algorithms
208+
209+
Visualisation uses the built-in GLMakie extension
210+
(`ext/SymbolicAWEModelsMakieExt.jl`) — just `using GLMakie` to enable
211+
plotting.
212+
213+
- [Research Fechner](https://research.tudelft.nl/en/publications/?search=Fechner+wind&pageSize=50&ordering=rating&descending=true)
214+
— scientific background for winches and tethers
113215

114-
- **Kite models:** [RamAirKite.jl](https://github.com/OpenSourceAWE/RamAirKite.jl), [V3Kite.jl](https://github.com/OpenSourceAWE/V3Kite.jl)
115-
- [Research Fechner](https://research.tudelft.nl/en/publications/?search=Fechner+wind&pageSize=50&ordering=rating&descending=true) – scientific background for winches and tethers
116-
- More kite models: [KiteModels.jl](https://github.com/ufechner7/KiteModels.jl)
117-
- Meta-package: [KiteSimulators.jl](https://github.com/aenarete/KiteSimulators.jl)
118-
- Utilities: [KiteUtils.jl](https://github.com/OpenSourceAWE/KiteUtils.jl)
119-
- Component models: [WinchModels.jl](https://github.com/aenarete/WinchModels.jl), [KitePodModels.jl](https://github.com/aenarete/KitePodModels.jl), [AtmosphericModels.jl](https://github.com/aenarete/AtmosphericModels.jl)
120-
- Controllers and viewers: [KiteControllers.jl](https://github.com/aenarete/KiteControllers.jl), [KiteViewers.jl](https://github.com/aenarete/KiteViewers.jl)
121-
- Aerodynamics: [VortexStepMethod.jl](https://github.com/Albatross-Kite-Transport/VortexStepMethod.jl)
216+
![Julia Kite Power Tools](docs/src/kite_power_tools.png)
122217

123218
---
124219

@@ -129,8 +224,8 @@ For visualization with Makie, see the [Examples](https://OpenSourceAWE.github.io
129224
- Ask on [Julia Discourse](https://discourse.julialang.org/)
130225
- Email Bart van de Lint: bart@vandelint.net
131226

132-
**Authors:**
133-
Bart van de Lint (bart@vandelint.net)
227+
**Authors:**
228+
Bart van de Lint (bart@vandelint.net)
134229
Uwe Fechner (uwe.fechner.msc@gmail.com)
135230
Jelle Poland
136231

@@ -159,10 +254,8 @@ If you use SymbolicAWEModels in your research, please cite this repository:
159254

160255
## Copyright Notice
161256

162-
Technische Universiteit Delft hereby disclaims all copyright interest in the package SymbolicAWEModels.jl (symbolic models for airborne wind energy systems) written by the Author(s).
257+
Technische Universiteit Delft hereby disclaims all copyright interest in the package "SymbolicAWEModels.jl" (symbolic models for airborne wind energy systems) written by the Author(s).
163258

164259
Prof.dr. H.G.C. (Henri) Werij, Dean of Aerospace Engineering, Technische Universiteit Delft.
165260

166261
See copyright notices in the source files and the list of authors in [AUTHORS.md](AUTHORS.md).
167-
168-
**Documentation** [Stable Version](https://OpenSourceAWE.github.io/SymbolicAWEModels.jl/stable) --- [Development Version](https://OpenSourceAWE.github.io/SymbolicAWEModels.jl/dev)

docs/src/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,4 +131,4 @@ If you have questions or problems, please submit an
131131
The Julia community is also very helpful:
132132
[Julia Discourse](https://discourse.julialang.org/).
133133

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

scripts/create_model_archive.jl

Lines changed: 0 additions & 19 deletions
This file was deleted.

scripts/create_test_sams.jl

Lines changed: 0 additions & 7 deletions
This file was deleted.

scripts/update_artifacts.jl

Lines changed: 0 additions & 69 deletions
This file was deleted.

0 commit comments

Comments
 (0)