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