using System.Text;
|
|
namespace Yw.EPAnet
|
{
|
///// <summary>
|
///// 管网计算拓展
|
///// </summary>
|
//public static class NetworkCalcuMinorExtensions
|
//{
|
// /// <summary>
|
// /// 计算
|
// /// </summary>
|
// 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<ILink> branchlinks = new List<ILink>();
|
// 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<ILink> branchlinks = new List<ILink>();
|
|
// 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;
|
// }
|
//}
|
|
}
|