Skip to content

feat: scipy 5-DOF optimizer, depowering, and input validation#58

Open
TAJD wants to merge 2 commits into
pr/uv-cifrom
pr/core-physics
Open

feat: scipy 5-DOF optimizer, depowering, and input validation#58
TAJD wants to merge 2 commits into
pr/uv-cifrom
pr/core-physics

Conversation

@TAJD

@TAJD TAJD commented Jun 17, 2026

Copy link
Copy Markdown
Collaborator

Summary

  • Replace NLopt with scipy optimizer — resolves Python 3.13 incompatibility
  • Iterative depowering with configurable heel limit (phi_max); fixes solver progression past first solution
  • Leeway fix — remove clamp, clarify radians conversion, drop dead _cl
  • Input validation and error handling across the full VPP stack
  • Comprehensive new test suite: hydro, aero, resistance, API, utils

Part of

Second of four PRs from #55. Base is pr/uv-ci (stacked); merge after #57.

Test plan

  • uv run pytest tests/test_vpp.py tests/test_hydro.py tests/test_aero.py tests/test_resistance.py tests/test_api.py tests/test_utils.py -v
  • Polars output visually unchanged vs main

- Replace NLopt with scipy optimizer for Python 3.13 compatibility
- Add iterative depowering with heel limit enforcement (phi_max)
- Fix leeway clamp and radians conversion in force balance
- Fix depowering solver progression past first phi_max solution
- Add input validation and error handling across VPP stack
- Add comprehensive test suite (hydro, aero, resistance, API, utils)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant