[!WARNING]
Part of the Python API documented below does not exist in
digitalmodel. These snippets are a specification of intended
capability, not runnable code. Do not import them, and do not report
a result obtained by pretending they ran.
Absent as of this revision:
digitalmodel.hydrodynamics.freq_dependent
digitalmodel.hydrodynamics.freq_dependent.FrequencyDependentMatrix
digitalmodel.hydrodynamics.validation
digitalmodel.hydrodynamics.validation.HydroValidator
The surrounding engineering content — method, conventions, what to
watch for — is unaffected and remains usable. Tracked in
aceengineer-strategy#267.
Hydrodynamics
When to Use
- 6×6 added mass and damping matrix management
- Wave spectrum modeling (JONSWAP, Bretschneider, PM)
- OCIMF wind and current loading calculations
- RAO interpolation and frequency-dependent coefficients
- Hydrodynamic coefficient database management
- Kramers-Kronig causality validation
Prerequisites
- Python environment with
digitalmodel package installed
- Hydrodynamic coefficient data (from AQWA, WAMIT, etc.)
- Environmental data for wave/wind/current loading
Python API
Coefficient Database
from digitalmodel.hydrodynamics.coefficient_database import CoefficientDatabase
# Initialize database
db = CoefficientDatabase()
# Store coefficients
db.store(
vessel_name="FPSO",
frequency=0.1,
*See sub-skills for full details.*
### Frequency-Dependent Matrices
```python
from digitalmodel.hydrodynamics.freq_dependent import FrequencyDependentMatrix
# Initialize with frequency-dependent data
fdm = FrequencyDependentMatrix()
fdm.load("hydro_data.json")
# Interpolate to specific frequency
A_interp = fdm.interpolate_added_mass(frequency=0.15)
B_interp = fdm.interpolate_damping(frequency=0.15)
# Get infinite frequency added mass
A_inf = fdm.get_infinite_frequency_added_mass()
Wave Spectra
from digitalmodel.hydrodynamics.wave_spectra import WaveSpectra
# Create JONSWAP spectrum
spectrum = WaveSpectra()
frequencies, S = spectrum.jonswap(
hs=3.5, # Significant wave height (m)
tp=10.0, # Peak period (s)
gamma=3.3, # Peakedness parameter
freq_min=0.02,
*See sub-skills for full details.*
### OCIMF Loading
```python
from digitalmodel.hydrodynamics.ocimf_loading import OCIMFLoading
# Initialize calculator
ocimf = OCIMFLoading()
# Define vessel
vessel = {
"length": 300.0,
"beam": 50.0,
*See sub-skills for full details.*
### Coefficient Interpolation
```python
from digitalmodel.hydrodynamics.interpolator import CoefficientsInterpolator
# Initialize interpolator
interp = CoefficientsInterpolator()
# Load RAO data
interp.load_raos("vessel_raos.csv")
# Interpolate to new frequencies
*See sub-skills for full details.*
### Causality Validation
```python
from digitalmodel.hydrodynamics.validation import HydroValidator
# Initialize validator
validator = HydroValidator()
# Load frequency-dependent coefficients
validator.load_coefficients("hydro_data.json")
# Kramers-Kronig check
*See sub-skills for full details.*
### Displacement RAO Quality Checks
```python
import yaml
from digitalmodel.marine_ops.marine_analysis import (
RAODataValidators,
VesselType,
DisplacementRAOQualityReport
)
from digitalmodel.marine_ops.marine_analysis.rao_quality_report import RAOQualityReportGenerator
# Load OrcaFlex RAO data
*See sub-skills for full details.*
## Key Classes
| Class | Purpose |
|-------|---------|
| `CoefficientDatabase` | Coefficient storage and retrieval |
| `FrequencyDependentMatrix` | 6×6 matrix interpolation |
| `WaveSpectra` | Spectrum generation (JONSWAP, PM, etc.) |
| `OCIMFLoading` | OCIMF wind/current calculations |
| `CoefficientsInterpolator` | 2D interpolation (freq × direction) |
| `HydroValidator` | Kramers-Kronig and matrix validation |
| `RAODataValidators` | RAO quality checks (phase, peaks, vessel type) |
| `RAOQualityReportGenerator` | HTML/CSV quality report generation |
## Related Skills
- [diffraction-analysis](../diffraction-analysis/SKILL.md) - **Master skill** for all diffraction workflows
- [aqwa-analysis](../aqwa-analysis/SKILL.md) - Extract coefficients from AQWA
- [bemrosetta](../bemrosetta/SKILL.md) - AQWA → OrcaFlex conversion with QTF and mesh support
- [orcaflex/modeling](../orcaflex/modeling/SKILL.md) - Apply in OrcaFlex models
- [viv-analysis](../viv-analysis/SKILL.md) - Hydrodynamic coefficient usage
## References
- DNV-RP-C205: Environmental Conditions and Environmental Loads
- OCIMF: Mooring Equipment Guidelines
- Newman, J.N.: Marine Hydrodynamics
## Sub-Skills
- [Best Practices](best-practices/SKILL.md)
## Sub-Skills
- [Version Metadata](version-metadata/SKILL.md)
- [[1.0.0] - 2026-01-07](100-2026-01-07/SKILL.md)
- [1. Coefficient Database Management (+4)](1-coefficient-database-management/SKILL.md)
- [Wave Spectrum Types](wave-spectrum-types/SKILL.md)
- [Coefficient Database JSON (+1)](coefficient-database-json/SKILL.md)
1---2name: hydrodynamics-23description: Manage hydrodynamic coefficients, wave spectra, and environmental loading for vessel response analysis. Use for 6×6 matrix management, wave spectrum modeling, OCIMF loading calculations, and RAO interpolation.4---56<!-- ace:api-missing-warning -->7> [!WARNING]8> **Part of the Python API documented below does not exist in9> `digitalmodel`.** These snippets are a *specification* of intended10> capability, not runnable code. Do not import them, and do not report11> a result obtained by pretending they ran.12>13> Absent as of this revision:14> - `digitalmodel.hydrodynamics.freq_dependent`15> - `digitalmodel.hydrodynamics.freq_dependent.FrequencyDependentMatrix`16> - `digitalmodel.hydrodynamics.validation`17> - `digitalmodel.hydrodynamics.validation.HydroValidator`18>19> The surrounding engineering content — method, conventions, what to20> watch for — is unaffected and remains usable. Tracked in21> aceengineer-strategy#267.2223<!-- ace:known-missing: digitalmodel.hydrodynamics.freq_dependent, digitalmodel.hydrodynamics.freq_dependent.FrequencyDependentMatrix, digitalmodel.hydrodynamics.validation, digitalmodel.hydrodynamics.validation.HydroValidator -->2425# Hydrodynamics2627## When to Use2829- 6×6 added mass and damping matrix management30- Wave spectrum modeling (JONSWAP, Bretschneider, PM)31- OCIMF wind and current loading calculations32- RAO interpolation and frequency-dependent coefficients33- Hydrodynamic coefficient database management34- Kramers-Kronig causality validation3536## Prerequisites3738- Python environment with `digitalmodel` package installed39- Hydrodynamic coefficient data (from AQWA, WAMIT, etc.)40- Environmental data for wave/wind/current loading4142## Python API4344### Coefficient Database4546```python47from digitalmodel.hydrodynamics.coefficient_database import CoefficientDatabase4849# Initialize database50db = CoefficientDatabase()5152# Store coefficients53db.store(54 vessel_name="FPSO",55 frequency=0.1,5657*See sub-skills for full details.*58### Frequency-Dependent Matrices5960```python61from digitalmodel.hydrodynamics.freq_dependent import FrequencyDependentMatrix6263# Initialize with frequency-dependent data64fdm = FrequencyDependentMatrix()65fdm.load("hydro_data.json")6667# Interpolate to specific frequency68A_interp = fdm.interpolate_added_mass(frequency=0.15)69B_interp = fdm.interpolate_damping(frequency=0.15)7071# Get infinite frequency added mass72A_inf = fdm.get_infinite_frequency_added_mass()73```74### Wave Spectra7576```python77from digitalmodel.hydrodynamics.wave_spectra import WaveSpectra7879# Create JONSWAP spectrum80spectrum = WaveSpectra()81frequencies, S = spectrum.jonswap(82 hs=3.5, # Significant wave height (m)83 tp=10.0, # Peak period (s)84 gamma=3.3, # Peakedness parameter85 freq_min=0.02,8687*See sub-skills for full details.*88### OCIMF Loading8990```python91from digitalmodel.hydrodynamics.ocimf_loading import OCIMFLoading9293# Initialize calculator94ocimf = OCIMFLoading()9596# Define vessel97vessel = {98 "length": 300.0,99 "beam": 50.0,100101*See sub-skills for full details.*102### Coefficient Interpolation103104```python105from digitalmodel.hydrodynamics.interpolator import CoefficientsInterpolator106107# Initialize interpolator108interp = CoefficientsInterpolator()109110# Load RAO data111interp.load_raos("vessel_raos.csv")112113# Interpolate to new frequencies114115*See sub-skills for full details.*116### Causality Validation117118```python119from digitalmodel.hydrodynamics.validation import HydroValidator120121# Initialize validator122validator = HydroValidator()123124# Load frequency-dependent coefficients125validator.load_coefficients("hydro_data.json")126127# Kramers-Kronig check128129*See sub-skills for full details.*130### Displacement RAO Quality Checks131132```python133import yaml134from digitalmodel.marine_ops.marine_analysis import (135 RAODataValidators,136 VesselType,137 DisplacementRAOQualityReport138)139from digitalmodel.marine_ops.marine_analysis.rao_quality_report import RAOQualityReportGenerator140141# Load OrcaFlex RAO data142143*See sub-skills for full details.*144145## Key Classes146147| Class | Purpose |148|-------|---------|149| `CoefficientDatabase` | Coefficient storage and retrieval |150| `FrequencyDependentMatrix` | 6×6 matrix interpolation |151| `WaveSpectra` | Spectrum generation (JONSWAP, PM, etc.) |152| `OCIMFLoading` | OCIMF wind/current calculations |153| `CoefficientsInterpolator` | 2D interpolation (freq × direction) |154| `HydroValidator` | Kramers-Kronig and matrix validation |155| `RAODataValidators` | RAO quality checks (phase, peaks, vessel type) |156| `RAOQualityReportGenerator` | HTML/CSV quality report generation |157158## Related Skills159160- [diffraction-analysis](../diffraction-analysis/SKILL.md) - **Master skill** for all diffraction workflows161- [aqwa-analysis](../aqwa-analysis/SKILL.md) - Extract coefficients from AQWA162- [bemrosetta](../bemrosetta/SKILL.md) - AQWA → OrcaFlex conversion with QTF and mesh support163- [orcaflex/modeling](../orcaflex/modeling/SKILL.md) - Apply in OrcaFlex models164- [viv-analysis](../viv-analysis/SKILL.md) - Hydrodynamic coefficient usage165166## References167168- DNV-RP-C205: Environmental Conditions and Environmental Loads169- OCIMF: Mooring Equipment Guidelines170- Newman, J.N.: Marine Hydrodynamics171172## Sub-Skills173174- [Best Practices](best-practices/SKILL.md)175176## Sub-Skills177178- [Version Metadata](version-metadata/SKILL.md)179- [[1.0.0] - 2026-01-07](100-2026-01-07/SKILL.md)180- [1. Coefficient Database Management (+4)](1-coefficient-database-management/SKILL.md)181- [Wave Spectrum Types](wave-spectrum-types/SKILL.md)182- [Coefficient Database JSON (+1)](coefficient-database-json/SKILL.md)