This page compares free / open‑source packages that can simulate a small floating platform (seastead) with legs, cables, and wave loading. The goal is to see when cables go slack or experience snap (snatch) loads, and to produce visual videos of the motion.
| Software | What it does | Pros | Cons | Time to first simple model* | Accuracy for cables & waves | Example video (YouTube) | Homepage / Docs |
|---|---|---|---|---|---|---|---|
| Project Chrono (incl. HydroChrono / PyChrono) | Multi‑body dynamics (rigid bodies, cables/chains, joints). Built‑in buoyancy & wave forcing. 3‑D visualization. | · All‑in‑one environment (no extra solvers). · Python API (PyChrono) works well with AI assistants. · Can model slack/tension in cables (distance constraints). · Runs on Linux/Windows, no GPU needed. |
· Hydrodynamic model is simplified (added‑mass / radiation only). · No built‑in diffraction / wave‑interaction (unless you couple with Capyatine). · Cable model is quasi‑static (no dynamic stretch). |
~1‑2 days (create geometry, add buoyancy, add cable constraints, run wave). ≈ 20 lines of Python with AI help. |
Good for “ball‑park” motion and cable‑tension estimation. Wave heights can be prescribed; snap‑load detection is possible by watching tension spikes. | Project Chrono – floating platform in waves (≈ 1 min) | https://projectchrono.org/ HydroChrono docs |
| Capyatine + MoorDyn |
|
· High‑fidelity wave‑load (diffraction) for complex hulls. · MoorDyn handles elastic cables with tension‑dependent stiffness, slack‑to‑tight transitions. · Both are pure‑Python‑friendly (Capyatine has a Python wrapper; MoorDyn has a C library + Python API). |
· Two separate packages → you must feed Capyatine results (matrices) into MoorDyn and couple with your own multi‑body code (e.g., a simple Python ODE or Chrono). · Requires some “glue” scripting and understanding of frequency‑domain data. |
~1‑2 weeks (learn Capyatine’s input format, generate hydrodynamic coefficients, set up MoorDyn, write coupling script). ≈ 150‑200 lines of Python with AI help. |
Excellent for wave‑load (diffraction) and realistic cable dynamics (snap loads). Good for engineering‑level studies. | Capyatine + MoorDyn – floating wind turbine example (≈ 2 min) | Capyatine GitHub MoorDyn website |
| Blender (Rigid Body + Fluid) | 3‑D modelling tool with a built‑in “Rigid Body” physics engine. Optional “Fluid” simulation (Eulerian grid). | · Very quick to build geometry and animate. · Many tutorials and a huge community. · Good for artistic video output. |
· Rigid‑Body engine is not a real‑world dynamics solver – no proper buoyancy, added‑mass, or wave forces. · Fluid sim is extremely expensive, low‑resolution, and cannot produce realistic cable snap loads. |
~½ day to make a simple model, but the physics will be unrealistic. | Not suitable for engineering‑level predictions. Only “visual” feel. | Blender floating platform (artist’s impression) | Blender website |
| DualSPHysics | GPU‑accelerated Smoothed Particle Hydrodynamics (SPH) fluid solver. Can simulate fully nonlinear wave–structure interaction. | · Truly captures wave breaking, splash, and complex fluid‑structure interaction. · Runs on CUDA/OpenCL (good GPU availability). |
· Steep learning curve; requires careful meshing, particle tuning, and long simulation times. · No built‑in cable/chain mechanics – you would need to couple with a multi‑body code (e.g., Chrono). · Primarily a CFD tool, not a multi‑body tool. |
~2 weeks to set up fluid domain, mesh, and couple to a structural solver (or approximate with particle‑based “flexible” lines). | High‑fidelity fluid but cable modeling is difficult; you would see slack but not precise tension without extra work. | DualSPHysics wave‑structure example | DualSPHysics website |
| OpenFOAM (coupled with multi‑body) | General‑purpose CFD suite (RANS, LES, wave‑generation). Must be coupled to a structural solver (e.g., Chrono, or your own code). | · Many wave‑generation libraries (e.g., waves2Foam). · Accurate fluid forces for complex hulls. |
· Very steep learning curve, large number of knobs. · Requires substantial pre‑/post‑processing (mesh generation, case setup). · Not “quick‑look” tool for brainstorming. |
≥ 3‑4 weeks to get a stable CFD‑structure simulation. | Accurate fluid but coupling to flexible cables is non‑trivial; you’ll spend most time on the CFD side. | OpenFOAM floating platform wave load | OpenFOAM website |
| OpenFAST (offshore wind tool) | Multi‑physics platform for wind turbines that includes mooring dynamics (via MoorDyn) and linear‑wave diffraction. | · Already includes a mooring‑line module (MoorDyn). · Can do full coupled wave‑mooring‑structure analysis. |
· Primary focus is wind‑turbine support; adapting to a small seastead needs a lot of configuration. · Not Python‑centric (mostly Fortran + XML). · Large download & steep learning. |
≈ 2‑3 weeks to set up a simple seastead model. | Accurate wave & mooring but might be overkill for a tiny 4‑leg platform. | OpenFAST mooring example | OpenFAST docs |
*Time to first simple model assumes you are comfortable writing Python scripts and have an AI assistant (Claude Code / Cursor.ai) to generate scaffold code. Times are order‑of‑magnitude estimates; actual effort depends on your prior experience.
pip install pychrono (or build from source for the newest HydroChrono)..obj or create directly in PyChrono (e.g., ChBodyEasyCylinder).ChBuoyancy (or the newer HydroChrono helper) that computes force based on submerged volume. It accepts a wave height & period.ChLinkDistance or a chain of point‑masses to represent flexible cables. Measure the link’s tension with link.GetReaction().A minimal script (≈ 50 lines) can be generated by an AI assistant. Below is a rough sketch (Python):
# PyChrono example (pseudo‑code)
import pychrono as chrono
import math
sys = chrono.ChSystemSMC()
# Wave parameters
wave_height = 1.0 # m
wave_period = 5.0 # s
# Platform (box)
platform = chrono.ChBodyEasyBox(12.192, 4.877, 1.0, 1500, True)
sys.AddBody(platform)
# Legs (cylinders) – 4 legs, each 1.22 m dia, 7.32 m long
leg_dim = chrono.ChDimensionConstants()
for (x, y) in [(-6.1,-2.44), (6.1,-2.44), (-6.1,2.44), (6.1,2.44)]:
leg = chrono.ChBodyEasyCylinder(0.61, 7.32, 1500, True)
leg.SetPos(chrono.ChVector(x, y, -3.66)) # half submerged
sys.AddBody(leg)
# Attach leg to platform with a revolute joint (pivot)
joint = chrono.ChLinkRevolute()
joint.Initialize(platform, leg, chrono.ChFrame(chrono.ChVector(x, y, 0)))
sys.AddLink(joint)
# Simple cable (distance constraint) between leg bottoms
cable = chrono.ChLinkDistance()
cable.Initialize(leg1, leg2, False) # you would list the two leg bodies
sys.AddLink(cable)
# Buoyancy – use built‑in simple buoyancy (no diffraction)
buoy = chrono.ChBuoyancy()
buoy.SetWaterDensity(1025)
buoy.SetWaveHeight(wave_height)
buoy.SetWavePeriod(wave_period)
# Attach to each body
for body in [platform] + legs:
body.AddBuoyancyForce(buoy)
# Run
ts = 0.001
duration = 30.0
while sys.GetChTime() < duration:
sys.DoStepDynamics(ts)
# monitor tension (cable.GetReaction()[0])
pass
You can replace the simple buoyancy with a HydroChrono “ChHydroWave” for more realistic sinusoidal wave forcing. The script will run on a laptop in a few minutes, giving you a video of the platform bobbing and cables tensioning.
This path is more work but yields engineering‑grade data for snap loads.
All of the above packages run on Linux and Windows. They are free (no licence fee), and you can ask Claude Code or Cursor.ai to help write the Python glue code.
Prepared for the seastead brainstorming team – feel free to copy this HTML onto your site.