Files
pumpingStation/wiki/diagrams/basin-model.drawio.svg
znetsixe 0ff55f5e9c Add wiki/ folder with functional description + draw.io diagrams
Moves documentation into the code repo so code, docs, and diagrams
version-lock and review together. Previous location was
pumpingStation.wiki.git; that will shrink to a pointer.

Contents:
- wiki/README.md — doc index
- wiki/functional-description.md — operator-facing reference derived
  from src/specificClass.js: basin model, net-flow selection,
  level-based control zones, safety interlocks, registration topology
- wiki/diagrams/ — editable draw.io sources paired with SVG exports
  (basin-model, control-zones, safety-rules) + README with the
  open/edit/export/commit workflow

The .drawio files are rough starters; iterate in draw.io and re-export.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-22 12:19:26 +02:00

63 lines
3.8 KiB
XML

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 850 660" font-family="Arial, sans-serif" font-size="13">
<title>Basin model — physical layout + control thresholds</title>
<defs>
<marker id="arrow" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="8" markerHeight="8" orient="auto-start-reverse">
<path d="M 0 0 L 10 5 L 0 10 z" fill="#1F4E79" />
</marker>
</defs>
<text x="425" y="30" text-anchor="middle" font-weight="bold" font-size="16">Basin model — physical layout + control thresholds</text>
<!-- Tank body -->
<rect x="300" y="80" width="260" height="520" fill="#E6F2FF" stroke="#000" stroke-width="2" />
<!-- Dead volume (darker band at the bottom) -->
<rect x="302" y="550" width="256" height="48" fill="#9FC5E8" />
<!-- Zone labels inside the tank -->
<text x="430" y="106" text-anchor="middle" font-style="italic" font-size="12">freeboard</text>
<text x="430" y="268" text-anchor="middle" font-style="italic" font-size="12">SCALING RANGE</text>
<text x="430" y="284" text-anchor="middle" font-style="italic" font-size="11">(levelbased: demand ramps 0 → 100 %)</text>
<text x="430" y="378" text-anchor="middle" font-style="italic" font-size="12">DEAD ZONE</text>
<text x="430" y="394" text-anchor="middle" font-style="italic" font-size="11">(hysteresis — keep last cmd)</text>
<text x="430" y="502" text-anchor="middle" font-style="italic" font-size="12">BUFFER</text>
<text x="430" y="576" text-anchor="middle" font-style="italic" font-size="11" fill="#333">dead volume</text>
<!-- heightBasin (top, solid) -->
<line x1="250" y1="80" x2="560" y2="80" stroke="#000" stroke-width="2" />
<text x="240" y="84" text-anchor="end" font-size="11">heightBasin</text>
<!-- heightOverflow (dashed red) -->
<line x1="250" y1="145" x2="620" y2="145" stroke="#B22222" stroke-dasharray="6 3" stroke-width="1.5" />
<text x="240" y="141" text-anchor="end" fill="#B22222" font-size="12">heightOverflow</text>
<text x="630" y="141" text-anchor="start" fill="#B22222" font-size="12">→ spill → measure</text>
<!-- maxFlowLevel (dashed orange) -->
<line x1="250" y1="200" x2="620" y2="200" stroke="#D68910" stroke-dasharray="6 3" stroke-width="1.5" />
<text x="240" y="196" text-anchor="end" fill="#D68910" font-size="12">maxFlowLevel</text>
<!-- startLevel (dashed green) -->
<line x1="250" y1="345" x2="620" y2="345" stroke="#1E8449" stroke-dasharray="6 3" stroke-width="1.5" />
<text x="240" y="341" text-anchor="end" fill="#1E8449" font-size="12">startLevel</text>
<!-- heightInlet (solid blue) with INFLOW pipe -->
<line x1="150" y1="410" x2="296" y2="410" stroke="#1F4E79" stroke-width="3" marker-end="url(#arrow)" />
<text x="140" y="406" text-anchor="end" font-weight="bold" fill="#1F4E79">INFLOW</text>
<text x="570" y="414" text-anchor="start" fill="#1F4E79" font-size="12">heightInlet</text>
<!-- stopLevel (dashed purple) -->
<line x1="250" y1="465" x2="620" y2="465" stroke="#6C3483" stroke-dasharray="6 3" stroke-width="1.5" />
<text x="240" y="461" text-anchor="end" fill="#6C3483" font-size="12">stopLevel</text>
<text x="630" y="461" text-anchor="start" fill="#6C3483" font-size="12">→ unconditional STOP</text>
<!-- heightOutlet (solid red) with OUTFLOW pipe -->
<line x1="564" y1="540" x2="720" y2="540" stroke="#1F4E79" stroke-width="3" marker-end="url(#arrow)" />
<text x="730" y="536" text-anchor="start" font-weight="bold" fill="#1F4E79">OUTFLOW</text>
<text x="240" y="536" text-anchor="end" fill="#B22222" font-size="12">heightOutlet</text>
<text x="730" y="552" text-anchor="start" fill="#B22222" font-size="12">→ dry-run trip</text>
<!-- floor -->
<line x1="250" y1="600" x2="560" y2="600" stroke="#000" stroke-width="2" />
<text x="240" y="604" text-anchor="end" font-size="11">floor (0)</text>
</svg>