Design Context: 44ft Equilateral Triangle Deckhouse + 3x NACA 0035 Foil Legs (21.5ft x 8.5ft chord) + Heave Plates + Mooring.
Critical Physics: Non-linear hydrostatics (large waterplane area change), Viscous damping (heave plates/foils), Slamming/Green water on deck/legs, Mooring dynamics, 6-DOF motions.
Hardware: High-end GPU (NVIDIA RTX 3090/4090/A-series class assumed). OS: Linux preferred, Windows via WSL2 acceptable.
MoorDyn coupling (via Chrono::MoorDyn interface or direct DLL coupling in v5.2+) for helical screws.GenCase), and a more active marine/hydro community. Chrono is better if you need multi-body dynamics (tracks, gears, complex joints) inside the hull. You don't.| Criteria | DualSPHysics (GPU SPH) | Capytaine + MoorDyn (Python BEM) | Project Chrono (FSI-SPH) | OpenFOAM (VOF - olaFlow) | REEF3D (CFD GPU) | SPlisHSPlasH (SPH) |
|---|---|---|---|---|---|---|
| Physics Model | Weakly Compressible SPH (WCSPH). Fully non-linear, viscous, compressible (acoustic), mesh-free. | Linear Potential Flow (BEM) + Non-linear FK (custom). Inviscid (mostly). | WCSPH (similar kernel to DualSPHysics) + Chrono Multibody. | VOF (Finite Volume). Incompressible. Turbulence models (k-omega SST). | Level Set / Ghost Fluid (High Order FDM). Incompressible. Turbulence. | WCSPH / DFSPH. Good for graphics, less marine validation. |
| Handles Your Non-Linearities | Excellent Native large motion, slamming, ventilation, heave plate separation. | Poor Requires manual non-linear FK + Morison strip theory hacks. | Excellent Same physics as DualSPHysics. | Good Mesh deformation limits large 6-DOF amplitude. | Good Cartesian grid + Immersed Boundary handles large motion well. | Fair Possible, less marine benchmarking. |
| GPU Utilization | Native CUDA (100% GPU). Fastest option. | CPU Only (BEM is dense matrix solve). | Native CUDA (via Chrono::FSI). | CPU (MPI) OpenFOAM-GPU experimental. | Native CUDA Very fast. | Native CUDA/OpenCL Fast. |
| Mooring (MoorDyn) | Native Coupling (v5.2+ DLL link). | Native Python (MoorDyn-Python wrapper). | Native (Chrono::MoorDyn). | External (FAST/OrcaFlex coupling, complex). | Limited Usually custom coupling. | None Custom only. |
| Python / AI Scripting | Moderate XML input files. pysph wrapper exists but unofficial. Best: Python writes XML/STL. |
Excellent Pure Python OOP API. AI will write scripts fast. | Moderate Python bindings (PyChrono) exist but lag C++ API. | Moderate PyFoam, oftools. Case dicts are text. |
Poor C++ input files. Limited Python. | Poor C++ / JSON config. |
| Pre/Post Processing | Good GenCase (STL->Particles), ParaView, PostDualSPH. |
Excellent Matplotlib, NumPy, Pandas native. | Fair ParaView, custom C++ post-proc. | Excellent ParaView, foamToVTK, huge ecosystem. |
Fair Tecplot/Paraview, custom tools. | Fair ParaView, built-in GUI. |
| Setup Complexity (Your Geometry) | Medium STL -> Particles -> XML. Wave tank setup standard. | Low Mesh panels (Gmsh) -> Python -> Run. | High Chrono::FSI setup is verbose C++/JSON. | Very High snappyHexMesh + dynamicMeshDict + waveGen. | High Cartesian grid + STL level-set. Complex config. | Medium Scene description files. |
| Validation / Marine Cred | High ISOPE, OMAE papers. Used for WEC, slamming, coastal. | High Standard for linear seakeeping/WEC. | Medium Growing, more robotics/granular focus. | Highest Industry standard for VOF. | Medium Strong academic (NTNU), less commercial. | Low Graphics/Engineering crossover. |
| Cost / License | GPL v3 (Free) | MIT / BSD (Free) | BSD-3 (Free) | GPL v3 (Free) | GPL v3 (Free) | MIT (Free) |
Website: dual.sphysics.org | Repo: GitHub
MoorDyn.dll directly. You define the 3 screw pairs + fairlead positions in a .txt file. It solves mooring tension + body motion coupled implicitly.GenCase.xml.GenCase output + DualSPHysics.xml (numerics, wave maker, mooring coupling, output freq). Claude writes the XML.PartVTK tool converts binary output to .vtk. Open in ParaView -> Animate -> Save Video.dp (particle spacing) <= Chord/40 ~ 6.5cm for pressure convergence on foils.
Tank size: ~60m x 30m x 15m (deep water).
Particle count ~ 8-12 Million.
VRAM needed: ~12-16 GB (RTX 3090/4090 24GB is perfect. 12GB cards will struggle, need CPU fallback or smaller tank).
Best for: Quick RAOs, mean drift forces, mooring stiffness sizing, checking if the concept floats upright before spending GPU hours.
Python API Example (Claude writes this in seconds):
Verdict: Do this FIRST (Week 1). It gives you natural periods, mooring pre-tension estimates, and a sanity check. Do not use for final "failure" analysis.
Essentially the same SPH solver as DualSPHysics (developed in collaboration) but embedded in a Game-Engine style Multibody Dynamics kernel.
Use Chrono INSTEAD of DualSPHysics ONLY if: You need to simulate the internal mechanics simultaneously: e.g., the helical screw motor torque curves, the dinghy davit deployment kinematics, the walkway connection coupling between two seasteads (joint friction, slack), or tracked vehicle driving on deck.
For pure seakeeping: DualSPHysics has better wave absorption (active wave absorption - AWA), better wave generation (2nd order Stokes, focused waves), and simpler input files.
The "Heavy Iron" of CFD. VOF method captures air-water interface sharply (no particle noise).
Blocker for you: Dynamic Meshing for 6-DOF Trimaran. Your legs move 7ft+ vertically. The mesh around the foil/heave plates must deform or remesh every timestep. dynamicOversetFvMesh (overset/chimera) is the only robust way. Setting up 4 overlapping mesh zones (background + 3 leg zones) with heave plates sliding through background cells is a 2-3 month expert task. Not AI-friendly.
High-order finite difference on Cartesian grid + Level Set + Immersed Boundary (IB). Handles moving bodies extremely well (no meshing!). GPU native (CUDA). Used for breaking waves on fixed structures.
Issue: 6-DOF coupling for floating bodies is newer (2022+). MoorDyn coupling exists but less tested than DualSPHysics. Input is C++ structs / text files. Less Pythonic. Good alternative if DualSPHysics particle noise is unacceptable, but higher barrier to entry.
Hard No for Engineering.
Use Blender FOR: Importing DualSPHysics .vtk or .csv motion data (6-DOF CSV) -> Drive Blender Rig -> Render Photorealistic Marketing Video.
Assumes: You have STLs exported from CAD (Rhino/SolidWorks/FreeCAD). You run Linux (Ubuntu 22.04) natively or WSL2. GPU Drivers/CUDA Toolkit installed.
| Phase | DualSPHysics | Capytaine + MoorDyn | Project Chrono (FSI) | OpenFOAM (olaFlow) |
|---|---|---|---|---|
| Environment Setup | 1 Day (Docker: docker pull dualsphysics/dualsphysics:gpu) |
2 Hours (pip install) | 1 Day (Docker: projectchrono/chrono:gpu or compile) |
2 Days (Docker: opencfd/openfoam + olaFlow compile) |
| Geometry Prep (STL -> Input) | 2 Days (GenCase XML tuning: dp, tank dims, body transforms, ballast) | 1 Day (Gmsh panel mesh + Python body setup) | 3 Days (Chrono::FSI JSON format is verbose; STLs -> ChTriangleMeshConnected) | 5-10 Days (snappyHexMesh + Overset zones + STL cleaning) |
| Physics Config (Waves, Mooring, Output) | 2 Days (Wave maker type, AWA, MoorDyn.txt coupling, Output VTK freq) | 2 Days (MoorDyn.py + Custom Time Domain Solver Script) | 3 Days (Chrono::ChWaveGenerator, ChMoorDyn, Output callbacks) | 5 Days (waveGen dict, dynamicMeshDict, MoorDyn coupling compile) |
| Debug / First Valid Run | 3 Days (Particle instability, tensile instability, wall BCs, ballast check) | 1 Day (Matrix singularities, irregular freqs, MoorDyn init) | 5 Days (FSI coupling stability, time step, kernel params) | 10+ Days (Courant number, mesh quality, pressure-velocity coupling) |
| TOTAL TO FIRST VIDEO | ~8 Days | ~6 Days (But wrong physics for final answer) | ~12 Days | ~22+ Days |
Once you have a working GenCase.xml and DualSPHysics.xml template, changing the design is trivial for geometric scaling.
MoorDyn.txt (text file). No re-meshing.Effort: Low (15 mins script edit + Compute time).
Effort: Very Low (Pure Python parametric script). But physics fidelity ceiling is hit immediately.
Effort: High. Changing leg length requires regenerating overset mesh zones / background mesh refinement boxes. Changing heave plates requires new immersed boundary STL + refinement zones. Manual intervention almost guaranteed.
# On Linux (Ubuntu 22.04/24.04) or WSL2 # 1. Install NVIDIA Container Toolkit # 2. Pull DualSPHysics GPU Docker (easiest, reproducible) docker pull dualsphysics/dualsphysics:v5.2-gpu # 3. Pull ParaView (for viz) # sudo apt install paraview (or download binary for latest) # 4. Python env for Capytaine/Pre-post python3 -m venv venv_seastead source venv_seastead/bin/activate pip install capytaine moordyn numpy pandas matplotlib pyvista trimesh lxml
Generated for Seastead Design Project | DualSPHysics v5.2+ / Capytaine / MoorDyn Stack Recommended