Technical reference
Mathematical formulation, unit conventions, coordinate systems, and sign conventions for the Op3 framework. This is the authoritative specification for anyone reviewing the code or reproducing the results in a publication.
1. Unit system
Op3 uses strict SI units everywhere in public APIs:
Quantity |
Unit |
Symbol |
|---|---|---|
Length |
metre |
|
Mass |
kilogram |
|
Time |
second |
|
Force |
newton |
|
Pressure / stress / shear modulus |
pascal |
|
Stiffness (translation) |
newton / metre |
|
Stiffness (rotation) |
newton-metre / radian |
|
Mass density |
kilogram / cubic metre |
|
Angle |
radian |
|
The only exception is frequency, which is reported in Hz (cycles/s) in line with published NREL / DNV / IEC tables. Internal OpenSees eigenvalues are angular frequency squared and are converted via \(f = \sqrt{\lambda}/(2\pi)\).
CSV files carrying geotechnical data use mixed conventions inherited from the OptumGX / SACS export formats:
depth_m– metres (SI)k_ini_kN_per_m– kilonewtons / metre (multiplied by 1e3 on load)p_ult_kN_per_m– kilonewtons / metreD_total_kJ– kilojoulesw_z– dimensionless weightsu– pascal (SI)phi– degrees (converted to radians internally when needed)
The unit invariance test 2.13 in Verification & Validation verifies that the entire pipeline gives bit-identical frequencies when rebuilt in mm / N / tonne units.
2. Coordinate system
Op3 uses a right-handed Cartesian coordinate system that matches the OpenFAST v5 / SubDyn convention:
+z (upward, from mudline toward hub)
^
|
+--------> +x (downwind, nominal wind direction)
/
/
+y (to the left of the rotor when viewed from behind)
The tower base sits on or above the mudline, typically at
z = TowerBsHtread from the OpenFAST ElastoDyn file.The mudline is at
z = 0for monopiles and atz = -WaterDepthfor offshore structures measured from MSL.The hub is at
z = TowerHt + Twr2Shft + NacCMznabove the tower base (v0.4.0+ with the rigid CM offset).Tower foreaft bending is in the
x-zplane; side-side is iny-z.
3. Degree-of-freedom numbering
OpenSees in 3D with -ndf 6 uses this DOF ordering at every node:
DOF 1 : translation in x (Ux) foreaft tower displacement
DOF 2 : translation in y (Uy) side-side tower displacement
DOF 3 : translation in z (Uz) axial
DOF 4 : rotation about x (Rx) tower side-side bending moment
DOF 5 : rotation about y (Ry) tower foreaft bending moment
DOF 6 : rotation about z (Rz) torsion
The 6x6 head-stiffness matrix K is indexed in this order:
Ux Uy Uz Rx Ry Rz
+---------------------------------------
Ux | Kxx 0 0 0 K_x_ry 0
Uy | 0 Kyy 0 K_y_rx 0 0
Uz | 0 0 Kzz 0 0 0
Rx | 0 K_y_rx 0 Krxrx 0 0
Ry | K_x_ry 0 0 0 Kryry 0
Rz | 0 0 0 0 0 Krzrz
The off-diagonal coupling terms K[0,4] and K[1,3] are the
lateral-rocking coupling. For a monopile in the Op3
convention K[0,4] < 0 and K[1,3] > 0.
4. Foundation modes – mathematical definitions
Mode A (FIXED)
Pure rigid constraint at the tower base node via ops.fix. No
spring elements, no compliance. Used as the limiting case for Mode B
(K_diag -> infinity).
Mode B (STIFFNESS_6X6)
A lumped 6x6 elastic relation between forces and displacements at the tower base:
K must be symmetric and positive-definite (enforced by the V&V
test C4). The current Op3 implementation
uses an OpenSees zeroLength element with six uniaxialMaterial
“Elastic” instances on the diagonal; full off-diagonal coupling via
zeroLengthND is a v0.4 extension.
Mode C (DISTRIBUTED_BNWF)
Distributed Winkler springs along the embedded length of the pile. At depth \(z\), the local reaction is:
where k(z) is read from the spring profile CSV. The head
stiffness is obtained by Winkler integration:
where \(k_m(z)\) is the distributed moment stiffness (zero if not provided). Scour relief is applied by multiplying \(k(z)\) by \(\sqrt{(z-s)/z}\) for \(z > s\) (and zero below).
Mode D (DISSIPATION_WEIGHTED)
The novel Op3 contribution. The elastic Mode C springs are multiplied by a dimensionless weighting function:
where \(D(z)\) is the cumulative plastic dissipation from an OptumGX analysis and \(D_{\max}\) is the layer maximum. The weighted stiffness is:
Parameters \(\alpha\) (default 1.0) and \(\beta\) (default 0.05) are the only free knobs. See docs/MODE_D_DISSIPATION_WEIGHTED.md for the full formulation, limits, and validation gates.
5. PISA conic shape function
The PISA framework (Burd 2020 / Byrne 2020) represents soil reactions via a 4-parameter conic curve:
with four component-specific parameters:
\(k\) – dimensionless initial slope
\(n\) – curvature exponent (0 = bilinear, 1 = elastic-perfectly-plastic)
\(x_u\) – ultimate normalised displacement
\(y_u\) – ultimate normalised reaction
In Op3 the four parameters are depth-dependent (v1.0.0-rc1+):
For base components the variable is \(L/D\) (the full pile slenderness) rather than \(z/D\). Coefficients are pinned to the published calibrations:
Sand – Burd 2020 Table 5 (
PISA_SANDinop3/standards/pisa.py)Clay – Byrne 2020 Table 4 second-stage (
PISA_CLAY)
The normalisations (Byrne 2020 Table 1) are:
For sand, \(\sigma'_v\) is the effective vertical stress (approximated as \(\gamma'_{\rm eff} \cdot z\) with a default \(\gamma' = 10 \text{ kN/m}^3\)). For clay the normalising pressure is the undrained shear strength \(s_u\).
6. Effective head stiffness under eccentric load
The McAdam 2020 / Byrne 2020 field-test k_Hinit metric is the
secant slope of H vs ground-level displacement with the load applied
at height \(h\) above the seabed. For the 2x2 (x, ry) block of
K, the ground-level displacement is:
so the effective head stiffness is:
This is implemented in
op3.standards.pisa.effective_head_stiffness() and is the
correct comparator to the published field-test k_Hinit values.
7. Hardin-Drnevich modulus reduction
Cyclic soil degradation follows the modified hyperbolic:
with curvature exponent \(a = 1\) (default) or \(a = 0.92\) (Darendeli 2001). At \(\gamma = \gamma_{\rm ref}\) the ratio is exactly 0.5 by definition.
Reference strain is plasticity-index-dependent via Vucetic & Dobry (1991):
with linear-in-log interpolation between the knots digitised from Figure 5 of the paper.
8. Tower bending frequency formulas (analytical references)
Op3 is verified against Euler-Bernoulli closed-form cantilever results.
Cantilever without tip mass
with \(\beta_1 L = 1.87510\) for the first mode,
\(\beta_2 L = 4.69409\) for the second, etc. m_L is the
mass per unit length.
Cantilever with tip mass (Rayleigh)
from Blevins (1979) Table 8-1. The 0.2235 coefficient is the Rayleigh modal-mass fraction for the first mode of a uniform cantilever.
Static tip deflection
used in the V&V test C for a bit-exact comparison.
9. RNA mass and inertia convention
The rotor-nacelle assembly (RNA) is placed at a rigid offset from
the tower top via ops.rigidLink("beam", ...):
read from the OpenFAST ElastoDyn file. The rigid CM node carries:
Translational mass \(m_{RNA} = m_{\rm hub} + m_{\rm nac} + n_{\rm blades} \cdot m_{\rm blade}\)
Roll inertia (x-axis) \(\approx (I_{\rm hub} + I_{\rm nac,yaw})/2\)
Pitch inertia (y-axis) \(= I_{\rm hub}\)
Yaw inertia (z-axis) \(= I_{\rm nac,yaw}\)
10. Hermite polynomial chaos
The Op3 PCE uses probabilist Hermite polynomials \(He_k(\xi)\) orthogonal under the standard normal density \(\phi(\xi) = (2\pi)^{-1/2} e^{-\xi^2/2}\):
A 1D PCE of order p is the expansion:
with pseudo-spectral projection coefficients:
where \((\xi_i, w_i)\) are Gauss-Hermite quadrature nodes and
weights. Critical implementation detail: numpy.polynomial.hermite_e.hermegauss
returns weights for \(\int f(x) e^{-x^2/2} dx\), missing the
\(1/\sqrt{2\pi}\) standard-normal density factor. Op3
divides the weights by \(\sqrt{2\pi}\) internally – see the
comment in op3/uq/pce.py.
Mean and variance from the coefficients (closed form, no resampling):
Sobol indices (2D):
where \(V_i = \sum_{k_i \geq 1, k_j = 0} i! j! c_{ij}^2\).
11. Grid Bayesian calibration
For a scalar calibration parameter \(\theta\) with forward model \(g(\theta)\) and measured observable \(y_{\rm meas}\), the posterior is:
with Gaussian likelihood:
Op3 evaluates \(g(\theta)\) on a user-supplied grid, multiplies by the prior, normalises via trapezoidal integration, and reports posterior mean, std, and quantiles. The grid approach is preferred over MCMC for the 1D problems Op3 needs because the posterior is uni-modal and 200-500 points are sufficient for sub-percent accuracy with no tuning.
12. Key references
Topic |
Citation |
|---|---|
PISA sand |
Burd et al. (2020), Geotechnique 70(11), 1048-1066 |
PISA clay |
Byrne et al. (2020), Geotechnique 70(11), 1030-1047 |
Dunkirk field tests |
McAdam et al. (2020), Geotechnique 70(11), 986-998 |
Ground characterisation |
Zdravkovic et al. (2020), Geotechnique 70(11), 945-962 |
OC6 Phase II |
Bergua et al. (2021), NREL/TP-5000-79989 |
NREL 5 MW |
Jonkman et al. (2009), NREL/TP-500-38060 |
OC3 monopile |
Jonkman & Musial (2010), NREL/TP-500-47535 |
IEA 15 MW |
Gaertner et al. (2020), NREL/TP-5000-75698 |
Hardin-Drnevich |
Hardin & Drnevich (1972), J. Soil Mech. Found. Div. 98(7) |
Vucetic-Dobry |
Vucetic & Dobry (1991), J. Geotech. Eng. 117(1) |
Houlsby-Byrne caisson |
Houlsby & Byrne (2005), Proc. ICE Geotech. Eng. 158(2/3) |
Hermite PCE |
Xiu & Karniadakis (2002), SIAM J. Sci. Comput. 24(2) |
Rayleigh cantilever |
Blevins (1979), Formulas for Natural Frequency, Table 8-1 |
Phoon-Kulhawy COVs |
Phoon & Kulhawy (1999), Can. Geotech. J. 36(4) |
See paper/paper.bib for the full BibTeX entries.