Files

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 CompleteStabilityResult and CriteriaContext.
  • python: Expose moulded_breadth property in CompleteStabilityResult Python bindings.
  • rules: Update is_code_2008_complete.rhai to use get_moulded_breadth() with fallback to get_bwl().
  • scripting: Add support for explicit comparison operators (e.g. <=, >=, <, >, ==) in criterion() 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_centroid property in WindHeelingData Python 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_loading bindings to calculators.
  • testing: Add tests for from_loading calculator 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_loading for proper hydrostatics reporting.

[0.8.0] - 2026-03-06

Added

  • core: Implement ContactSurface pre-computation with adaptive threshold for multi-hull vessels.
  • hydrostatics: Implement hull plate thickness approximation and dynamic contact area calculation in hydrostatics.
  • tanks: Add permeability parameter to Tank structure and volumetric calculations.
  • tanks: Add 98% and 99% fill level evaluations to maximum Free Surface Moment (FSM) calculations.
  • deckedge: Add optional side parameter to DeckEdge::from_file.
  • python: Expose ContactSurface API, permeability property, hull thickness properties, and Vessel.from_hulls to 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() on CriteriaContext for 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.rhai and is_code_2008_complete.rhai).

[0.6.4] - 2026-02-13

Added

  • ci: Extended compilation targets for Linux (manylinux_2_24, manylinux_2_28) on both x86_64 and aarch64
  • 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_mode and fsm_mode on Tank objects

Changed

  • core: Refactored Tank to use reference semantics (SharedTank) via Arc<RwLock<Tank>>
  • python: Modifications to Tank objects in Python are now immediately reflected in their parent Vessel
  • stability: Updated StabilityCalculator and HydrostaticsCalculator to handle shared tank locking

[0.6.2] - 2026-02-13

Added

  • hydrostatics: Added cog (Total COG) and vessel_cog (Vessel COG) fields to HydrostaticState
  • stability: Added cog and vessel_cog to StabilityPoint for 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 AcDb2dPolyline entities with OCS normal (0,1,0) (fixes "no wind data" error)
  • stability: Resolve issue where StabilityCalculator used a stale Vessel copy, ignoring subsequently added silhouettes
  • validation: Add warnings for invalid silhouette geometries (zero area, open loops)

Changed

  • python: Refactor StabilityCalculator binding to hold a reference to the Vessel object, ensuring dynamic updates
  • docs: Updated API documentation and type stubs for silhouette components

[0.6.0] - 2026-02-11

Added

  • stability: Support for tank_options in gz_curve and complete_stability methods
  • hydrostatics: Added vessel_displacement and tank_displacement fields to HydrostaticState

Changed

  • hydrostatics: BREAKING Removed hull_displacement field from HydrostaticState (replaced by vessel_displacement)
  • hydrostatics: displacement field now explicitly represents the Total Displacement (Vessel + Tanks)
  • stability: complete_stability now correctly delegates displacement calculation to avoid double-counting tank mass

[0.5.1] - 2026-02-09

Fixed

  • python: Fix type inference error in from_displacement with tank_options

[0.5.0] - 2026-02-09

Added

  • hydrostatics: Introduce TankOptions for fine-grained control over tank mass and FSM inclusion
  • hydrostatics: Add hull_displacement (buoyancy) and tank_mass fields to HydrostaticState
  • 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, and from_displacement now accept optional tank_options argument

[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_displacement when 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