lixiaojun
2024-11-30 cb12c35c7af4350b0f38b6d90a15d8bd9796b8c5
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
@@ -108,14 +104,16 @@
                    {
                        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;
                    }
                    
                }
@@ -168,6 +166,7 @@
            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;
@@ -198,7 +197,7 @@
        /// <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);
@@ -207,8 +206,7 @@
            Queue<Link> queue = new Queue<Link>();
            queue.Enqueue(startLink);
            if (visitedNodes == null)
                visitedNodes = new HashSet<Node>();
            while (queue.Count > 0)
            {