寻找连通网络中的水流

Finding the flow of water in a connected network

我有一套供用水户使用的水表,绘制为 geojson 并用 ol3 可视化。对于每个消费者房屋,我都有他们在给定年份的用水量,并且水管系统也以线串的形式给出,每个管段的直径都有元数据。

我需要的最少信息是什么 visualize/calculate 当管道有内部 loops/circles.[=10= 时,一年中通过每个管道的总水量]

是否有一个库可以轻松地在 javascript 中进行计算。

天真的方法,从每个房子开始,移动到第一个管道连接点,并将房屋使用的材料测量值添加为连接点外的水,并继续直到到达水厂。如果管道系统中没有环路,这将起作用。

您可以使用 Ford-Fulkerson 算法找到网络中的最大流量。要使用此算法,您需要将您的网络表示为一个图形,其中节点代表您的房屋,边缘代表您的管道。

这听起来更像是物理或土木工程问题,而不是编程问题。

但据我所知,您需要源和汇的时间序列数据。

考虑这个简单的网络:

比如说,A 是来源,B 和 D 是 sinks/outlets。 如果给出 B 流出的流量,|CB| 中的流量将取决于流出 D.

例如如果 B 和 D always 同时打开,则通过 |CB| 的总交易量可能接近于 0。相反,如果 B 和 D 从不 同时打开,则该数字可能等于流经 |AB| 的体积。

如果您可以获得时间序列数据,那么您有通过 D 和 B 的流量的并发值,我认为会有一种标准方法来确定通过 |CB| 的流量。

维基百科的 Pipe Network Analysis article mentions one such method: The Hardy Cross method,其中:

"假设进出系统的流量已知,并且管道长度、直径、粗糙度和其他关键特性也已知或可以假设" .

如果时间序列数据不是一个选项,我会假装它总是平均的(考虑到大型网络,这可能不是那么糟糕,就像你的图像)然后做同样的事情。

您可以先通过整合对"dead-ends"的需求来简化网络。接下来,您需要在该网络的 3 个馈送点处获取压力数据,我将其视为 90(毫米?)的顶部馈送、63 处的中心馈送和接近 50 的底部馈送。这 3 个集群由向下 63 毫米 运行,具有综合需求,进料处的压力读数足以给出穿过内部簇的流量。