Suction anchors (floating OWT)
The op3.anchors package extends Op3 from fixed-bottom
foundations to floating-platform suction-anchor mooring design. It
covers ultimate capacity (four analytical methods + an FE-calibrated
path), installation feasibility, optimal padeye depth (including a
novel dissipation-centroid method), cyclic-storm degradation, and
MoorPy coupling for full safety-factor time-series checks.
Scope and standards
The module is built around the design framework of:
DNV-RP-E303 (2021) – Geotechnical Design and Installation of Suction Anchors in Clay (default capacity method).
API RP 2SK (2005, reaff. 2015) – Stationkeeping Systems for Floating Structures.
ISO 19901-7 (2013) – Stationkeeping systems.
DNV-ST-0119 (2021) – Floating wind turbine structures (consequence-class partial safety factors).
It is restricted to clay sites with linearly increasing undrained shear strength \(s_u(z) = s_{u0} + k_z\,z\). Layered profiles require segment-wise integration; sand sites are out of scope (no analytical Np table is published for granular anchors).
Quick start
from op3.anchors import (
SuctionAnchor, UndrainedClayProfile, MooringLoad,
anchor_capacity, installation_analysis,
optimal_padeye_analytical, cyclic_capacity_reduction,
)
anchor = SuctionAnchor(diameter_m=5.0, skirt_length_m=15.0,
padeye_depth_m=10.0,
submerged_weight_kN=250.0)
soil = UndrainedClayProfile(su_mudline_kPa=5.0,
su_gradient_kPa_per_m=1.5)
load = MooringLoad(tension_kN=4000.0,
angle_at_padeye_deg=25.0)
r = anchor_capacity(anchor, soil, method='dnv_rp_e303', load=load)
print(f"H_ult = {r.H_ult_kN:.0f} kN")
print(f"V_ult = {r.V_ult_kN:.0f} kN")
print(f"T_ult = {r.T_ult_kN:.0f} kN")
print(f"FoS = {r.factor_of_safety(load.tension_kN):.2f}")
Capacity methods
Five independently testable methods behind a unified dispatcher
op3.anchors.anchor_capacity():
method= |
Reference |
When to use |
|---|---|---|
|
DNV-RP-E303 (2021) |
Code-compliant design baseline |
|
Murff & Hamilton (1993) |
Upper-bound cross-check |
|
API RP 2SK (2005) |
Conservative API-style envelope (linear V-H) |
|
Aubeny, Han & Murff (2003) |
Detailed N:sub:`p`(z/D) for smooth/rough interface |
|
OptumGX driver |
Anchor-specific FE envelope (real CSV required) |
Every method returns the same AnchorCapacityResult shape
(H, V, T at the load angle + V-H envelope DataFrame + depth profile
DataFrame). The FE method raises FileNotFoundError with a clear
hint when its CSV is missing – the Python layer never fabricates FE
data.
Installation analysis
installation_analysis() runs three checks per DNV-RP-E303
Sections 5.2-5.4:
Self-weight penetration – bisection on \(W'_\text{sub} = R(z)\).
Required suction vs depth: \(s_\text{req}(z) = (R(z) - W')\,/\,A_\text{lid,inner}\).
Plug-heave stability ratio: \(R_\text{plug} = S_\text{pull}\,/\,S_\text{resist}\).
- Cavitation limit
\(s_\text{allow}(z) = 0.9\,(\gamma_w\,z_w + \gamma'\,z)\) per RP-E303 Section 5.3.5 (0.9 cavitation margin for pump inefficiency + seawater vapour pressure).
Optimal padeye
Three approaches:
optimal_padeye_analytical(method='supachawarote_2005')()– Supachawarote et al. (2005) Table 2 interpolation by L/D and su profile shape.optimal_padeye_analytical(method='murff_hamilton')()– constant 0.67 L per Murff & Hamilton (1993).optimal_padeye_from_dissipation()– novel Op:sup:`3` contribution: centroid of the plastic-dissipation field at collapse, derived from OptumGX Mode D output. Extends Op3 Mode D (cavity-expansion framework) to anchor design.
The dissipation-centroid method requires a real dissipation.csv
produced by op3/anchors/optumgx_anchor_run.py. See
docs/ANCHOR_OPTUMGX_GUIDE.md for the LLM-assisted workflow.
Cyclic degradation
cyclic_capacity_reduction() applies the Andersen 2015
Drammen-clay surrogate
calibrated to the four corner cases of Andersen (2015) FOG III Fig. 4 (N=10,1000 vs τ/s:sub:`u`=0.3,0.8). PI dependence is a small linear correction.
For a 3-hour storm with T:sub:`p`=12 s, τ/s:sub:`u`=0.5, this gives δ ≈ 0.86 (≈14% capacity drop).
MoorPy coupling
extract_anchor_loads_from_moorpy_system() solves MoorPy’s
non-linear catenary equilibrium at every step of a prescribed body
motion DataFrame (surge / sway / heave) and returns the real
anchor-side tension + angle time series.
anchor_safety_factor_timeseries() evaluates the capacity at
each step and reports a per-step FoS against DNV-ST-0119 ULS = 1.30.
OptumGX driver
The commercial-boundary FE driver
op3/anchors/optumgx_anchor_run.py is loaded into OPTUM GX’s
desktop scripting console (it from OptumGX import * – not
importable from a stock Python interpreter). It builds a 3D
anchor model via 2D revolution, sweeps a configurable list of load
angles (default 0/15/30/45/60/75/90 °), and writes:
envelope.csv–angle_deg, T_ult_kN_half, H_ult_kN, V_ult_kNdissipation.csv–depth_m, w_z, D_total_kJat the design angleplates_a<ANG>.xlsx– raw plate-element data per probesummary.json– run config + timings
The pure-Python post-processor
op3.anchors.fe_postprocess.load_anchor_fe_results() then assembles
AnchorCapacityResult + the dissipation-centroid padeye in one call.
Validation
Aubeny et al. (2003) Table 2 deep Np (smooth=9.14, rough=11.94)
API RP 2SK Section 5.4.2.3 cut-off (z/D=6 -> N:sub:`p`=9)
DNV-RP-E303 Section 4.3.3.2 Np profile
Closed-form \(H_\text{ult}\) integral with linear su
Randolph & House (2002) effective Np band for L/D ≥ 5
Total: 134 anchor tests passing (pytest tests/test_anchors/ -v).
API reference
|
Suction-anchor geometry and steel properties. |
|
Linearly increasing undrained shear strength profile. |
|
Mooring-line load vector at the padeye. |
|
Unified return type for every capacity method. |
|
Dispatch to the requested capacity method. |
|
Run all three installation checks and return a single report. |
|
Analytical / tabulated optimal padeye depth. |
Centroid of the plastic-dissipation field at collapse. |
|
|
Ultimate-capacity cyclic reduction factor for a 3-hour design storm. |
Solve MoorPy static equilibrium at every timestep of a motion history and return the anchor-side tension + angle. |
|
Compute factor of safety at every time step. |
|
|
Render a Markdown design report from the FoS timeseries. |
References
Andersen, K. H. (2015). “Cyclic soil parameters for offshore foundation design.” Frontiers in Offshore Geotechnics III, 5-82.
API (2005, reaff. 2015). RP 2SK: Design and Analysis of Stationkeeping Systems for Floating Structures, 3rd ed.
Aubeny, C. P., Han, S.-W., & Murff, J. D. (2003). “Inclined load capacity of suction caissons.” IJNAMG 27(14), 1235-1254.
DNV (2021). RP-E303: Geotechnical design and installation of suction anchors in clay.
Murff, J. D., & Hamilton, J. M. (1993). “P-Ultimate for undrained analysis of laterally loaded piles.” J. Geotech. Eng. 119(1), 91-107.
Randolph, M. F., & House, A. R. (2002). “Analysis of suction caisson capacity in clay.” OTC 14236.
Supachawarote, C., Randolph, M. F., & Gourvenec, S. (2005). “The effect of crack formation on the inclined pull-out capacity of suction caissons.” IACMAG Turin, Vol. 3, 577-584.