|
| 1 | +# Op3 Decision Log |
| 2 | + |
| 3 | +Technical decisions with rationale. Updated each session. |
| 4 | +Format: ID, date, what was decided, what alternatives existed, why this choice, evidence, who decided. |
| 5 | + |
| 6 | +--- |
| 7 | + |
| 8 | +## DL-001: Foundation mode hierarchy (A/B/C/D) |
| 9 | +- **Date:** 2025-12 (initial design) |
| 10 | +- **Decision:** 4-tier hierarchy: Fixed → 6x6 → BNWF → Dissipation-weighted |
| 11 | +- **Alternatives:** Single mode (BNWF only), 2-tier (fixed + springs) |
| 12 | +- **Why:** Progressive fidelity matches engineering workflow. Mode A for sanity checks, Mode B for code-compliant design, Mode C for site-specific, Mode D for post-yield assessment. Each mode validates the one below it. |
| 13 | +- **Evidence:** Validated across 39 benchmarks (0.8-29% error range) |
| 14 | +- **Decided by:** Human (KSK) — architectural decision |
| 15 | + |
| 16 | +## DL-002: Efthymiou & Gazetas (2018) as primary stiffness formulation |
| 17 | +- **Date:** 2026-04-10 |
| 18 | +- **Decision:** Use Efthymiou & Gazetas (2018) for Mode B suction caisson stiffness |
| 19 | +- **Alternatives:** Gazetas (1991) surface+embed, Houlsby & Byrne (2005) OWA, Doherty (2005) 3D FE, Jalbi (2018) Plaxis regression |
| 20 | +- **Why:** +3-10% vs Doherty 3D FE at L/D=0.5 (best among analytical). Gazetas 1991 underestimates KR by 56%. OWA overestimates KL by 38%. |
| 21 | +- **Evidence:** `validation/cross_validations/field_oxcaisson_results.json`, benchmark #20 |
| 22 | +- **Decided by:** Human (KSK) after AI-generated comparison of 4 methods |
| 23 | + |
| 24 | +## DL-003: OptumGX FELA for capacity, not sand displacement capacity |
| 25 | +- **Date:** 2026-04-10 |
| 26 | +- **Decision:** Use OptumGX limit analysis for undrained clay capacity (NcV, NcH, NcM). Do NOT use it for drained sand horizontal capacity. |
| 27 | +- **Alternatives:** Use FELA for both clay and sand |
| 28 | +- **Why:** FELA computes theoretical plastic collapse. For Tresca clay this matches published values to 0.8-7.8%. For Mohr-Coulomb sand, FELA gives 1228 MN vs Achmus reference 45 MN — plastic collapse ≠ displacement-based capacity. |
| 29 | +- **Evidence:** Benchmarks #14-15 (verified), #18 (out of calibration at +2628%) |
| 30 | +- **Decided by:** Human (KSK) based on AI-generated comparison |
| 31 | + |
| 32 | +## DL-004: Power law for scour-frequency sensitivity |
| 33 | +- **Date:** 2026-04-10 |
| 34 | +- **Decision:** Use centrifuge-calibrated power law `df/f0 = 0.059 * (S/D)^1.5` for scour sensitivity |
| 35 | +- **Alternatives:** Zaaijer (2006) analytical SSI, Prendergast (2015) lab model, Cheng (2024) FE |
| 36 | +- **Why:** Calibrated to 22 centrifuge cases (mean error 1.19%). Prendergast range (5-10%) validates Op3 prediction (5.9%). Zaaijer's 0.8% is for piles, not suction buckets. |
| 37 | +- **Evidence:** Benchmarks #10, #11, #26; Ch.3 Table 3.4 |
| 38 | +- **Decided by:** Human (KSK) — empirical fit to own centrifuge data |
| 39 | + |
| 40 | +## DL-005: DJ Kim analytical capacity (0.60 mobilisation factor) |
| 41 | +- **Date:** 2026-04-10 |
| 42 | +- **Decision:** Tripod yield moment My = 0.60 × Vu × lever_arm |
| 43 | +- **Alternatives:** Full nonlinear BNWF pushover, elastic stiffness × theta_yield |
| 44 | +- **Why:** Elastic approach overpredicts by 40x (parallel-axis term dominates). Nonlinear BNWF requires full SSOT structural data (not available for DJ Kim geometry). Analytical capacity with 60% mobilisation gives -0.7% error. |
| 45 | +- **Evidence:** Benchmark #22 (My=92.4 vs ref 93.0 MNm) |
| 46 | +- **Source of 0.60:** Typical yield mobilisation for suction buckets in sand at 0.6 deg rotation. Consistent with Barari (2021) back-analysis showing initial nonlinearity at ~60% of ultimate capacity. |
| 47 | +- **Decided by:** AI proposed, human accepted based on physical reasoning |
| 48 | + |
| 49 | +## DL-006: Jeong cyclic accumulation via power law, not FE cyclic |
| 50 | +- **Date:** 2026-04-10 |
| 51 | +- **Decision:** Fit power law `theta = 0.033 * N^0.085` to Jeong (2021) data, do not simulate cycles in OpenSeesPy |
| 52 | +- **Alternatives:** Run 100 cycles in OpenSeesPy with PySimple1 hysteresis |
| 53 | +- **Why:** PySimple1 cyclic behavior is not calibrated to suction bucket test data. The power law fit gives +4.2% error at N=100. Running OpenSeesPy cycles would require uncertain calibration parameters and risk producing a number with false precision. |
| 54 | +- **Evidence:** Benchmark #28 (N=100: +4.2%, N=1M: +3.6%) |
| 55 | +- **Key insight:** Tripod b=0.085 vs monopile b=0.31 (LeBlanc 2010) — tripods accumulate rotation 4x slower |
| 56 | +- **Decided by:** AI proposed, human accepted |
| 57 | + |
| 58 | +## DL-007: PyPI package name `op3-framework` |
| 59 | +- **Date:** 2026-04-10 |
| 60 | +- **Decision:** Publish as `op3-framework` not `op3` on PyPI |
| 61 | +- **Alternatives:** `op3`, `op3-wind`, `optumgx-openseespy-openfast` |
| 62 | +- **Why:** `op3` is a 3-character name likely to conflict. `op3-framework` is descriptive and available. |
| 63 | +- **Decided by:** AI proposed, human accepted |
| 64 | + |
| 65 | +## DL-008: Apache-2.0 license |
| 66 | +- **Date:** 2026-04-10 |
| 67 | +- **Decision:** Apache-2.0 (not MIT) |
| 68 | +- **Alternatives:** MIT, GPL-3.0, BSD-3-Clause |
| 69 | +- **Why:** Apache-2.0 provides patent protection and is the same license as OpenFAST. MIT was in the LICENSE file by mistake; pyproject.toml and CITATION.cff always said Apache-2.0. |
| 70 | +- **Decided by:** Human (KSK) — MIT was a template artifact |
0 commit comments