Skip to content
Draft
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
26 changes: 24 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,31 @@
is not drawn, and still names the saved file and window.
- The panel plots (`plot!(ax, panel)`, `plot!(ax, body)`, `plot(panel)`, `plot(body)`)
take `border_color`, default `:black`, for the panel outlines.
- `VSMSolution.f_attached_trailed` gives the attached trailed part of each panel's force.

### Changed

- BREAKING: the solver is changed to agree with the Python VSM v2.3.0 and Gaunaa, Li &
Pirrung 2026, and default results now agree with Python v2.3.0 within 1e-5 on nine
reference cases. The circulation is `0.5 |V_eff| c Cl`; the panel chord and chordwise axis
are square to the bound vortex; `correct_aoa` and `is_with_attached_trailed_force` default
to `true`; the flow turning the forces includes a curved bound vortex correction; drag
acts along that flow; each wake ring follows its own panel's inflow; trailing vortex cores
grow with the distance from their line; `q_ref` and the reference directions leave out
body rates; attached trailed forces are shared per section boundary; `cd` beyond a
`POLAR_VECTORS` table is held, not extrapolated. Swept and curved wings move most: the V3
kite at 8° goes from `cl` 1.051, `cd` 0.491 to Python's 1.099, 0.458. The paper's elliptic
wing of aspect ratio 4 reaches Oswald efficiency 0.9947; swept wings still differ from the
paper (#416).
- BREAKING: `max_iterations` defaults to 5000 and `relaxation_factor` to `nothing`, meaning
0.8 of the largest stable factor, which is lower than the old 0.03 on narrow or high-slope
panels.
- BREAKING: `*_unrefined_dist` coefficients and angles are area-weighted means of their
panels, and `chord_unrefined_dist` is area over width.
- BREAKING: `moment_unrefined_dist` is the sum of its panels' moments, not their mean, so it
and the `linearize` outputs and Jacobian rows taken from it grow with the panels per
section.
- `velocity_3D_trailing_vortex_semiinfinite!` returns zero on its own axis, not `NaN`.
- BREAKING: `solve` and `calculate_results` are removed; use `solve!`, which returns the
solver's `VSMSolution`, and `solve!(solver, body_aero, nothing)` to start from a fresh
circulation as `solve` did. Keys that became other fields: `Fx`/`Fy`/`Fz` → `force`,
Expand All @@ -27,8 +49,8 @@
- BREAKING: `plot_distribution` and `plot_combined_analysis` take `VSMSolution`s instead of
dictionaries. `plot_combined_analysis`, `plot_polars` and `generate_polar_data` solve
through `solve!`, so they leave `solver.sol` at their last angle.
- `correct_aoa` applies to the VSM model only. With LLT, results that came from `solve`
move by up to 0.34 % in `cl`, 0.43 % in `cd` and 4.5 % in `cmx`.
- BREAKING: `correct_aoa` applies to the VSM model only. With LLT, results that came from
`solve` move by up to 0.34 % in `cl`, 0.43 % in `cd` and 4.5 % in `cmx`.
- `center_of_pressure` is `NaN` where the line of action crosses no panel, instead of
`nothing` with a warning.

Expand Down
2 changes: 1 addition & 1 deletion data/TUDELFT_V3_KITE/vsm_settings.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ solver_settings:
# --- Core Aerodynamic Model ---
aerodynamic_model_type: VSM # VSM=3D vortex method, LLT=lifting line theory
solver_type: LOOP # LOOP=fixed-point iteration, NEWTON=Newton-Raphson
#correct_aoa: false # Defaults to false, meaning the computed AoA at 3/4c is used
#correct_aoa: true # false turns the forces by the flow at 3/4c instead of 1/4c

# --- Physical Properties ---
density: 1.225 # [kg/m³] Air density (ISA sea level)
Expand Down
3 changes: 1 addition & 2 deletions data/TUDELFT_V3_KITE/vsm_settings_coarse.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ solver_settings:
# --- Core Aerodynamic Model ---
aerodynamic_model_type: VSM # VSM=3D vortex method, LLT=lifting line theory
solver_type: LOOP # LOOP=fixed-point iteration, NONLIN=nonlinear solver
#correct_aoa: false # Defaults to false, meaning the computed AoA at 3/4c is used
#correct_aoa: true # false turns the forces by the flow at 3/4c instead of 1/4c

# --- Physical Properties ---
density: 1.225 # [kg/m³] Air density (ISA sea level)
Expand All @@ -79,4 +79,3 @@ solver_settings:
# --- Output Control ---
calc_only_f_and_gamma: false # true=compute only forces & circulation

correct_aoa: false
15 changes: 13 additions & 2 deletions docs/src/private_functions.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,18 @@ nose_down
bisect_sign_change
calculate_relative_alpha_and_relative_velocity
update_effective_angle_of_attack!
quarter_chord_AIC!
curved_bound_correction!
unrolled_ring_difference
unit_bound_velocity
unit_trailing_velocity
thin_airfoil_strips
relaxation_factor_limit
steepest_lift_slope
lift_slope
on_vortex_line
induced_velocity_at
attached_trailed_loads
panel_force_moment
attached_trailed_loads!
calculate_stall_angle_list
wing_span_flip
spanwise_extent
Expand Down Expand Up @@ -64,6 +73,8 @@ dynamic_pressure
flow_curvature_cm
spanwise_flow_drag
panel_force_directions
panel_chord
perpendicular_part
prescribed_va_directions
analysis_fields!
find_center_of_pressure!
Expand Down
Loading
Loading