8.7 KiB
8.7 KiB
Changelog
All notable changes to NavalToolbox will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
[0.9.3] - 2026-07-06
Added
- stability: Add moulded breadth calculation at amidships (IS Code §2.13) to
CompleteStabilityResultandCriteriaContext. - python: Expose
moulded_breadthproperty inCompleteStabilityResultPython bindings. - rules: Update
is_code_2008_complete.rhaito useget_moulded_breadth()with fallback toget_bwl(). - scripting: Add support for explicit comparison operators (e.g.
<=,>=,<,>,==) incriterion()verification helper.
Changed
- docs: Update scripting documentation with comparison operators usage.
[0.9.2] - 2026-06-29
Fixed
- visualization: Align Python visualization transforms with Rust core (rot_y * rot_x, bounding box center pivot, exact waterplane level).
- stability: Fallback to T/2 for submerged centroid with windage-only silhouettes.
- silhouette: Correctly compute polygon centroid using signed area.
[0.9.1] - 2026-06-22
Added
- stability: Implement exact wind lever arm calculation using submerged and emerged lateral area centroids per IMO 2008 IS Code §2.3.2.
- python: Expose
submerged_centroidproperty inWindHeelingDataPython bindings.
Changed
- docs: Update stability tutorial and API documentation with exact wind lever arm formulation.
[0.9.0] - 2026-05-22
Added
- loading: Add CSV import support for loading conditions.
- python: Add
from_loadingbindings to calculators. - testing: Add tests for
from_loadingcalculator methods.
Changed
- docs: Add CSV import to READMEs and a downloadable CSV template for loading conditions.
- docs: Update stability and hydrostatics documentation for
from_loading. - style: Fix linting issues.
Fixed
- rust: Use total displacement in
from_loadingfor proper hydrostatics reporting.
[0.8.0] - 2026-03-06
Added
- core: Implement
ContactSurfacepre-computation with adaptive threshold for multi-hull vessels. - hydrostatics: Implement hull plate thickness approximation and dynamic contact area calculation in hydrostatics.
- tanks: Add
permeabilityparameter toTankstructure and volumetric calculations. - tanks: Add 98% and 99% fill level evaluations to maximum Free Surface Moment (FSM) calculations.
- deckedge: Add optional
sideparameter toDeckEdge::from_file. - python: Expose
ContactSurfaceAPI,permeabilityproperty,hull thicknessproperties, andVessel.from_hullsto Python bindings. - docs: Explicitly document trim, heel, COG sign conventions, hull thickness limitations, and multihull creation.
Fixed
- downflooding: Correct starboard Y coordinate sign in downflooding tests.
- hydrostatics: Clean up unused variables, dead CoB code, and update GZ equivalence tests for realism.
[0.7.0] - 2026-02-24
Added
- stability: Included support for IMO IS Code 2008 Passenger Ships Stability (Part A, Chapter 3).
- stability: Included support for French Division 222 intact stability criteria.
- stability: Included support for HSC Code 2000 (Annex 8) monohull intact stability criteria.
- scripting: Exposed
get_deck_edge_immersion_angle()onCriteriaContextfor use in Rhai scripts.
Changed
- rules: Re-organized and renamed existing IMO stability scripts to properly reflect IS Code 2008 standards (
is_code_2008_general.rhaiandis_code_2008_complete.rhai).
[0.6.4] - 2026-02-13
Added
- ci: Extended compilation targets for Linux (
manylinux_2_24,manylinux_2_28) on bothx86_64andaarch64 - ci: Synchronized Python versions (3.9 to 3.13) across all build platforms
[0.6.3] - 2026-02-13
Added
- tanks: Implemented
FSMMode(Actual, Maximum, Fixed) for accurate free surface moment calculations at large angles - python: Exposed
set_fsm_modeandfsm_modeonTankobjects
Changed
- core: Refactored
Tankto use reference semantics (SharedTank) viaArc<RwLock<Tank>> - python: Modifications to
Tankobjects in Python are now immediately reflected in their parentVessel - stability: Updated
StabilityCalculatorandHydrostaticsCalculatorto handle shared tank locking
[0.6.2] - 2026-02-13
Added
- hydrostatics: Added
cog(Total COG) andvessel_cog(Vessel COG) fields toHydrostaticState - stability: Added
cogandvessel_cogtoStabilityPointfor detailed center of gravity tracking (Total vs Vessel mass)
Fixed
- loading: Correctly handle OCS transformation in DXF silhouettes for inverted extrusion directions (fixes coordinate inversion issue)
[0.6.1] - 2026-02-11
Added
- testing: Comprehensive integrity test suite for silhouette profiles in
python/tests - stability: Warning notification when wind data is skipped during stability analysis
- loading: Support for loading silhouettes from CSV/TXT point files
Fixed
- loading: Correctly load DXF
AcDb2dPolylineentities with OCS normal (0,1,0) (fixes "no wind data" error) - stability: Resolve issue where
StabilityCalculatorused a stale Vessel copy, ignoring subsequently added silhouettes - validation: Add warnings for invalid silhouette geometries (zero area, open loops)
Changed
- python: Refactor
StabilityCalculatorbinding to hold a reference to theVesselobject, ensuring dynamic updates - docs: Updated API documentation and type stubs for silhouette components
[0.6.0] - 2026-02-11
Added
- stability: Support for
tank_optionsingz_curveandcomplete_stabilitymethods - hydrostatics: Added
vessel_displacementandtank_displacementfields toHydrostaticState
Changed
- hydrostatics: BREAKING Removed
hull_displacementfield fromHydrostaticState(replaced byvessel_displacement) - hydrostatics:
displacementfield now explicitly represents the Total Displacement (Vessel + Tanks) - stability:
complete_stabilitynow correctly delegates displacement calculation to avoid double-counting tank mass
[0.5.1] - 2026-02-09
Fixed
- python: Fix type inference error in
from_displacementwithtank_options
[0.5.0] - 2026-02-09
Added
- hydrostatics: Introduce
TankOptionsfor fine-grained control over tank mass and FSM inclusion - hydrostatics: Add
hull_displacement(buoyancy) andtank_massfields toHydrostaticState - tanks: Implement
FSMMode(Actual, Maximum, Fixed) for flexible free surface moment calculations - tanks: Exact sorting of waterplane vertices for robust FSM calculation on complex hull shapes
Changed
- hydrostatics:
from_draft,from_drafts, andfrom_displacementnow accept optionaltank_optionsargument
[0.4.2] - 2026-02-07
Fixed
- hydrostatics: Implement robust fallback solver with Coordinate Descent + Bisection for extreme equilibrium cases
- hydrostatics: Restore VCG parameter handling in equilibrium solvers
[0.4.1] - 2026-02-06
Fixed
- hydrostatics: Correct heel sign convention (TcG>0 → negative heel)
- hydrostatics: Compute equilibrium heel/trim from off-center COG
- hydrostatics: Preserve COG in
from_displacementwhen VCG provided
Documentation
- Add coordinate system conventions to userguide
- Fix Y axis convention in Tank docstrings
[0.4.0] - 2026-02-04
Added
- Complete hydrostatic properties: LOS (Length Overall Submerged), Wetted Surface Area
- Sectional area curve calculation
- Freeboard calculation with deck edges
- Appendages support for additional volume/center corrections
Fixed
- Python and Rust lint errors
Documentation
- Update visualization tutorial for Appendages and Deck Edges
- Add sectional_areas and freeboard to HydrostaticState documentation
[0.3.0] - 2026-01-19
Added
- GZ curve calculation with trim optimization
- Downflooding openings detection during stability calculations
- Silhouette wind heeling calculations (DXF/VTK support)
- Rhai scripting engine for custom stability criteria
Changed
- Refactored hydrostatics fields to use public properties
[0.2.0] - 2026-01-08
Added
- Multi-hull support (catamarans, trimarans)
- Tank management with free surface corrections
- Complete stability analysis combining hydrostatics, GZ curve, and wind data
[0.1.0] - 2026-01-01
Added
- Initial release
- Hull geometry loading (STL/VTK files)
- Basic hydrostatics: Volume, COB, Waterplane properties
- Python bindings via PyO3/Maturin
Generated with git-cliff and manually curated