Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
17 changes: 17 additions & 0 deletions NEWS.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,20 @@
## VortexStepMethod v3.1.0 2026-03-18

### Added
- `BILLOWING` panel distribution with circular arc TE billowing between ribs
- `billowing_angle` field on `Wing` and `WingSettings`
- `billowing_angle_from_percentage()` utility function
- `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-03-17
### Changed
- the file `CITATION.cff`
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"
authors = ["1-Bart-1 <bart@vandelint.net>", "Oriol Cayon and contributors"]
version = "3.0.1"
version = "3.1.0"

[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