using System.Text; namespace Yw.EPAnet { ///// ///// 管网计算拓展 ///// //public static class NetworkCalcuMinorExtensions //{ // /// // /// 计算 // /// // public static CalcuResult CalcuMinorLoss(this Network network) // { // var minorResult = new CalcuResult(); // //Null验证 // if (network == null) // { // minorResult.Succeed = false; // return minorResult; // } // using (var calcResult = network.Calcu(false)) // { // network.GetAllLinks().ForEach(link => // { // if (calcResult.LinkDict.ContainsKey(link.Id)) // { // var resultLink = calcResult.LinkDict[link.Id]; // link.Flow = resultLink.Flow; // } // }); // } // network.GetAllNodes().ForEach(n => // { // if (n is JunctionWT wt) // { // if (wt.PrevLinks.Count != 1 || wt.NextLinks.Count != 1) return; // var preLink = minorResult.GetLink(wt.PrevLinks[0].Id); // var nextLink = minorResult.GetLink(wt.NextLinks[0].Id); // preLink.EndNodeMinorlossCoff = wt.MinorLoss_WT / 2; // nextLink.StartNodeMinorlossCoff = wt.MinorLoss_WT / 2; // } // else if (n is Junction3T j3t) // { // if (j3t.PrevLinks.Count + j3t.NextLinks.Count != 3 || j3t.PrevLinks.Count==0 || j3t.NextLinks.Count==0) return; // List branchlinks = new List(); // ILink mainlink = null; // if (j3t.PrevLinks.Count==1)//一进,二出 // { // mainlink = j3t.PrevLinks[0]; // branchlinks= j3t.NextLinks; // } // else if(j3t.NextLinks.Count == 1)//一出,N进 // { // mainlink = j3t.NextLinks[0]; // branchlinks = j3t.PrevLinks; // } // if (branchlinks.Count==2) // { // var pipe0 = mainlink as Pipe; // var pipe1 = branchlinks[0] as Pipe; // var pipe2 = branchlinks[1] as Pipe; // string Id1 = pipe1.Diameter == pipe0.Diameter ? pipe1.Id : pipe2.Id; // string Id2 = pipe1.Diameter == pipe0.Diameter ? pipe2.Id : pipe1.Id; // var preLink = minorResult.GetLink(mainlink.Id); // var nextLink1 = minorResult.GetLink(Id1); // var nextLink2 = minorResult.GetLink(Id2); // nextLink1.StartNodeMinorlossCoff = j3t.MinorLoss_StraightThrough; // nextLink2.StartNodeMinorlossCoff = j3t.MinorLoss_BranchThrough; // } // else if (branchlinks.Count==1) // { // var pipe0 = mainlink as Pipe; // var pipe1 = branchlinks[0] as Pipe; // string Id1 = pipe1.Id; // var preLink = minorResult.GetLink(mainlink.Id); // var nextLink1 = minorResult.GetLink(Id1); // nextLink1.StartNodeMinorlossCoff = pipe1.Diameter == pipe0.Diameter? j3t.MinorLoss_StraightThrough: j3t.MinorLoss_BranchThrough; // } // } // else if (n is Junction4T j4t) // { // if (j4t.PrevLinks.Count + j4t.NextLinks.Count != 4 ) return; // List branchlinks = new List(); // if (j4t.PrevLinks.Count == 1)//一进,二出 // { // branchlinks = j4t.NextLinks; // } // else if (j4t.NextLinks.Count == 1)//一出,N进 // { // branchlinks = j4t.PrevLinks; // } // else if (j4t.NextLinks.Count==2) // { // branchlinks = j4t.NextLinks; // } // branchlinks.ForEach(link => // { // var pipe = link as Pipe; // var preLink = minorResult.GetLink(link.Id); // preLink.EndNodeMinorlossCoff = j4t.MinorLoss_Crossing; // }); // } // }); // return minorResult; // } // public static Link GetLink(this CalcuResult result, string linkId) // { // if (!result.LinkDict.ContainsKey(linkId)) // { // result.LinkDict.Add(linkId, new Link() { MinorlossCoff=0}); // } // return result.LinkDict[linkId] as Link; // } //} }