Skip to main content

A shoebox approximation for a marine hydrodynamics model

Project description

shoeboxpy

shoeboxpy

Installation

pip install git+https://github.com/incebellipipo/shoeboxpy.git

Theory

The shoeboxpy package provides simulation models for vessels with 3 and 6 degrees of freedom (DOF). These models are based on rigid-body dynamics, including added mass, damping, Coriolis/centripetal effects, and restoring forces.

6-DOF Model

The 6-DOF model represents a rectangular "shoebox" vessel with the following states:

  • Position and orientation in the inertial frame: $\eta = [x, y, z, \phi, \theta, \psi]$
  • Velocities in the body frame: $\nu = [u, v, w, p, q, r]$

3-DOF Model

The 3-DOF model simplifies the dynamics to planar motion (surge, sway, yaw) with states:

  • Position and orientation in the inertial frame: $\eta = [x, y, \psi]$
  • Velocities in the body frame: $\nu = [u, v, r]$

Dynamics

Dynamics for both models are governed by:

$$ \begin{aligned} & \dot{\eta} = J(\eta)\nu\ & (M_{RB} + M_A)\dot{\nu} + (C_{RB}(\nu) + C_A(\nu))\nu + D\nu = \tau + \tau_{\mathrm{ext}} + g_{\mathrm{restoring}}(\eta) \end{aligned} $$

where:

  • $M_{RB}$ and $M_A$ are the rigid-body and added mass matrices.
  • $C_{RB}(\nu)$ and $C_A(\nu)$ are the Coriolis/centripetal matrices.
  • $D$ is the linear damping matrix.
  • $\tau$ and $\tau_{\mathrm{ext}}$ are control and external forces/moments.
  • $g_{\mathrm{restoring}}(\eta)$ represents restoring forces in roll and pitch.

Both models use a 4th-order Runge-Kutta method for numerical integration, allowing for accurate simulation of vessel dynamics under various forces and moments.

Read the theory for more details.

Example

Here is an example of how to use the shoeboxpy package to simulate a 6-DOF vessel:

import numpy as np
from shoeboxpy.model6dof import Shoebox
from shoeboxpy.animate import animate_history

# Initialize the shoebox model
shoebox = Shoebox(
    L=1.0,  # Length (m)
    B=0.3,  # Width (m)
    T=0.03,  # Height (m)
    eta0=np.array([0.0, 0.0, 0.0, 0.1, 0.1, 0.1]),  # Initial position and orientation
    nu0=np.zeros(6),  # Initial velocities
    GM_phi=0.2,  # Metacentric height in roll
    GM_theta=0.2,  # Metacentric height in pitch
)

# Simulate for 10 seconds with a time step of 0.01 seconds
dt = 0.01
eta_history = []
for _ in range(int(10 / dt)):
    shoebox.step(tau=np.array([1.0, 0.2, 0.0, 0.0, 0.0, 0.1]), dt=dt)  # Apply control forces
    eta_history.append(shoebox.get_states()[0])  # Store position and orientation

# Convert history to a NumPy array for analysis or visualization
eta_history = np.array(eta_history)

animate_history(eta_history, dt=dt, L=1.0, B=0.3, T=0.2)  # Animate the results

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

shoeboxpy-0.0.4.tar.gz (413.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

shoeboxpy-0.0.4-py3-none-any.whl (24.7 kB view details)

Uploaded Python 3

File details

Details for the file shoeboxpy-0.0.4.tar.gz.

File metadata

  • Download URL: shoeboxpy-0.0.4.tar.gz
  • Upload date:
  • Size: 413.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for shoeboxpy-0.0.4.tar.gz
Algorithm Hash digest
SHA256 d93f82b09772e532fb6518074c222c04bd062a12ce16064b9db25316ca51d6d6
MD5 ecdb4b3fc87d90e97f8e90a8a12ecc8a
BLAKE2b-256 46517f5404aa4265df8eb84d924da06084bbed702b143d2748943a425f6d45c8

See more details on using hashes here.

Provenance

The following attestation bundles were made for shoeboxpy-0.0.4.tar.gz:

Publisher: publish.yml on incebellipipo/shoeboxpy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file shoeboxpy-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: shoeboxpy-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 24.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for shoeboxpy-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 fc20319456f5e858f200fac20eafbdf81a33712b7f6191a07d8cdaeefa9c9c2d
MD5 117ebdc5849f2b391af887fd7a4d6d9c
BLAKE2b-256 859444df6059c56f3c1ea62fc378c3bf96fd02a2c1b321ef2a382f8fe98c93fc

See more details on using hashes here.

Provenance

The following attestation bundles were made for shoeboxpy-0.0.4-py3-none-any.whl:

Publisher: publish.yml on incebellipipo/shoeboxpy

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page