Shuxia Ning
2024-11-25 d4898c5d7e1bbbbba384a0e29f29c066d6f502a7
Hydro/Yw.EPAnet.Calcu.Core/03-calcu/00-core/NetworkCalcuExtensions.cs
@@ -169,7 +169,7 @@
                    var prevLink = prevLinks[0] as Pipe;
                    if (prevLink != null)
                    {
                        prevLink.MinorLoss += elbow.MinorLoss.Value / 2f;
                        prevLink.EndMinorloss = elbow.MinorLoss.Value / 2f;
                    }
                    if (nextLinks.Count != 1)
                    {
@@ -178,7 +178,7 @@
                    var nextLink = nextLinks[0] as Pipe;
                    if (nextLink != null)
                    {
                        nextLink.MinorLoss += elbow.MinorLoss.Value / 2f;
                        nextLink.StartMinorloss += elbow.MinorLoss.Value / 2f;
                    }
                }
                else if (node is Threelink threelink)
@@ -191,7 +191,8 @@
                    }
                    Link mainLink = null;//主管
                    List<Link> branchLinks = null;//支管列表
                    if (prevLinks.Count == 1)//1进2出
                    bool isNext = prevLinks.Count == 1;
                    if (isNext)//1进2出
                    {
                        mainLink = prevLinks[0];
                        branchLinks = nextLinks;
@@ -221,7 +222,10 @@
                                minorLoss = threelink.MinorLoss;
                                if (minorLoss.HasValue)
                                {
                                    branchPipe.MinorLoss += minorLoss.Value;
                                    if (isNext)
                                        branchPipe.StartMinorloss = minorLoss.Value;
                                    else
                                        branchPipe.EndMinorloss = minorLoss.Value;
                                }
                            }
                        }
@@ -233,7 +237,11 @@
                                minorLoss = threelink.MinorLoss;
                                if (minorLoss.HasValue)
                                {
                                    branchPipe.MinorLoss = minorLoss.Value;
                                    if (isNext)
                                        branchPipe.StartMinorloss = minorLoss.Value;
                                    else
                                        branchPipe.EndMinorloss = minorLoss.Value;
                                }
                            }
                        }
@@ -253,13 +261,23 @@
                        continue;
                    }
                    var branchLinks = prevLinks.Count >= nextLinks.Count ? prevLinks : nextLinks;
                    bool isNext = prevLinks.Count < nextLinks.Count;
                    var branchLinks = isNext ? nextLinks:prevLinks  ;
                    foreach (var branchLink in branchLinks)
                    {
                        var pipe = branchLink as Pipe;
                        if (pipe != null)
                        {
                            pipe.MinorLoss += fourlink.MinorLoss.Value;
                            if (isNext)
                            {
                                pipe.StartMinorloss = fourlink.MinorLoss.Value;
                            }
                            else
                            {
                                pipe.EndMinorloss = fourlink.MinorLoss.Value;
                            }
                        }
                    }
                }