Skip to content

Commit 22e9c68

Browse files
Allowing n aero unequal n struc (#152)
* allow more aero panel input than available struc geometry * Convert to real test * Improve and unify locking * No manifest in git * Improve naming * Update docs for new coupling * Improved tests and updated version --------- Co-authored-by: jellepoland <jellepoland@gmail.com>
1 parent ad2750a commit 22e9c68

17 files changed

+1121
-516
lines changed

CHANGELOG.md

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,42 @@ SPDX-FileCopyrightText: 2025 Uwe Fechner, Bart van de Lint
33
SPDX-License-Identifier: MPL-2.0
44
-->
55

6+
# v0.7.0 DD-02-2026
7+
8+
## Changed
9+
- BREAKING: Julia version requirement raised from 1.10 to 1.11, 1.12.
10+
- `reinit!()` uses a unified code path for all wing types, calling
11+
`match_aero_sections_to_structure!` and
12+
`compute_spatial_group_mapping!` during VSM rebuild.
13+
- `test_bench.jl` refactored from ad-hoc benchmarks into a proper
14+
`@testset` suite with `setup_bench_sam()` helper.
15+
- Added `[workspace]` configuration in `Project.toml` for docs, examples,
16+
scripts, and test sub-projects.
17+
- Manifest files renamed to `.default` suffix and gitignored.
18+
19+
## Added
20+
- Asymmetric aero/structural section counts: aerodynamic and structural
21+
meshes can now have different numbers of sections. When counts differ,
22+
`match_aero_sections_to_structure!()` rebuilds unrefined
23+
sections from structural LE/TE positions while `use_prior_polar=true`
24+
preserves existing refined panel polars. Opt-in via
25+
`use_prior_polar=true` on the VortexStepMethod wing.
26+
- `identify_wing_segments()` — identifies LE/TE pairs from groups
27+
(preferred) or via a consecutive-pair heuristic.
28+
- `compute_spatial_group_mapping!()` — maps groups to VSM sections by
29+
spatial proximity, supporting n_groups != n_aero_sections.
30+
- REFINE wings can now have groups (used for LE/TE pair identification).
31+
- QUATERNION wings can now have `wing_segments` for structural geometry
32+
locking.
33+
- YAML loader fallback LE/TE detection in
34+
`update_aero_yaml_from_struc_yaml!()` when no groups are defined
35+
(consecutive-pair heuristic with x-coordinate check).
36+
- `test_match_aero_sections.jl` — tests geometry matching and polar
37+
interpolation for both REFINE and QUATERNION wings, including
38+
mismatched section counts.
39+
- Helper scripts: `bin/install` (environment setup, Julia version detection)
40+
and `bin/run_julia` (launcher with system image support).
41+
642
# v0.6.1 23-02-2026
743

844
## Fixed

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name = "SymbolicAWEModels"
22
uuid = "9c9a347c-5289-41db-a9b9-25ccc76c3360"
3-
version = "0.6.1"
3+
version = "0.7.0"
44
authors = ["Bart van de Lint <bart@vandelint.net> and contributors"]
55

66
[deps]

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -216,6 +216,7 @@ julia --project=test test/test_point.jl
216216
| `test_principal_body_frame` | Principal vs body frame separation |
217217
| `test_heading_calculation` | Kite heading from tether geometry |
218218
| `test_section_alignment` | VSM section ↔ structural point mapping |
219+
| `test_match_aero_sections` | Asymmetric aero/structural section matching, polar interpolation |
219220
| `test_profile_law` | Atmospheric wind profile verification |
220221
| `test_bench` | Performance regression tracking |
221222

data/2plate_kite/aero_geometry.yaml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,13 @@ wing_sections:
77
headers: [airfoil_id, LE_x, LE_y, LE_z, TE_x, TE_y, TE_z]
88
data:
99
# Right section: points 2 (LE) and 3 (TE)
10-
- [1, -0.5, 1.0, 2.0, 0.5, 1.0, 2.2]
10+
- [1, -0.5, 1.0, 2.0, 0.5, 1.0, 2.3]
1111

1212
# Center section: points 4 (LE) and 5 (TE)
13-
- [1, -0.5, 0.0, 2.5, 0.5, 0.0, 2.7]
13+
- [1, -0.5, 0.0, 2.5, 0.5, 0.0, 2.8]
1414

1515
# Left section: points 6 (LE) and 7 (TE)
16-
- [1, -0.5, -1.0, 2.0, 0.5, -1.0, 2.2]
16+
- [1, -0.5, -1.0, 2.0, 0.5, -1.0, 2.3]
1717

1818
wing_airfoils:
1919
alpha_range: [-180, 180, 1] # deg

docs/Project.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,7 @@ VortexStepMethod = "ed3cd733-9f0f-46a9-93e0-89b8d4998dd9"
1111

1212
[compat]
1313
Documenter = "1.11"
14+
15+
[sources]
16+
SymbolicAWEModels = {path = ".."}
17+

docs/src/private_functions.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,8 @@ SymbolicAWEModels.resolve_ref_spec
133133
SymbolicAWEModels.validate_sys_struct
134134
SymbolicAWEModels.build_name_dict
135135
SymbolicAWEModels.identify_wing_segments
136+
SymbolicAWEModels.match_aero_sections_to_structure!
137+
SymbolicAWEModels.compute_spatial_group_mapping!
136138
SymbolicAWEModels.init_untransformed_components!
137139
SymbolicAWEModels.adjust_vsm_panels_to_origin!
138140
SymbolicAWEModels.apply_aero_z_offset!

docs/src/tutorial_julia.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
EditURL = "literate/tutorial_julia.jl"
33
```
44

5+
Copyright (c) 2025 Bart van de Lint, Jelle Poland
6+
SPDX-License-Identifier: MPL-2.0
7+
58
```@meta
69
CurrentModule = SymbolicAWEModels
710
```

0 commit comments

Comments
 (0)