| | |
| | | /// <summary> |
| | | /// 局部水头损失 |
| | | /// </summary> |
| | | public double MinorHeadLoss |
| | | { |
| | | get |
| | | { |
| | | return StartHead - EndHead; |
| | | } |
| | | } |
| | | public double MinorHeadLoss { get; set; } = 0; |
| | | |
| | | |
| | | public double Distance { get; set; } |
| | | } |
| | |
| | | { |
| | | Id = node.Id, |
| | | StartHead = dictNodes[node.Id].Head, |
| | | Head = dictNodes[node.Id].Head, |
| | | EndHead = dictNodes[node.Id].Head, |
| | | Elev = elev, |
| | | Distance = length |
| | |
| | | { |
| | | |
| | | chartNodes[i].EndHead = chartNodes[i].Head - minorloss1; |
| | | |
| | | chartNodes[i].MinorHeadLoss += minorloss1; |
| | | chartNodes[i + 1].StartHead = chartNodes[i].EndHead - minorloss2; |
| | | chartNodes[i + 1].MinorHeadLoss += minorloss2; |
| | | |
| | | |
| | | |
| | | } |
| | | else |
| | | { |
| | | chartNodes[i].EndHead = chartNodes[i].Head - minorloss1; |
| | | chartNodes[i].MinorHeadLoss += minorloss1; |
| | | } |
| | | |
| | | } |
| | |
| | | var dictLinks = calcuResult.LinkList.ToDictionary(p => p.Id); |
| | | var dictNodes = calcuResult.NodeList.ToDictionary(p => p.Id); |
| | | var visitedNodes = new HashSet<Node>(); |
| | | visitedNodes.Add(startJunc); |
| | | var nextLinks = startJunc.GetNextLinks(calcuResult.LinkList); |
| | | if (nextLinks==null || nextLinks.Count <= 0) return nextLinks; |
| | | |
| | |
| | | /// <param name="direction">遍历方向,0表示双向,1表示正向,-1表示反向</param> |
| | | /// <param name="isOnlyMax">是否只取最大流量的分支</param> |
| | | /// <returns></returns> |
| | | public static List<Link> TraversePipeNetworkALL(this Network network, Link startLink, HashSet<Node> visitedNodes = null, int direction = 0, bool isOnlyMax = false,CalcuResult calcuResult=null) |
| | | public static List<Link> TraversePipeNetworkALL(this Network network, Link startLink, HashSet<Node> visitedNodes, int direction = 0, bool isOnlyMax = false,CalcuResult calcuResult=null) |
| | | { |
| | | var dictLinks = calcuResult.LinkList.ToDictionary(p => p.Id); |
| | | var dictNodes = calcuResult.NodeList.ToDictionary(p => p.Id); |
| | |
| | | Queue<Link> queue = new Queue<Link>(); |
| | | |
| | | queue.Enqueue(startLink); |
| | | if (visitedNodes == null) |
| | | visitedNodes = new HashSet<Node>(); |
| | | |
| | | |
| | | while (queue.Count > 0) |
| | | { |