Files
navaltoolbox-lib/docs/source/api/python/hydrostatics.rst
T

316 lines
8.1 KiB
ReStructuredText

Hydrostatics
============
TankOptions
-----------
.. py:class:: TankOptions(include_mass=False, include_fsm=True)
Options for tank handling in hydrostatic calculations.
:param include_mass: Include tank fluid mass in displacement (default: False)
:param include_fsm: Apply Free Surface Moment correction to GM (default: True)
.. py:staticmethod:: none()
Create options with no tank effects (mass=False, fsm=False).
.. py:staticmethod:: all()
Create options with all tank effects (mass=True, fsm=True).
.. py:staticmethod:: mass_only()
Create options with only mass included (mass=True, fsm=False).
.. py:staticmethod:: fsm_only()
Create options with only FSM correction (mass=False, fsm=True).
.. py:attribute:: include_mass
:type: bool
Whether tank mass is included.
.. py:attribute:: include_fsm
:type: bool
Whether FSM correction is applied.
HydrostaticsCalculator
----------------------
.. py:class:: HydrostaticsCalculator(vessel, water_density=1025.0)
Calculator for hydrostatic properties.
:param vessel: The vessel to calculate hydrostatics for
:param water_density: Water density in kg/m³ (default: 1025.0 for seawater)
.. py:method:: from_draft(draft, trim=0.0, heel=0.0, vcg=None, num_stations=None, tank_options=None)
Calculates hydrostatics at a given draft, trim, and heel.
:param draft: Draft at reference point (m)
:param trim: Trim angle (degrees)
:param heel: Heel angle (degrees)
:param vcg: Vertical center of gravity for GM calculation (optional)
:type vcg: float or None
:param num_stations: Number of stations (optional)
:param tank_options: TankOptions object (optional)
:returns: HydrostaticState with all properties
.. py:method:: from_drafts(draft_ap, draft_fp, heel=0.0, vcg=None, tank_options=None)
Calculates hydrostatics from drafts at Aft and Forward Perpendiculars.
:param draft_ap: Draft at Aft Perpendicular (m)
:param draft_fp: Draft at Forward Perpendicular (m)
:param heel: Heel angle (degrees)
:param vcg: Vertical center of gravity for GM calculation (optional)
:type vcg: float or None
:param tank_options: TankOptions object (optional)
:returns: HydrostaticState with all properties
.. py:method:: from_displacement(displacement_mass, vcg=None, cog=None, trim=None, heel=None, tank_options=None)
Calculates hydrostatics for a given displacement, finding the required draft.
:param displacement_mass: Target displacement in kg
:param vcg: Vertical center of gravity (m) for GM calculation (optional)
:param cog: Full center of gravity (LCG, TCG, VCG) tuple (optional, overrides vcg)
:param trim: Fixed trim angle in degrees (optional, default 0.0)
:param heel: Fixed heel angle in degrees (optional, default 0.0)
:param tank_options: TankOptions object (optional)
:returns: HydrostaticState with all properties
.. note::
When ``tank_options`` is provided with ``include_mass=True``, ``displacement_mass``
is interpreted as the mass of the vessel **excluding** the fluid in the tanks.
The total displacement used for calculation will be ``displacement_mass + tank_fluid_mass``.
.. py:method:: from_loading(loading, num_stations=None)
Calculates hydrostatics for a given LoadingCondition.
This method automatically applies the given loading condition (including tank fill overrides), calculates the equilibrium based on total displacement and combined COG, and restores the original tank fill levels.
:param loading: :class:`~navaltoolbox.LoadingCondition` to analyze.
:param num_stations: Number of stations (optional).
:returns: HydrostaticState with all properties.
HydrostaticState
----------------
.. py:class:: HydrostaticState
Result of hydrostatic calculations.
**Basic Properties**
.. py:attribute:: draft
:type: float
Draft at Midship Section (MP) in meters.
.. py:attribute:: draft_ap
:type: float
Draft at Aft Perpendicular (AP) in meters.
.. py:attribute:: draft_fp
:type: float
Draft at Forward Perpendicular (FP) in meters.
.. py:attribute:: draft_mp
:type: float
Draft at Midship Perpendicular (MP) in meters (alias for draft).
.. py:attribute:: volume
:type: float
Submerged volume (m³).
.. py:attribute:: displacement
:type: float
Total displacement mass in kg (Volume * Water Density). Represents the total weight of the floating system (Vessel + Tanks).
.. py:attribute:: vessel_displacement
:type: float
Vessel displacement mass in kg (Total - Tank Mass). Represents the input displacement (Lightship + Deadweight excluding tanks).
.. py:attribute:: tank_displacement
:type: float
Tank fluid mass in kg (sum of all tank fluid masses). 0.0 if ``include_mass`` is False.
**Centers**
.. py:attribute:: cob
:type: tuple[float, float, float]
Center of Buoyancy (LCB, TCB, VCB) vector.
.. py:attribute:: cog
:type: tuple[float, float, float] or None
Center of Gravity (LCG, TCG, VCG) vector, if provided. Matches ``displacement``.
.. py:attribute:: vessel_cog
:type: tuple[float, float, float] or None
Vessel Center of Gravity (LCG, TCG, VCG) vector (Ship-only). Matches ``vessel_displacement``.
**Waterplane Properties**
.. py:attribute:: waterplane_area
:type: float
Waterplane area (m²).
.. py:attribute:: lcf
:type: float
Longitudinal Center of Flotation (m).
**Metacentric Radii**
.. py:attribute:: bmt
:type: float
Transverse metacentric radius (m).
.. py:attribute:: bml
:type: float
Longitudinal metacentric radius (m).
**Metacentric Heights (Corrected for Free Surface)**
.. py:attribute:: gmt
:type: float or None
Transverse metacentric height (Wet/Corrected) (m).
.. py:attribute:: gml
:type: float or None
Longitudinal metacentric height (Wet/Corrected) (m).
**Metacentric Heights (Uncorrected)**
.. py:attribute:: gmt_dry
:type: float or None
Transverse metacentric height (Dry/Uncorrected) (m).
.. py:attribute:: gml_dry
:type: float or None
Longitudinal metacentric height (Dry/Uncorrected) (m).
**Dimensions**
.. py:attribute:: lwl
:type: float
Length at Waterline (m).
.. py:attribute:: bwl
:type: float
Beam at Waterline (m).
.. py:attribute:: los
:type: float
Length Overall Submerged (m).
.. py:attribute:: wetted_surface_area
:type: float
Wetted Surface Area (m²).
.. py:attribute:: thickness_volume
:type: float
Volume added by the hull plate thickness (m³).
.. py:attribute:: contact_surface_area
:type: float
Shared area between hulls excluded from wetted surface (m²).
.. py:attribute:: midship_area
:type: float
Midship Section Area (m²).
**Form Coefficients**
.. py:attribute:: cb
:type: float
Block Coefficient.
.. math::
C_b = \frac{\nabla}{L_{wl} \cdot B_{wl} \cdot T}
.. py:attribute:: cm
:type: float
Midship Section Coefficient.
.. math::
C_m = \frac{A_m}{B_{wl} \cdot T}
.. py:attribute:: cp
:type: float
Prismatic Coefficient.
.. math::
C_p = \frac{\nabla}{A_m \cdot L_{wl}}
**Free Surface Corrections**
.. py:attribute:: free_surface_correction_t
:type: float
Transverse Free Surface Correction (m).
.. py:attribute:: free_surface_correction_l
:type: float
Longitudinal Free Surface Correction (m).
**Stiffness Matrix**
.. py:attribute:: stiffness_matrix
:type: list[float]
6x6 Hydrostatic Stiffness Matrix (flattened row-major).
**Advanced Properties**
.. py:attribute:: sectional_areas
:type: list[tuple[float, float]]
Sectional Area Curve as list of (x, area) pairs.
.. py:attribute:: freeboard
:type: float or None
Minimum freeboard in meters, or None if no deck edges defined.