12 pages covering architecture, findings, and metrics from the rotatingMachine + machineGroupControl hardening work: - Overview: node inventory, what works/doesn't, current scale - Architecture: 3D pump curves, group optimization algorithm - Findings: BEP-Gravitation proof (0.1% of optimum), NCog behavior, curve non-convexity, pump switching stability - Metrics: test counts, power comparison table, performance numbers - Knowledge graph: structured YAML with all data points and provenance - Session log: 2026-04-07 production hardening - Tools: query.py, search.sh, lint.sh Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1.9 KiB
1.9 KiB
title, created, updated, status, tags, sources
| title | created | updated | status | tags | sources | ||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 3D Pump Curve Architecture | 2026-04-07 | 2026-04-07 | proven |
|
|
3D Pump Curve Prediction
Data Structure
A family of 2D curves indexed by pressure (f-dimension):
- X-axis: control position (0-100%)
- Y-axis: flow (nq) or power (np) in canonical units
- F-dimension: pressure (Pa) — the 3rd dimension
Raw curves are in curve units (m3/h, kW, mbar). _normalizeMachineCurve() converts to canonical (m3/s, W, Pa).
Interpolation
Monotonic cubic spline (Fritsch-Carlson) in both dimensions:
- X-Y splines: at each discrete pressure level
- F-splines: across pressure levels for intermediate pressure interpolation
Prediction Flow
predict.y(x):
1. Clamp x to [currentFxyXMin, currentFxyXMax]
2. Normalize x to [normMin, normMax]
3. Evaluate spline at normalized x for current fDimension
4. Return y in canonical units (m3/s or W)
Unit Conversion Chain
Raw curve (m3/h, kW, mbar)
→ _normalizeMachineCurve → canonical (m3/s, W, Pa)
→ predict class → canonical output
→ MeasurementContainer.getCurrentValue(outputUnit) → output units
No double-conversion. Clean separation: specificClass handles units, predict handles normalization/interpolation.
Three Predict Instances per Machine
predictFlow: control % → flow (nq curve)predictPower: control % → power (np curve)predictCtrl: flow → control % (reversed nq curve)
Boundary Behavior
- Below/above curve X range: flat extrapolation (clamped)
- Below/above f-dimension range: clamped to min/max pressure level
Performance
y(x): O(log n), effectively O(1) for 5-10 data pointsbuildAllFxyCurves: sub-10ms for typical curves- Full caching of normalized curves, splines, and calculated curves