Recent Releases of VortexStepMethod

VortexStepMethod - v2.1.0

VortexStepMethod v2.1.0

Diff since v2.0.0

Changed

1. Core New Functionality: YAML Geometry Support

  • New file: yaml_geometry.jl (290+ lines) — Complete YAML-based wing geometry loading.
  • New structs: WingSectionData, WingAirfoilData, WingAirfoilInfo (with @with_kw macros).
  • New function: load_polar_data() — Robust CSV polar data loading with error handling.
  • New constructors:
    • Wing(geometry_file::String) — Create wings from YAML files.
    • Wing(settings::VSMSettings) — Create wings from settings.

2. Enhanced Settings System

  • Renamed vs() to VSMSettings() constructor.
  • Added convenience Solver(body_aero, settings) constructor.
  • Improved settings structure and validation.

3. Comprehensive Test Infrastructure

  • Split tests: Reorganized from monolithic files to modular structure (test/module_name/test_*.jl).
  • New test module: yaml_geometry with test_load_polar_data.jl and test_wing_constructor.jl.
  • Test utilities: test_data_utils.jl with shared helper functions.
  • Test data: Extensive YAML and CSV test files in data.

4. Data and Examples

  • New data sets: Complete TUDELFT_V3_KITE with CFD polars and literature results.
  • Enhanced examples: Updated examples to use YAML geometry (e.g., pyramid_model.jl, V3_kite.jl).
  • Real-world configs: Production-ready YAML geometry files for various kite configurations.

5. Core Module Improvements

  • Path handling: Robust file path resolution for relative/absolute paths.
  • Error handling: Comprehensive validation and graceful fallback to INVISCID mode.
  • Memory management: Improved file I/O and cleanup in tests.
  • Documentation: Added comprehensive docstrings and examples.

Merged pull requests: - Add a geometry from yaml constructor for Wing (#186) (@1-Bart-1)

Closed issues: - VSM predicts NANs for ram-geometry at low angles of attack? Is this a convergence issue? (#182) - Create a 'loadgeometryfromyaml` function for VortexStepMethod.jl, and run on a simple straight wing (#184) - Create a 'loadgeometryfromyaml` function for VortexStepMethod.jl, and run on a simple wing (#185) - Run V3 Kite does not produce correct result (#189)

- Julia
Published by github-actions[bot] 7 months ago

VortexStepMethod - v2.0.0

VortexStepMethod v2.0.0

Diff since v1.2.6

Changed

  • bump Interpolations to 0.16
  • breaking: rename init! to reinit!

Merged pull requests: - Rename init! to reinit! (#180) (@1-Bart-1)

Closed issues: - Use AutoFiniteDifferences with factor keyword to deal with noise (#177)

- Julia
Published by github-actions[bot] 8 months ago

VortexStepMethod - v1.2.6

VortexStepMethod v1.2.6

Diff since v1.2.5

Changed

  • update NonlinearSolve.jl

- Julia
Published by github-actions[bot] 10 months ago

VortexStepMethod - v1.2.5

VortexStepMethod v1.2.5

Diff since v1.2.4

Changed

  • suppress @info messages when creating a RamAirWing
  • improve examples ram_air_kite.jl and bench.jl

- Julia
Published by github-actions[bot] 11 months ago

VortexStepMethod - v1.2.4

VortexStepMethod v1.2.4

Diff since v1.2.3

Changed

  • implement export of solve and solve! correctly
  • do not export menu() because KiteUtils exports it
  • the polars of the ram air kite are now saved in .csv files
  • update CI.yml

Merged pull requests: - Use csv instead of bin for 2d polars (#171) (@1-Bart-1)

Closed issues: - Use csv for polar files (#159) - Release version 1.2.3 (#168) - Precompilation fails if polar data was created with newer Julia version (#170)

- Julia
Published by github-actions[bot] 11 months ago

VortexStepMethod - v1.2.3

VortexStepMethod v1.2.3

Diff since v1.2.2

Changed

  • expose the angle of attack alpha_array in the VSMSolution

Merged pull requests: - Expose alpha corrected (angle of attack of each panel) (#167) (@1-Bart-1)

Closed issues: - Add NeuralFoil as an extension to the package (#160)

- Julia
Published by github-actions[bot] 11 months ago

VortexStepMethod - v1.2.2

VortexStepMethod v1.2.2

Diff since v1.2.1

Added

  • the parameter prnto the constructor RamAirWing which allows it suppress info messages

Closed issues: - Release version 1.2.1 (#163)

- Julia
Published by github-actions[bot] 11 months ago

VortexStepMethod - v1.2.1

VortexStepMethod v1.2.1

Diff since v1.2.0

Added

  • Add back bench2.jl and rename it to bench_solve.jl ### Removed
  • Remove problematic parallel Xfoil computing and use single thread instead

Merged pull requests: - Add rotation and translation from cad to body frame field to wing (#149) (@1-Bart-1) - Improve linearize test (#151) (@1-Bart-1) - Add bench_solve.jl (#152) (@ufechner7) - Add VSMSettings struct and equivalent yaml file (#156) (@ufechner7) - Remove parallelized polar computation (#162) (@1-Bart-1)

Closed issues: - Add VSMSettings struct (#84) - Release v.1.2.0 (#148) - Add back bench2.jl and rename it to bench_solve.jl (#150) - Remove problematic parallel Xfoil computing (#161)

- Julia
Published by github-actions[bot] 11 months ago

VortexStepMethod - v1.2.0

VortexStepMethod v1.2.0

Diff since v1.1.2

Changed

  • The fields that had as type a Matrix of size Px1 have now the type Vector
  • Many new fields of the type VSMSolution documented
  • init!(body_aero) is now a public function ### Added
  • Added the option to use nonlinear solve to calculate the gamma distribution
  • New page Tips and tricks added to the documentation
  • Fast and modular linearization added around an operating point

Merged pull requests: - Improve init!(body_aero) performance (#139) (@1-Bart-1) - Add linearization feature (#140) (@1-Bart-1) - Refactoring: add underscore to private fields (#142) (@ufechner7)

Closed issues: - Refactoring, part II (#62) - Use nonlinear solver in gammaloop (#72) - Rotate the RamAirKite geometry such that the kite body frame aligns with the principal axes (#132) - Register and Release v1.1.2 (#135) - Linearize model (#136) - Add to docs that init!(bodyaero) is very fast (#141)

- Julia
Published by github-actions[bot] 11 months ago

VortexStepMethod - v1.1.2

VortexStepMethod v1.1.2

Diff since v1.1.1

Added

  • The function install_examples() which allows to easily install the examples without using git
  • The function solve! returns a struct now. The function solvethat returns a dict is still available.
  • The moment coefficients distribution in solve!
  • The script install to the bin folder for users who checked out this git repository
  • The script bench2.jl was added for allocation testing of the solve! function ### Changed
  • Read the y-coordinates in the correct direction from the ram_air_kite_body.obj file
  • In the menu.jl, changed help to help_me. It works better now, no more warnings on Linux, it should also work on MacOS now
  • The coordinate frames of the panels now use the same convention as the kite body frame
  • The page "Glossary" of the documentation is quite complete now
  • The center of mass field of the RamAirWing is removed, and the geometry is created such that [0, 0, 0] is the center of mass
  • The enumeration WingType was added and replaces the symbols, used before
  • The allocations of the function solve! where reduced by a factor of 11 to 85 allocations
  • align_to_principal option added to RamAirWing
  • deform! by a distribution instead of just a left and right angle ### Fixed
  • The function calculate_circulation_distribution_elliptical_wing() was never called
  • Fix the calculation of force coefficients in solve!
  • The continues integration scripts (CI.yml) use now separate runs for the test coverage and for the allocation tests.

Merged pull requests: - Make the coordinate frames of the panels use the same convention as the kite body frame (#92) (@1-Bart-1) - Add installer for examples (#101) (@ufechner7) - fix coordinate frames (#104) (@1-Bart-1) - KiteWing should be centered at center of mass (#108) (@1-Bart-1) - Fix moment and force coefficients (#110) (@1-Bart-1) - Add Aqua.jl for quality assurance (#112) (@ufechner7) - Make pdflatex optional (#114) (@ufechner7) - Plot polars (#115) (@1-Bart-1) - Update glossary (#117) (@ufechner7) - Do not use LaTeX for CI (#118) (@ufechner7) - Add CONTRIBUTING.md (#121) (@ufechner7) - Change alpha beta to theta delta (#122) (@1-Bart-1) - Deform with distribution instead of left and right angle (#123) (@1-Bart-1) - Add deform! test (#124) (@1-Bart-1) - Reduce allocation (#126) (@ufechner7) - Add center of mass field to RamWing (#128) (@1-Bart-1) - Rm bin (#129) (@1-Bart-1) - Refactoring, one bugfix (#130) (@ufechner7) - Add an option to align body frame with principal axes (#134) (@1-Bart-1)

Closed issues: - Plotting should also work without LaTeX installed (#36) - Create functions or example scripts that plot the bin files (#51) - Test this package on Windows (#80) - Corrected polars for LEI model (#83) - Local panel axes should follow the same principles as body axes (z up, y spanwise, x from le to te) (#91) - Add function to install examples (#99) - Register and release 1.1.1 (#100) - Add Documentation on symbols and greek letters (#102) - Rename KiteWing to RamAirWing (#111) - Use theta for geometric twist angle and delta for trailing edge deflection angle (#116) - Add contribution guidelines (#119) - Remove even more solve! allocations (#125)

- Julia
Published by github-actions[bot] 11 months ago

VortexStepMethod - v1.1.1

VortexStepMethod v1.1.1

Diff since v1.1.0

Fixed

  • Fix a relative file path bug

- Julia
Published by github-actions[bot] 12 months ago

VortexStepMethod - v1.1.0

VortexStepMethod v1.1.0

Diff since v1.0.1

Added

  • Dynamically deform the KiteWing by twisting the left side and right side, and deforming the trailing edges using deform!
  • Set turn rate omega = [omega_x, omega_y, omega_z] in kite body frame using set_va!
  • Add moment coefficient calculations around specified point to solve
  • Add moment distribution of the moment around the local panel y-axes around user-defined points on the panels to solve!
  • Add function solve!() which returns a VSMSolution struct
  • Add the option to remove the NaNs in aero_data vectors or matrices using the remove_nan keyword in the Wing and KiteWing constructors ### Changed
  • Add origin argument to BodyAerodynamics constructor
  • Improve documentation

Merged pull requests: - Update docstring of Solver, use @withkw (#81) (@ufechner7) - Refactor Section, use @withkw; refactor Wing (#82) (@ufechner7) - add type AeroData (#86) (@ufechner7) - Add solve!(res::Results, ...) (#88) (@ufechner7) - Add trailing edge angle beta and deform (#89) (@1-Bart-1) - Moment distribution (#95) (@1-Bart-1) - Add origin parameter to BodyAerodynamics constructor (#96) (@1-Bart-1) - Add the option to remove nans (#98) (@1-Bart-1)

Closed issues: - Register and release version 1.0.1 (#13) - Dynamically change segments. (#19) - Don't assume constant radius on KiteWing creation (#42) - Add origin argument to Wing and KiteWing constructor (#66) - Write announcement for the new package, version 1.0.1 (#68) - Add type AeroData (#85) - Add a Results struct (#87) - Add moment distribution around user-defined point (#90) - Remove NaNs from XFoil polar matrices so the solver doesn't crash (#97)

- Julia
Published by github-actions[bot] 12 months ago

VortexStepMethod - v1.0.1

VortexStepMethod v1.0.1

Diff since v1.0.0

Changes

  • memory allocations where significantly reduced
  • a menu (examples/menu.jl) for running the examples was added
  • plotting was moved to an extension
  • added improved online documentation

- Julia
Published by github-actions[bot] 12 months ago

VortexStepMethod - v1.0.0

VortexStepMethod v1.0.0

Initial release

Merged pull requests: - add CI.yml (#4) (@ufechner7) - Add types MVec3, PosVector, VelVector (#9) (@ufechner7) - replace Plots with ControlPlots (#11) (@ufechner7) - Read .obj file to create Wing object (#12) (@1-Bart-1) - CompatHelper: add new compat entry for Colors at version 0.13, (keep existing compat) (#21) (@github-actions[bot]) - CompatHelper: add new compat entry for LaTeXStrings at version 1, (keep existing compat) (#22) (@github-actions[bot]) - CompatHelper: add new compat entry for BenchmarkTools at version 1, (keep existing compat) (#23) (@github-actions[bot]) - CompatHelper: add new compat entry for DelimitedFiles at version 1, (keep existing compat) (#24) (@github-actions[bot]) - CompatHelper: add new compat entry for Statistics at version 1, (keep existing compat) (#25) (@github-actions[bot]) - CompatHelper: add new compat entry for Plots at version 1, (keep existing compat) (#26) (@github-actions[bot]) - CompatHelper: add new compat entry for StaticArrays at version 1, (keep existing compat) (#27) (@github-actions[bot]) - CompatHelper: add new compat entry for Measures at version 0.3, (keep existing compat) (#28) (@github-actions[bot]) - fix zero fx fy fz (#31) (@1-Bart-1) - CompatHelper: add new compat entry for NonlinearSolve at version 4, (keep existing compat) (#32) (@github-actions[bot]) - CompatHelper: add new compat entry for Interpolations at version 0.15, (keep existing compat) (#33) (@github-actions[bot]) - remove dead code (#37) (@ufechner7) - add NEWS.md (#38) (@ufechner7) - add Uwe and Bart to CITATIONS.cff (#39) (@ufechner7) - Add test for second plot (#40) (@ufechner7) - Fix example stall_model (#41) (@ufechner7) - Feat/xfoil (#43) (@1-Bart-1) - reduce allocations more (#44) (@1-Bart-1) - Add Documenter docu (#46) (@ufechner7) - Start documenting the structs and types (#50) (@ufechner7) - CompatHelper: add new compat entry for Timers at version 0.1, (keep existing compat) (#57) (@github-actions[bot]) - Replace all Int with Int64 in structs (#58) (@ufechner7) - Use MVec3 in structs as much as possilbe (#59) (@ufechner7) - Add moment coefficients and moments (#64) (@1-Bart-1) - Add the turnrate vector omega (#65) (@1-Bart-1) - Remove interpolation allocation (#67) (@1-Bart-1) - use enum for parameter "model" (#70) (@ufechner7) - add enum PanelDistribution (#71) (@ufechner7)

Closed issues: - Implement CI workflow for the tests (#1) - Replace Plots.jl with ControlPlots.jl (#3) - Refactor code (#5) - Cut down on allocations (#6) - Add description and keywords to project (#8) - kite.obj as input (#10) - The aggregate forces Fx, Fy and Fz are not calculated (#14) - CI: enable code coverage (#15) - Add Bart and Uwe to .CFF file (#16) - Add moment coefficient calculations around specified point (#17) - Improve test coverage (#18) - CI: Make CompatHelpers work (#20) - Automatically generate polardata from 2dfoilprofile.dat using XFoil.jl (#30) - Remove dead code (#35) - Delete the experimental functions calculateartificial_damping() (#45) - Add rotational velocities (#49) - Document the reference frame(s) that are used (#52) - Make more packages a test dependency (#54)

- Julia
Published by github-actions[bot] 12 months ago