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;
// }
//}
}