WATER PLANNING ATLAS: ORIGINAL SYNTHETIC EXERCISES
All locations, assets, customers, operating conditions and observations are fictional.
Guide pages: /tools/epanet/, /tools/infoworks-ws-pro/, /tools/ewater-source/,
/tools/qgis/, /tools/arcgis/, /tools/python/, /tools/power-bi/, /tools/machine-learning/.

GIS: 8 raw rows, 7 unique IDs. CP04 is an identical duplicate. Unique demand =
5500 L/day. CP05 is on a boundary, CP06 outside, CP07 has no coordinates.
With CP05 explicitly assigned EAST: WEST 2000, EAST 2600, unassigned 900 L/day.
The zone polygons use longitude/latitude (EPSG:4326), not projected metres.

Network: EPANET 2.2 text input, LPS, Hazen-Williams, steady demand-driven run.
Independent hand check: flows P1 10, P2 5, P3 2 L/s. No tanks or patterns.
This file has not been run in the EPANET desktop application by the Atlas author.

Demand: clean file has 1344 hourly UTC records (56 days). Values are interval
average rates in m3/hour, not instantaneous readings. The raw file deletes one
hour on 11 January and duplicates an identical hour on 6 January. Raw length
is still 1344, demonstrating that row count alone does not establish completeness.

Pressure: 24 rows, grain = scenario + node + timestamp. An illustrative 20 m
threshold gives BASE 3 breach rows at 2 nodes, minimum 17 m; OPTION none,
minimum 21 m. This is not a utility service standard or solver result.

Storage: initial 30 ML, capacity 40 ML, minimum supply volume 10 ML,
maximum delivery 3 ML/day. Daily evaporation 5 mm over 2 ha = 0.1 ML.
Reference update order: add inflow/rain, deduct evaporation, deliver available
supply above minimum, then spill. A Source numerical integration can differ.
The file is a generic CSV, not a native Source project.

Scripts use Python 3; forecast exercise additionally needs pandas and scikit-learn.
Run from this folder. No network connection or private data is used by scripts.
