Skip to main content Skills Marketplace Découvrez et explorez les compétences IA créées par la communauté.
Installer avec Codex ou Claude Copiez ce prompt, collez-le dans Codex, Claude ou un autre assistant, puis laissez-le vérifier la page du skill et l'installer pour vous.
Copier le promptAfficher les détails du prompt Une commande directe contourne le prompt de vérification. Examinez la source avant de l'exécuter.
npx skills add https://github.com/majiayu000/claude-skill-registry --skill hydrodynamicsLa commande reste sur une seule ligne. Faites défiler horizontalement pour la vérifier avant de la copier.
Vous préférez une copie locale ? Téléchargez les fichiers actuellement disponibles dans SkillsMP.
Télécharger Zip Téléchargement... Métiers associés SOC
Basé sur la classification professionnelle SOC
Explorateur de fichiers
2 fichiers name hydrodynamics description 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. updated 2026-01-07
Hydrodynamics Skill
Manage hydrodynamic coefficients, wave spectra, and environmental loading for vessel and floater response analysis.
Version Metadata
version: 1.0 .0
python_min_version: '3.10'
compatibility:
tested_python:
- '3.10'
- '3.11'
- '3.12'
- '3.13'
os:
- Windows
- Linux
- macOS
Changelog
[1.0.0] - 2026-01-07
Added:
Initial version metadata and dependency management
Semantic versioning support
Compatibility information for Python 3.10-3.13
Enhanced skill documentation structure
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
Analysis Types
1. Coefficient Database Management Store and retrieve hydrodynamic coefficients.
hydrodynamics:
coefficient_database:
flag: true
vessel_name: "FPSO"
source_file: "data/hydro_coefficients.json"
coefficients:
- added_mass
- damping
- wave_excitation
output:
database_file: "results/coefficient_db.json"
2. Wave Spectra Modeling Generate and analyze wave spectra.
hydrodynamics:
wave_spectra:
flag: true
spectrum_type: "jonswap"
parameters:
hs: 3.5
tp: 10.0
gamma: 3.3
frequency_range:
min: 0.02
max: 0.5
n_points: 100
output:
spectrum_file: "results/wave_spectrum.csv"
plot_file: "results/spectrum_plot.html"
3. OCIMF Environmental Loading Calculate wind and current loads per OCIMF guidelines.
hydrodynamics:
ocimf_loading:
flag: true
vessel:
length: 300.0
beam: 50.0
draft: 20.0
displacement: 200000
environment:
wind_speed: 25.0
wind_direction: 45.0
current_speed: 1.5
current_direction: 90.0
output:
loads_file: "results/ocimf_loads.json"
4. RAO Interpolation Interpolate RAOs across frequencies and directions.
hydrodynamics:
rao_interpolation:
flag: true
input_raos: "data/vessel_raos.csv"
target_frequencies: [0.05 , 0.1 , 0.15 , 0.2 , 0.25 ]
target_directions: [0 , 30 , 60 , 90 , 120 , 150 , 180 ]
method: "cubic"
output:
interpolated_file: "results/interpolated_raos.csv"
5. Displacement RAO Quality Checks Validate displacement RAO data for physical correctness and consistency.
hydrodynamics:
rao_quality_check:
flag: true
input_file: "data/vessel_raos.yml"
vessel_type: auto
tolerances:
amplitude: 0.05
phase: 10.0
checks:
- long_period_phase
- peak_detection
- vessel_type_detection
output:
html_report: "reports/rao_qa/quality_report.html"
csv_summary: "reports/rao_qa/quality_summary.csv"
Long Period Phase : Validates phase angles approach expected values as period → infinity (Orcina convention)
Peak Detection : Identifies resonance peaks and validates against vessel type natural period ranges
Vessel Type Detection : Auto-detects vessel type from RAO characteristics with confidence score
Active DOF Validation : Checks appropriate DOFs are active for each wave heading
Python API
Coefficient Database from digitalmodel.modules.hydrodynamics.coefficient_database import CoefficientDatabase
db = CoefficientDatabase()
db.store(
vessel_name="FPSO" ,
frequency=0.1 ,
added_mass=added_mass_matrix,
damping=damping_matrix
)
A, B = db.get_matrices(vessel_name="FPSO" , frequency=0.1 )
frequencies = db.get_frequencies("FPSO" )
Frequency-Dependent Matrices from digitalmodel.modules.hydrodynamics.freq_dependent import FrequencyDependentMatrix
fdm = FrequencyDependentMatrix()
fdm.load("hydro_data.json" )
A_interp = fdm.interpolate_added_mass(frequency=0.15 )
B_interp = fdm.interpolate_damping(frequency=0.15 )
A_inf = fdm.get_infinite_frequency_added_mass()
Wave Spectra from digitalmodel.modules.hydrodynamics.wave_spectra import WaveSpectra
spectrum = WaveSpectra()
frequencies, S = spectrum.jonswap(
hs=3.5 ,
tp=10.0 ,
gamma=3.3 ,
freq_min=0.02 ,
freq_max=0.5 ,
n_points=100
)
freq, S_pm = spectrum.pierson_moskowitz(hs=3.5 , tp=10.0 )
freq, S_bs = spectrum.bretschneider(hs=3.5 , tp=10.0 )
m0 = spectrum.spectral_moment(frequencies, S, n=0 )
m2 = spectrum.spectral_moment(frequencies, S, n=2 )
Tz = np.sqrt(m0/m2)
OCIMF Loading from digitalmodel.modules.hydrodynamics.ocimf_loading import OCIMFLoading
ocimf = OCIMFLoading()
vessel = {
"length" : 300.0 ,
"beam" : 50.0 ,
"draft" : 20.0 ,
"displacement" : 200000
}
wind_load = ocimf.wind_load(
vessel=vessel,
wind_speed=25.0 ,
wind_direction=45.0
)
current_load = ocimf.current_load(
vessel=vessel,
current_speed=1.5 ,
current_direction=90.0
)
Coefficient Interpolation from digitalmodel.modules.hydrodynamics.interpolator import CoefficientsInterpolator
interp = CoefficientsInterpolator()
interp.load_raos("vessel_raos.csv" )
new_freqs = [0.05 , 0.1 , 0.15 , 0.2 ]
interpolated = interp.interpolate_frequencies(new_freqs, method="cubic" )
new_dirs = [0 , 45 , 90 , 135 , 180 ]
interpolated = interp.interpolate_directions(new_dirs)
Causality Validation from digitalmodel.modules.hydrodynamics.validation import HydroValidator
validator = HydroValidator()
validator.load_coefficients("hydro_data.json" )
kk_result = validator.kramers_kronig_check()
if not kk_result["passed" ]:
print (f"Causality issues at: {kk_result['violations' ]} " )
sym_check = validator.check_symmetry()
pd_check = validator.check_positive_definite()
Displacement RAO Quality Checks import yaml
from digitalmodel.modules.marine_analysis import (
RAODataValidators,
VesselType,
DisplacementRAOQualityReport
)
from digitalmodel.modules.marine_analysis.rao_quality_report import RAOQualityReportGenerator
with open ("vessel_raos.yml" , 'r' ) as f:
rao_data = yaml.safe_load(f)
validators = RAODataValidators()
report = validators.validate_displacement_rao_quality(
rao_data,
source_file="vessel_raos.yml" ,
vessel_type=None ,
amplitude_tolerance=0.05 ,
phase_tolerance=10.0
)
print (f"Vessel Type: {report.vessel_type.value} " )
print (f"Confidence: {report.vessel_type_confidence:.1 %} " )
print (f"Overall Status: {report.overall_status} " )
print (f"Pass Rate: {report.pass_rate:.1 f} %" )
print (f"Total/Passed/Warnings/Failed: {report.total_checks} /{report.passed_checks} /{report.warning_checks} /{report.failed_checks} " )
for check in report.phase_checks:
if check.status == 'FAIL' :
print (f"FAIL: {check.dof} @ {check.heading} ° - {check.message} " )
for check in report.peak_checks:
print (f"{check.dof} : Peak at {check.peak_period:.1 f} s (expected {check.expected_range[0 ]:.1 f} -{check.expected_range[1 ]:.1 f} s)" )
generator = RAOQualityReportGenerator(output_dir="reports/rao_qa" )
html_path = generator.generate_html_report(report, report_name="vessel_quality" )
print (f"HTML report: {html_path} " )
csv_path = generator.export_csv_summary(report, report_name="vessel_summary" )
print (f"CSV summary: {csv_path} " )
active_dofs = RAODataValidators.get_active_dofs_for_heading(180.0 )
print (f"Active DOFs at head seas: {active_dofs} " )
Wave Direction Convention:
0° = Head seas (waves from bow, approaching vessel)
90° = Beam seas from starboard
180° = Following seas (waves from stern)
270° = Beam seas from port
Expected Long Period Values (Orcina Convention):
DOF Head Seas (0°) Beam Seas (90°) Following (180°) Surge Amp=1.0, Phase=-90° Inactive Amp=1.0, Phase=90° Sway Inactive Amp=1.0, Phase=-90° Inactive Heave Amp=1.0, Phase=0° Amp=1.0, Phase=0° Amp=1.0, Phase=0° Roll Inactive Amp=1.0, Phase=-90° Inactive Pitch Amp=1.0, Phase=90° Inactive Amp=1.0, Phase=-90° Yaw Inactive Inactive Inactive
Phase Convention Support:
PhaseConvention.ORCINA - Phase lag from wave crest (OrcaFlex, OrcaWave)
PhaseConvention.ISO_6954 - Phase lead over wave (AQWA, WAMIT)
Auto-detection based on file extension (.yml → Orcina, .lis → ISO)
Key Classes Class Purpose CoefficientDatabaseCoefficient storage and retrieval FrequencyDependentMatrix6×6 matrix interpolation WaveSpectraSpectrum generation (JONSWAP, PM, etc.) OCIMFLoadingOCIMF wind/current calculations CoefficientsInterpolator2D interpolation (freq × direction) HydroValidatorKramers-Kronig and matrix validation RAODataValidatorsRAO quality checks (phase, peaks, vessel type) RAOQualityReportGeneratorHTML/CSV quality report generation
Wave Spectrum Types Spectrum Application JONSWAP Fetch-limited seas (North Sea) Pierson-Moskowitz Fully developed seas Bretschneider General two-parameter spectrum ISSC Modified Pierson-Moskowitz Ochi-Hubble Bimodal sea states
Output Formats
Coefficient Database JSON {
"vessel_name" : "FPSO" ,
"frequencies_rad_s" : [ 0.1 , 0.2 , 0.3 ] ,
"added_mass" : {
"0.1" : [ [ 1.2e6 , 0 , 0 , 0 , 1.5e7 , 0 ] , ...] ,
"0.2" : [ [ 1.1e6 , 0 , 0 , 0 , 1.4e7 , 0 ] , ...]
} ,
"damping" : {
"0.1" : [ [ 2.5e5 , 0 , 0 , 0 , 3.2e6 , 0 ] , ...] ,
"0.2" : [ [ 2.8e5 , 0 , 0 , 0 , 3.5e6 , 0 ] , ...]
}
}
Wave Spectrum CSV frequency_rad_s,frequency_hz,period_s,spectral_density
0.314,0.050,20.0,0.123
0.628,0.100,10.0,2.456
0.942,0.150,6.67,1.234
Best Practices
Frequency range - Cover full wave spectrum of interest (typically 0.02-0.5 rad/s)
Direction convention - Use consistent direction convention (from/to, bow=0°)
Unit consistency - Verify units (rad/s vs Hz, degrees vs radians)
Causality check - Validate coefficients with Kramers-Kronig before use
Matrix symmetry - Verify added mass symmetry for physical consistency
Related Skills
References
DNV-RP-C205: Environmental Conditions and Environmental Loads
OCIMF: Mooring Equipment Guidelines
Newman, J.N.: Marine Hydrodynamics