From 59a54652c0ca8d064ead157802d21e06b0ea34e6 Mon Sep 17 00:00:00 2001 From: lixiaojun <1287241240@qq.com> Date: 星期二, 07 一月 2025 17:08:54 +0800 Subject: [PATCH] 曲线对接修改 --- Hydro/Yw.EPAnet.Calcu.Core/03-calcu/NetworkPathAnalyseExtensions.cs | 34 ++++++++++++++++------------------ 1 files changed, 16 insertions(+), 18 deletions(-) diff --git a/Hydro/Yw.EPAnet.Calcu.Core/03-calcu/NetworkPathAnalyseExtensions.cs b/Hydro/Yw.EPAnet.Calcu.Core/03-calcu/NetworkPathAnalyseExtensions.cs index e41a6c9..65f88f5 100644 --- a/Hydro/Yw.EPAnet.Calcu.Core/03-calcu/NetworkPathAnalyseExtensions.cs +++ b/Hydro/Yw.EPAnet.Calcu.Core/03-calcu/NetworkPathAnalyseExtensions.cs @@ -35,13 +35,8 @@ /// <summary> /// 灞�閮ㄦ按澶存崯澶� /// </summary> - public double MinorHeadLoss - { - get - { - return StartHead - EndHead; - } - } + public double MinorHeadLoss { get; set; } = 0; + public double Distance { get; set; } } @@ -69,6 +64,7 @@ { Id = node.Id, StartHead = dictNodes[node.Id].Head, + Head = dictNodes[node.Id].Head, EndHead = dictNodes[node.Id].Head, Elev = elev, Distance = length @@ -85,7 +81,7 @@ length += p.Length; } - + nodeEnd.Distance = length; chartNodes.Add(nodeEnd); for (int i=0;i<links.Count;i++) @@ -100,22 +96,24 @@ //鏍规嵁p.diameter鍜宲.flow璁$畻娴侀�� double velocity = dictLinks[ p.Id].Flow/ (Math.PI * Math.Pow(p.Diameter / 2, 2)); //鏍规嵁娴侀�熻绠楀眬閮ㄦ按澶存崯澶� - double minorloss1 = p.StartMinorloss* Math.Pow(velocity, 2) / 2 / 9.81; - double minorloss2 = p.EndMinorloss * Math.Pow(velocity, 2) / 2 / 9.81; + double minorloss1 = dictLinks[p.Id].StartMinorLoss; + double minorloss2 = dictLinks[p.Id].EndMinorLoss; if (i < links.Count - 1) { chartNodes[i].EndHead = chartNodes[i].Head - minorloss1; + chartNodes[i].MinorHeadLoss += minorloss1; + chartNodes[i + 1].StartHead = chartNodes[i+1].Head + minorloss2; + chartNodes[i + 1].MinorHeadLoss += minorloss2; - chartNodes[i + 1].StartHead = chartNodes[i].EndHead - minorloss2; - } else { chartNodes[i].EndHead = chartNodes[i].Head - minorloss1; + chartNodes[i].MinorHeadLoss += minorloss1; } } @@ -168,11 +166,12 @@ 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.Count <= 0) return nextLinks; + if (nextLinks==null || nextLinks.Count <= 0) return nextLinks; - var maxlink = nextLinks.OrderByDescending(o => Math.Abs(dictLinks[o.Id].Flow)).ToList()[0]; - return network.TraversePipeNetworkALL(maxlink, visitedNodes, 1, true); + var maxlink = nextLinks.OrderByDescending(o => Math.Abs(dictLinks[o.Id].Flow)).ToList()[0]; + return network.TraversePipeNetworkALL(maxlink, visitedNodes, 1, true, calcuResult); } /// <summary> @@ -198,7 +197,7 @@ /// <param name="direction">閬嶅巻鏂瑰悜,0琛ㄧず鍙屽悜,1琛ㄧず姝e悜,-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); @@ -207,8 +206,7 @@ Queue<Link> queue = new Queue<Link>(); queue.Enqueue(startLink); - if (visitedNodes == null) - visitedNodes = new HashSet<Node>(); + while (queue.Count > 0) { -- Gitblit v1.9.3