Skip to content
Merged
Show file tree
Hide file tree
Changes from 15 commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
7b5a071
Add billowing mode and example
1-Bart-1 Mar 18, 2026
b38946e
Improve plotting legends
1-Bart-1 Mar 18, 2026
26c5f77
Update docs news and project
1-Bart-1 Mar 18, 2026
62de74d
Update settings
1-Bart-1 Mar 18, 2026
bdfede8
Working billowing
1-Bart-1 Apr 4, 2026
270f5bd
Merge branch 'main' into billowing
1-Bart-1 Apr 4, 2026
ad9d635
Update billowing to use catenary
1-Bart-1 Apr 5, 2026
a3d1a52
Print billowing diff
1-Bart-1 Apr 5, 2026
703b071
Improve coverage and fix direction
1-Bart-1 Apr 6, 2026
7d2f598
Merge branch 'main' into updated-billowing
1-Bart-1 Apr 11, 2026
2a85137
Address claude review comments
1-Bart-1 Apr 11, 2026
e6d45e5
Merge branch 'updated-billowing' of https://github.com/Albatross-Kite…
1-Bart-1 Apr 11, 2026
740a071
Warn on no op
1-Bart-1 Apr 11, 2026
475b48e
Add warning to earlier fast path
1-Bart-1 Apr 11, 2026
f992279
Remove duplicate code
1-Bart-1 Apr 11, 2026
ee2344b
Add plot tests
1-Bart-1 Apr 11, 2026
450bf02
Add cl over cd kwarg
1-Bart-1 Apr 11, 2026
def0d92
Merge branch 'main' into updated-billowing
ufechner7 Apr 11, 2026
02771a3
Add constructor that uses Int64 for the number of panels
ufechner7 Apr 11, 2026
06c5caa
Activate project
ufechner7 Apr 11, 2026
645cf71
Fix warnings
ufechner7 Apr 11, 2026
021641e
Fix bug
1-Bart-1 Apr 11, 2026
152bf58
Merge branch 'updated-billowing' of https://github.com/Albatross-Kite…
1-Bart-1 Apr 11, 2026
077e543
Address copilot comments
1-Bart-1 Apr 11, 2026
0736388
Fix typos in yaml file
ufechner7 Apr 11, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions NEWS.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,25 @@
## Unreleased

### Breaking
- `billowing_angle` replaced by `billowing_percentage` on `Wing` and
`WingSettings` (percentage of arc length, not radians)
- `billowing_angle_from_percentage()` removed
- `BILLOWING` distribution now uses sinusoidal rotation instead of circular arc

### Added
- `billowing.jl` example comparing flat vs billowed V3 kite
- Coarse V3 kite geometry, settings, and combined CFD polar data
- `cl_over_cd` keyword for `plot_polars` and `plot_combined_analysis`

### Changed
- Plot legends moved to shared horizontal legend at bottom of grid layouts

### Fixed
- Domain error in elliptical gamma distribution when control points lie
outside the nominal span envelope

## VortexStepMethod v3.0.1 2025-04-04

### Changed
- the file `CITATION.cff`
- compat entry for RecursiveArrayTools
Expand Down
2 changes: 1 addition & 1 deletion Project.toml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name = "VortexStepMethod"
uuid = "ed3cd733-9f0f-46a9-93e0-89b8d4998dd9"
version = "3.0.1"
authors = ["1-Bart-1 <bart@vandelint.net>", "Oriol Cayon and contributors"]
version = "3.0.1"

[deps]
Colors = "5ae59095-9a9b-59fe-a467-6f913c188581"
Expand Down
171 changes: 171 additions & 0 deletions data/TUDELFT_V3_KITE/aero_geometry_coarse_discretisation.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,171 @@
wing_sections:
# ---------------------------------------------------------------
# headers:
# - airfoil_id: integer, unique identifier for the airfoil (matches wing_airfoils)
# - LE_x: x-coordinate of leading edge
# - LE_y: y-coordinate of leading edge
# - LE_z: z-coordinate of leading edge
# - TE_x: x-coordinate of trailing edge
# - TE_y: y-coordinate of trailing edge
# - TE_z: z-coordinate of trailing edge
# ---------------------------------------------------------------
# NOTE: Reduced to 10 sections to match 20 structural WING points (10 LE/TE pairs)
# Constraint: n_structural_points (20) == 2 * n_vsm_sections (10)
# Selected sections match structural point spanwise positions
headers: [airfoil_id, LE_x, LE_y, LE_z, TE_x, TE_y, TE_z]
data:
# Sections match structural points exactly from struc_geometry.yaml
# Section 1: points 2 (LE) and 3 (TE)
- [
18,
-0.16686417,
4.07190711,
8.25938552,
0.8950856,
4.23504033,
8.28564737,
]
# Section 2: points 4 (LE) and 5 (TE)
- [
15,
-0.66385373,
3.97158462,
9.10345727,
0.84466799,
4.04893109,
9.16869541,
]
# Section 3: points 6 (LE) and 7 (TE)
- [
11,
-1.00179344,
3.13938093,
10.08117033,
0.95411064,
3.19044693,
10.20618443,
]
# Section 4: points 8 (LE) and 9 (TE)
- [
7,
-1.11933902,
1.96778538,
10.69146438,
1.03150699,
1.98490264,
10.81013669,
]
# Section 5: points 10 (LE) and 11 (TE)
- [
3,
-1.16537227,
0.67379745,
10.96630823,
1.09790203,
0.6605361,
11.06585663,
]
# Section 6: points 12 (LE) and 13 (TE) - mirror of section 5
- [
3,
-1.16537227,
-0.67379745,
10.96630823,
1.09790203,
-0.6605361,
11.06585663,
]
# Section 7: points 14 (LE) and 15 (TE) - mirror of section 4
- [
7,
-1.11933902,
-1.96778538,
10.69146438,
1.03150699,
-1.98490264,
10.81013669,
]
# Section 8: points 16 (LE) and 17 (TE) - mirror of section 3
- [
11,
-1.00179344,
-3.13938093,
10.08117033,
0.95411064,
-3.19044693,
10.20618443,
]
# Section 9: points 18 (LE) and 19 (TE) - mirror of section 2
- [
15,
-0.66385373,
-3.97158462,
9.10345727,
0.84466799,
-4.04893109,
9.16869541,
]
# Section 10: points 20 (LE) and 21 (TE) - mirror of section 1
- [
18,
-0.16686417,
-4.07190711,
8.25938552,
0.8950856,
-4.23504033,
8.28564737,
]

wing_airfoils:
# ---------------------------------------------------------------
# headers:
# - airfoil_id: integer, unique identifier for the airfoil
# - type: one of [neuralfoil, breukels_regression, masure_regression, polars]
# - info_dict: dictionary with parameters depending on 'type'
#
# info_dict fields by type:
# - breukels_regression:
# t: Tube diameter non-dimensionalized by chord (required)
# kappa: Maximum camber height/magnitude, non-dimensionalized by chord (required)
# - neuralfoil:
# dat_file_path: Path to airfoil .dat file (x, y columns)
# model_size: NeuralFoil model size (e.g., "xxxlarge")
# xtr_lower: Lower transition location (0=forced, 1=free)
# xtr_upper: Upper transition location
# n_crit: Critical amplification factor (see guidelines below)
# n_crit guidelines:
# Sailplane: 12–14
# Motorglider: 11–13
# Clean wind tunnel: 10–12
# Average wind tunnel: 9 (standard "e^9 method")
# Dirty wind tunnel: 4–8
# - polars:
# csv_file_path: Path to polar CSV file (columns: alpha [rad], cl, cd, cm)
# - masure_regression:
# t, eta, kappa, delta, lamba, phi: Regression parameters
# - inviscid:
# no further data is required
# ---------------------------------------------------------------
alpha_range: [-15, 50, 0.5] # [deg], in this range the polars are calculated
reynolds: !!float 1e6 # Reynolds number
headers: [airfoil_id, type, info_dict]
data:
- [1, polars, { csv_file_path: '2D_polars_drag_adjusted/1.csv' }]
- [2, polars, { csv_file_path: '2D_polars_drag_adjusted/2.csv' }]
- [3, polars, { csv_file_path: '2D_polars_drag_adjusted/3.csv' }]
- [4, polars, { csv_file_path: '2D_polars_drag_adjusted/4.csv' }]
- [5, polars, { csv_file_path: '2D_polars_drag_adjusted/5.csv' }]
- [6, polars, { csv_file_path: '2D_polars_drag_adjusted/6.csv' }]
- [7, polars, { csv_file_path: '2D_polars_drag_adjusted/7.csv' }]
- [8, polars, { csv_file_path: '2D_polars_drag_adjusted/8.csv' }]
- [9, polars, { csv_file_path: '2D_polars_drag_adjusted/9.csv' }]
- [10, polars, { csv_file_path: '2D_polars_drag_adjusted/10.csv' }]
- [11, polars, { csv_file_path: '2D_polars_drag_adjusted/11.csv' }]
- [12, polars, { csv_file_path: '2D_polars_drag_adjusted/12.csv' }]
- [13, polars, { csv_file_path: '2D_polars_drag_adjusted/13.csv' }]
- [14, polars, { csv_file_path: '2D_polars_drag_adjusted/14.csv' }]
- [15, polars, { csv_file_path: '2D_polars_drag_adjusted/15.csv' }]
- [16, polars, { csv_file_path: '2D_polars_drag_adjusted/16.csv' }]
- [17, polars, { csv_file_path: '2D_polars_drag_adjusted/17.csv' }]
- [18, polars, { csv_file_path: '2D_polars_drag_adjusted/18.csv' }]
- [19, polars, { csv_file_path: '2D_polars_drag_adjusted/19.csv' }]
132 changes: 132 additions & 0 deletions data/TUDELFT_V3_KITE/polars_CFD_NF_combined/1.csv
Original file line number Diff line number Diff line change
@@ -0,0 +1,132 @@
alpha,Cl,Cd,Cm
-14.999999999999998,-0.7815989424727691,0.26690486928639234,0.1513115712127311
-14.500000000000002,-0.7679947698959011,0.25692290939919615,0.1513115712127311
-14.0,-0.7562722014431007,0.2469409495119998,0.1513115712127311
-13.5,-0.745785223671694,0.2369589896248035,0.1513115712127311
-13.0,-0.735887823139006,0.2269770297376072,0.1513115712127311
-12.5,-0.7259339864023624,0.2169950698504109,0.1513115712127311
-12.000000000000002,-0.7152777000190882,0.2070131099632146,0.1513115712127311
-11.5,-0.7032729505465092,0.19703115007601826,0.1513115712127311
-11.0,-0.6892737245419506,0.18704919018882196,0.1513115712127311
-10.5,-0.6726340085627378,0.17706723030162563,0.1513115712127311
-10.0,-0.6527077891661963,0.16708527041442933,0.1513115712127311
-9.5,-0.6288490529096514,0.15710331052723303,0.1513115712127311
-9.0,-0.6004117863504287,0.14712135064003673,0.1513115712127311
-8.5,-0.5667499760458534,0.13713939075284043,0.1513115712127311
-8.0,-0.5272176085532508,0.1271574308656441,0.1513115712127311
-7.499999999999999,-0.4811686704299466,0.11717547097844778,0.15131157121273106
-7.0,-0.4324606994688453,0.10760532853756,0.1367939817737111
-6.5,-0.3853819090913009,0.0988588209892892,0.1228446364449695
-6.000000000000001,-0.33992582965760837,0.09097570035474242,0.10946484035339861
-5.5,-0.2960859915280623,0.0839957186550263,0.096655898625891
-5.0,-0.2538559250629577,0.0779586279112478,0.0844191163893389
-4.5,-0.2159550434674728,0.0727676807943206,0.0730550516548853
-4.0,-0.1829588587323138,0.0682091846241277,0.0626174354043963
-3.5,-0.1516450493960662,0.0641474733952293,0.0527373322208485
-3.0000000000000004,-0.11879129399731583,0.06044688110218561,0.04304580668721851
-2.5,-0.0811752710746482,0.0569717417395568,0.0331739233864828
-2.0,-0.0355746591666493,0.0535863893019032,0.0227527469016182
-1.5000000000000002,0.02622609975082757,0.0503504235725568,0.011481449300827406
-1.0,0.1042908628198079,0.0473577829911575,-0.0002656553047875
-0.5,0.189614400178524,0.0445243095367264,-0.0118447892679018
0.0,0.2731914819652083,0.0417658451882849,-0.0226121749411904
0.5,0.3557444890017091,0.0389381585076991,-0.0333669989367228
1.0,0.4410912179803868,0.0361177702917579,-0.0442048470204237
1.5000000000000002,0.5248695628452424,0.0335516508718663,-0.0534265402757499
2.0,0.6027174175402769,0.0314867705794295,-0.0593328997861588
2.5,0.6754871235581754,0.0297377823224889,-0.062876045362109
3.0000000000000004,0.7466883077319688,0.0280002546859699,-0.066107795616861
3.5,0.8159447920161751,0.0263425315166031,-0.0689785198380737
4.0,0.882880398365313,0.0248329566611191,-0.0714385873134062
4.5,0.9471189487339008,0.0235398739662487,-0.0734383673305175
5.0,1.0082842650764576,0.0225316272787223,-0.0749282291770668
5.5,1.0660001693475016,0.0218765604452707,-0.0758585421407131
6.000000000000001,1.1198904835015508,0.0216430173126245,-0.0761796755091154
6.5,1.1730032825989054,0.0218555027472603,-0.0761431700685285
7.0,1.2273051287313683,0.0224768133900758,-0.076046928452436
7.499999999999999,1.2807975744007138,0.023482730749432898,-0.0759108627193397
8.0,1.3314821721087169,0.0248490363336937,-0.0757548849277414
8.5,1.3773604743571508,0.0265515116512202,-0.0755989071361432
9.0,1.4164340336477907,0.0285659382103744,-0.0754628414030468
9.5,1.4467044024824105,0.0308680975195183,-0.0753665997869543
10.0,1.4661731333627843,0.033433771087014,-0.0753300943463675
10.5,1.4791075252059551,0.0377295688013173,-0.0779678068495631
11.0,1.4901408957026034,0.0448347835608506,-0.0844740956822261
11.5,1.4978238255149576,0.0541442213889258,-0.09273868782897
12.000000000000002,1.5007068953052467,0.06505268830885434,-0.10065131027440903
12.5,1.4478125078785742,0.0813064038148973,-0.1082854509007945
13.0,1.327791188740308,0.103935104135536,-0.1166130457476011
13.5,1.1986357026030765,0.1282588703954122,-0.124871494035277
14.0,1.1183388141795072,0.1495977837191678,-0.1322981949842703
14.500000000000002,1.0836834275674483,0.16758478702300417,-0.13916224193214982
14.999999999999998,1.054932993623927,0.18464791495839375,-0.1458109752380202
15.5,1.0353010972003385,0.2002998862528848,-0.1515991646546333
16.0,1.028001323148079,0.2140534196340252,-0.155881579934741
16.5,1.0279465928930964,0.2257591150787353,-0.1588574292964903
17.0,1.027907459623104,0.2360936683707948,-0.1612711173409803
17.5,1.0278839558321435,0.2458089419480403,-0.1632952083953905
18.0,1.0278761140142585,0.2556567982483086,-0.1651022667869003
18.5,1.0281104344749106,0.265699815399311,-0.1666975270932829
19.0,1.0287640929905735,0.2755864659301079,-0.168072974392968
19.5,1.03003152465829,0.28544745388056,-0.1693812987641203
20.0,1.0318927413652261,0.2954134832905278,-0.1707751902849041
20.5,1.0343277549985475,0.3055500999908466,-0.1723291345944475
21.0,1.0373165774454194,0.3157783912824044,-0.1739528172445241
21.5,1.040839220593008,0.3260123734101406,-0.1755517281822664
22.0,1.0448756963284784,0.3361660626189948,-0.1770313573548068
22.5,1.0494060165389965,0.3462258406278082,-0.1783881334181357
23.0,1.054410193111728,0.3562351526243653,-0.1796770625187123
23.5,1.0598682379338382,0.3661936100570196,-0.180891500839372
24.000000000000004,1.065760162892493,0.37610082437412523,-0.1820248045629501
24.5,1.072065979874858,0.38595640702403533,-0.1830703298722823
25.0,1.078765700768099,0.39644726102272926,-0.18405322166418164
25.5,1.0858393374593813,0.40821883893099,-0.184999313079432
26.0,1.0932669018358705,0.42120896506602284,-0.18590963648398937
26.5,1.1010284057847328,0.43535546374503303,-0.18678522424380997
27.0,1.1091038611931334,0.45059615928522595,-0.18762710872484992
27.5,1.1174732799482379,0.46686887600380683,-0.1884363222930653
28.0,1.1261166739372122,0.48411143821798125,-0.18921389731441246
28.500000000000004,1.1350140550472216,0.5022616702449542,-0.1899608661548473
29.000000000000004,1.1441454351654319,0.5212573964019311,-0.19067826118032608
29.500000000000004,1.1534908261790089,0.5410364410061171,-0.1913671147568049
29.999999999999996,1.163030239975118,0.5615366283747177,-0.19202845925023992
30.5,1.1727436884409246,0.5826957828249386,-0.1926633270265873
31.0,1.182611183463595,0.6044517286739843,-0.1932727504518031
31.5,1.1926127369302943,0.6267422902390609,-0.1938577618918436
32.0,1.2027283607281882,0.6495052918373732,-0.19441939371266478
32.5,1.2129380667444432,0.6726785577861266,-0.19495867828022287
33.0,1.2232218668662236,0.6961999124025267,-0.19547664796047406
33.5,1.2335597729806955,0.7200071800037783,-0.19597433511937432
34.0,1.2439317969750245,0.7440381849070871,-0.19645277212288
34.5,1.2543179507363769,0.7682307514296585,-0.19691299133694712
35.0,1.2646982461519178,0.7925227038886975,-0.19735602512753178
35.5,1.2750526951088124,0.8168518666014095,-0.1977829058605902
36.0,1.2853613094942273,0.8411560638850001,-0.19819466590207854
36.5,1.295604101195327,0.865373120056674,-0.19859233761795284
37.0,1.3057610820992782,0.889440859433637,-0.1989769533741693
37.5,1.3158122640932461,0.9132971063330946,-0.1993495455366841
38.0,1.3257376590643961,0.9368796850722517,-0.19971114647145333
38.5,1.3355172788998944,0.9601264199683138,-0.2000627885444331
39.0,1.3451311354869058,0.9829751353384859,-0.2004055041215796
39.5,1.3545592407125968,1.0053636554999739,-0.200740325568849
40.0,1.3637816064641326,1.0272298047699824,-0.20106828525219733
40.5,1.372778244628679,1.0485114074657174,-0.20139041553758086
41.0,1.3815291670934016,1.0691462879043838,-0.20170774879095565
41.5,1.3900143857454654,1.0890722704031872,-0.20202131737827783
42.0,1.398213912472037,1.1082271792793328,-0.2023321536655036
42.5,1.4061077591602815,1.1265488388500258,-0.20264129001858908
43.0,1.4136759376973649,1.1439750734324712,-0.20294975880349037
43.5,1.4208984599704524,1.160443707343875,-0.20325859238616364
44.0,1.42775533786671,1.1758925649014422,-0.20356882313256508
44.5,1.434226583273303,1.190259470422378,-0.2038814834086507
45.0,1.4402922080773974,1.2034822482238878,-0.20419760558037675
45.5,1.4459322241661583,1.215498722623177,-0.20451822201369937
46.0,1.4511266434267522,1.226246717937451,-0.2048443650745746
46.5,1.4558554777463437,1.2356640584839151,-0.20517706712895872
47.0,1.4600987390120994,1.2436885685797743,-0.20551736054280775
47.5,1.4638364391111838,1.2502580725422339,-0.2058662776820779
48.00000000000001,1.467048589930764,1.2553103946884998,-0.20622485091272533
48.5,1.4697152033580045,1.258783359335777,-0.20659411260070612
49.0,1.471816291280071,1.2606147908012701,-0.2069750951119764
49.5,1.4733318655841299,1.2607425134021857,-0.20736883081249236
50.0,1.4742419381573462,1.2591043514557283,-0.2077763520682101
Loading
Loading