Wellbore Genius
Help

Fluid–solid coupling

shipped
Fully coupled
Benchmarked
id: fluid-solid-coupling

Fully-coupled Newton-Raphson is the DEFAULT live path; explicit split kept as regression reference.

Today

Fully-coupled Newton-Raphson via `coupledNewtonStep` is the DEFAULT path for every live-kernel surface (DFIT registry's `kgd-width`/`pkn-length`/`carter-falloff` entries, all proppant-validation runners, KGD/PKN moving-tip wrappers); the legacy sequentially-explicit forward-Euler operator split remains reachable through the analytical-self runner registry entries kept as regression references — no caller path defaults to the explicit split anymore (Phase 4 promotion @ Phase 7 inc 16). Window-sweep harness `runDfitWindowSweep` (`src/lib/planar3d/dfitWindowSweep.ts`) drives the Newton path over arbitrary `[tStart, tEnd]` grids so future phases can chart rms-vs-window without retouching kernel defaults; A/B harness `runDfitAbCompare` (`dfitWindowSweep.ts`) gates `meshAdapt` / `tipBC` / Carter-injection-sizing toggles before promotion.

Roadmap

All self-contained Newton-coupling work landed: Carter validation grid broadened `[1, 2] s` → `[1, 100] s` @ Phase 7 inc 21 with auto-sized per-step injection feeding the kernel seed-floor. Opt-in `meshAdapt: "tip-refined"` and `tipBC: "kic-clamped"` knobs on `coupledNewtonStep` were sweep-audited @ Phase 7 inc 22b via `runDfitAbCompare` across all 3 registry entries on their tightened windows: `tip-refined` is a byte-identical no-op on `kgd-width` (rms 7.0e-2) and `pkn-length` (rms 1.33e-1) — strip cell count doubles 41 → 81 but the converged residual does not move — and is mildly worse on `carter-falloff` (6.9e-8 → 2.5e-7); `kic-clamped` is actively harmful on every entry (KGD 7.0e-2 → 1.07e-1 eats 80 % of headroom, PKN 1.33e-1 → 3.37e-1 overruns the 0.15 ceiling). Verdict: neither knob clears the ≥0.005 log-units headroom rule for ANY entry — keep both flags off-by-default; re-run the sweep only if a future kernel change inverts the residual signature.

Shipping history
  1. Phase 4
    shipped

    defaults to the explicit split anymore (Phase 4 promotion @ Phase 7 inc 16). Window-sweep harness `runDfitWindowSweep` (`src/lib/planar3d/dfitWindowSweep.ts`) drives the Newton path over arbitrary `[tStart, tEnd]` grids so future phases ca…

  2. Phase 7 inc 16
    shipped

    icit split anymore (Phase 4 promotion @ Phase 7 inc 16). Window-sweep harness `runDfitWindowSweep` (`src/lib/planar3d/dfitWindowSweep.ts`) drives the Newton path over arbitrary `[tStart, tEnd]` grids so future phases can chart rms-vs-windo…

  3. Phase 7 inc 21
    planned

    d broadened `[1, 2] s` → `[1, 100] s` @ Phase 7 inc 21 with auto-sized per-step injection feeding the kernel seed-floor. Opt-in `meshAdapt: "tip-refined"` and `tipBC: "kic-clamped"` knobs on `coupledNewtonStep` were sweep-audited @ Phase 7…

  4. Phase 7 inc 22
    planned

    coupledNewtonStep` were sweep-audited @ Phase 7 inc 22b via `runDfitAbCompare` across all 3 registry entries on their tightened windows: `tip-refined` is a byte-identical no-op on `kgd-width` (rms 7.0e-2) and `pkn-length` (rms 1.33e-1) — s…

Validation
RMSE
0.13 log-units (PKN length, [0.5, 1] s window)
n = 3 · Window-sweep tightened from 0.20 → 0.15 @ Phase 7 inc 21
Valid when
Newton convergence≤ 25 outer iters, residual ≤ 1e-6
MeshCell-strip Planar-3D; tip-refined opt-in
Failure modes
  • Aggressive `kic-clamped` tipBC overruns the 0.15 ceiling (drift-guarded)
  • Carter window > 100 s drifts without per-step injection sizing
Basins:
Synthetic + DFIT registry
Last reviewed 2026-06-01