Releases: joanibal/OptVL
Releases · joanibal/OptVL
Add Window ARM64 builds and other fixes
- Platform support: Adds support for Windows ARM64 computers. If you were having issue installing OptVL in the past this was probably the reason.
- Bug fixes: There was a bug with
sduplleading to undefined behavior. This only affects cases with input dicts instead of geometry files - Airfoil data change: xuasec, xlasec, zuasec, and zlasec are no longer stored and thus are not returned from surface parameters or required as input for input dicts. This introduces a small-angle approximation that causes a minor OML difference between AVL and OPTVL in the output CP plot geometry when NACA airfoils are used. The difference only affects OML output and vanishes as camber goes to zero.
Adjoint sensitivies for Mesh inputs
Another release courtesy of @sabakhshi
- Implemented AD partials and adjoint for direct mesh assignment by differentiating new subroutines
- Added Python-layer routines to set, get, and clear AD seeds for the mesh
- Updated forward and reverse Jacobian-vector-product routines to support mesh seeds; execute_run_sensitivities now returns mesh derivatives alongside geometric derivatives per surface
- This release lays groundwork for an upcoming release adding pyGeo and OpenMDAO wrapper support for practical design optimization with custom meshes
Custom Mesh Array as Input
@sabakhshi added the following features
- Custom mesh input: Users can now provide their own VLM mesh as a structured NumPy array of shape (nx, ny, 3) via the dictionary input format, bypassing AVL's section-based geometry parameterization
- Mid-surface mesh support: Custom meshes can be true mid-surface (camber line) representations, enabling direct use of geometry from CAD or FFD tools
- Automatic mesh flattening: If a mesh has thickness, a flattening operation (on by default, toggleable) makes meshes compliant with AVL's horseshoe vortex assumptions while preserving the original geometry through normal vectors computed from the unflattened mesh
- Mixed surface support: Custom mesh surfaces and traditional AVL geometry surfaces can coexist in the same case
- AVL variable compatibility: Custom meshes remain compatible with AINC, ADDINC, CLAF, and airfoil camber line inputs, defined per strip boundary or as a single uniform value
- Mesh utilities: Added set_mesh and get_mesh functions, plus a 3D plotting tool for visualizing flattened and/or original mid-surface meshes
Note Custom meshes are not yet differentiated; OpenMDAO wrapper support and pyGeo integration are planned for a future release
Fixed incorrect writing of airfoils with zero
v2.2.4 fix airfoil bug (#62)
Fixed writing of modified reference data
- title say it all
Fixes for input dicts
- a few quick fixes for the input dict method of initialization
Fixes derivative issues caused by bodies
- if your geometry had a body then some of the derivatives were incorrect, which is now fixed.
- The main errors I found were the stability and body-axis derivatives and derivatives w.r.t flight condition variables (alpha, beta, Mach)
Added Body Forces API and fixes to strip forces
- Add API to get the body forces (ovl.get_body_forces())
- added body geom plotting to plot_geom command
- add body force, surface force, and strip force checking to AVL analysis comparison
- fix CP X/c in strip forces
- changed sign of Cl and Cn in strip forces so that the values are in the body axis as expected.
Fix strip and surface forces
Fixes the surface and strip force issues identified by @denriquezfirestorm introduced in version 2
Expose more system matrices
Users can now get the A,B and rhs for the system of dynamic equation via get_system_matrices.