From 66da3b4ab0d982d5ca9a93603790d07d746d1e4b Mon Sep 17 00:00:00 2001 From: qinjie <qinjie@163.com> Date: 星期二, 14 十一月 2023 09:38:16 +0800 Subject: [PATCH] 优化底层代码 --- Hydro.Inp/NetWork.cs | 145 ++++++++++++++++++++++++++++++++++------------- 1 files changed, 104 insertions(+), 41 deletions(-) diff --git a/Hydro.Inp/NetWork.cs b/Hydro.Inp/NetWork.cs index b4156f0..17dddf9 100644 --- a/Hydro.Inp/NetWork.cs +++ b/Hydro.Inp/NetWork.cs @@ -20,72 +20,138 @@ public NetWork() { } - public string Title { get; set; } - private List<JunctionModel> Junctions { get; set; } = new List<JunctionModel>(); + public List<JunctionModel> Junctions + { + get + { + var js = Nodes.Where(d => d is JunctionModel); + return js?.Select(d => d as JunctionModel).ToList(); + } - private List<TankModel> Tanks { get; set; } = new List<TankModel>(); + } + public List<TankModel> Tanks + { + get + { + var js = Nodes.Where(d => d is TankModel); + return js?.Select(d => d as TankModel).ToList(); + } + } - private List<PipeModel> Pipes { get; set; } = new List<PipeModel>(); + public List<PipeModel> Pipes + { + get + { + var js = Links.Where(d => d is PipeModel); + return js?.Select(d => d as PipeModel).ToList(); + } + } - private List<PumpModel> Pumps { get; set; } = new List<PumpModel>(); + public List<PumpModel> Pumps + { + get + { + var js = Links.Where(d => d is PumpModel); + return js?.Select(d => d as PumpModel).ToList(); + } + } - private List<ValveModel> Valves { get; set; } = new List<ValveModel>(); + public List<ValveModel> Valves + { + get + { + var js = Links.Where(d => d is ValveModel); + return js?.Select(d => d as ValveModel).ToList(); + } + } - private List<ReservoisModel> Reservos { get; set; } = new List<ReservoisModel>(); + public List<ReservoisModel> Reservos + { + get + { + var js = Nodes.Where(d => d is ReservoisModel); + return js?.Select(d => d as ReservoisModel).ToList(); + } + } - private List<MeterModel> Meters { get; set; } = new List<MeterModel>(); + public List<MeterModel> Meters + { + get + { + var js = Nodes.Where(d => d is MeterModel); + return js?.Select(d => d as MeterModel).ToList(); + } + } - private List<NozzleModel> Nozzles { get; set; } = new List<NozzleModel>(); + public List<NozzleModel> Nozzles + { + get + { + var js = Nodes.Where(d => d is NozzleModel); + return js?.Select(d => d as NozzleModel).ToList(); + } + } public void AddJunction(JunctionModel junction) { - Junctions.Add(junction); + CheckNodesExist(junction); Nodes.Add(junction); } public void AddTank(TankModel tank) { - Tanks.Add(tank); + CheckNodesExist(tank); Nodes.Add(tank); } public void AddPipe(PipeModel pipe) { - Pipes.Add(pipe); + CheckLinksExist(pipe); Links.Add(pipe); } public void AddPump(PumpModel pump) { - Pumps.Add(pump); + CheckLinksExist(pump); Links.Add(pump); } public void AddValve(ValveModel valve) { - Valves.Add(valve); + CheckLinksExist(valve); Links.Add(valve); } public void AddReservos(ReservoisModel reservois) { - Reservos.Add(reservois); + CheckNodesExist(reservois); Nodes.Add(reservois); } public void AddMeter(MeterModel meter) { - Meters.Add(meter); + CheckNodesExist(meter); Nodes.Add(meter); - Junctions.Add(meter.ToJunction()); } public void AddNozzle(NozzleModel nozzle) { - Nozzles.Add(nozzle); + CheckNodesExist(nozzle); Nodes.Add(nozzle); - Junctions.Add(nozzle.ToJunction()); + } + + + private void CheckNodesExist(NodeModel node) + { + if (Nodes.Any(d => d.ID == node.ID)) + throw new Exception("宸插瓨鍦ㄩ噸澶嶇殑瀵硅薄"); + } + + private void CheckLinksExist(LinkModel link) + { + if (Links.Any(d => d.ID == link.ID)) + throw new Exception("宸插瓨鍦ㄩ噸澶嶇殑瀵硅薄"); } public List<NodeModel> Nodes { get; set; } = new List<NodeModel>(); @@ -141,7 +207,6 @@ Elev = Elev, Demand = Demand, PatternID = PatternID, - Level = Level }); } else if (parts[5] == "Nozzle") @@ -152,7 +217,6 @@ Elev = Elev, Demand = Demand, PatternID = PatternID, - Level = Level }); } else @@ -163,7 +227,6 @@ Elev = Elev, Demand = Demand, PatternID = PatternID, - Level = Level }); } @@ -178,8 +241,8 @@ r.Head = head; r.PatternID = parts.Length > 2 ? parts[2] : ""; int level; - if (int.TryParse(parts[3], out level)) - r.Level = level; + //if (int.TryParse(parts[3], out level)) + // r.Level = level; AddReservos(r); } break; @@ -212,9 +275,9 @@ VolCurve = "", IsOverFlow = true }; - int level; - if (int.TryParse(parts[9], out level)) - tank.Level = level; + //int level; + //if (int.TryParse(parts[9], out level)) + // tank.Level = level; AddTank(tank); } break; @@ -237,9 +300,9 @@ if (float.TryParse(parts[6], out minorLoss)) p.MinorLoss = minorLoss; p.Status = parts.Length > 7 ? StatusType.CLOSED : StatusType.DEFAULT; - int level; - if (int.TryParse(parts[8], out level)) - p.Level = level; + //int level; + //if (int.TryParse(parts[8], out level)) + // p.Level = level; AddPipe(p); } break; @@ -260,9 +323,9 @@ float minorLoss; if (float.TryParse(parts[6], out minorLoss)) valve.MinorLoss = minorLoss; - int level; - if (int.TryParse(parts[7], out level)) - valve.Level = level; + //int level; + //if (int.TryParse(parts[7], out level)) + // valve.Level = level; AddValve(valve); } break; @@ -495,18 +558,18 @@ Junctions.ForEach(j => { - junctionStringBuilder.AppendLine(j.ToString() + $"{j.Level}\tJunction"); + junctionStringBuilder.AppendLine(j.ToString() + $"0\tJunction"); coorStringBuilder.AppendLine(j.ToCoorString()); }); Meters.ForEach(m => { - junctionStringBuilder.AppendLine(m.ToString() + $"{m.Level}\tMeter"); + junctionStringBuilder.AppendLine(m.ToString() + $"0\tJunction"); coorStringBuilder.AppendLine(m.ToCoorString()); }); Nozzles.ForEach(no => { - junctionStringBuilder.AppendLine(no.ToString() + $"{no.Level}\tNozzle\t{no.FlowCoefficient}"); + junctionStringBuilder.AppendLine(no.ToString() + $"0\tNozzle\t{no.FlowCoefficient}"); emitterStringBuilder.Append(no.ToEmitterString()); coorStringBuilder.AppendLine(no.ToCoorString()); }); @@ -519,7 +582,7 @@ Reservos.ForEach(o => { - reservoirStringBuilder.AppendLine(o.ToString() + $"{o.Level}\t{o.Elev}"); + reservoirStringBuilder.AppendLine(o.ToString() + $"0\t{o.Elev}"); coorStringBuilder.AppendLine(o.ToCoorString()); }); string reserverString = reservoirStringBuilder.ToString(); @@ -530,7 +593,7 @@ Tanks.ForEach(o => { - tankStringBuilder.AppendLine(o.ToString() + $"{o.Level}"); + tankStringBuilder.AppendLine(o.ToString());// + $"{o.Level}"); coorStringBuilder.AppendLine(o.ToCoorString()); }); string tankString = tankStringBuilder.ToString(); @@ -541,7 +604,7 @@ Pipes.ForEach(p => { - pipeStringBuilder.AppendLine(p.ToString() + $"{p.Level}"); + pipeStringBuilder.AppendLine(p.ToString());// + $"{p.Level}"); statusStringBuilder.Append(p.ToStatusString()); }); @@ -553,7 +616,7 @@ Valves.ForEach(o => { - valveStringBuilder.AppendLine(o.ToString() + $"{o.Level}"); + valveStringBuilder.AppendLine(o.ToString());// + $"{o.Level}"); statusStringBuilder.Append(o.ToStatusString()); }); string valveString = valveStringBuilder.ToString(); @@ -564,7 +627,7 @@ Pumps.ForEach(o => { - pumpStringBuilder.AppendLine(o.ToString() + $"{o.Level}"); + pumpStringBuilder.AppendLine(o.ToString());// + $"{o.Level}"); statusStringBuilder.Append(o.ToStatusString()); }); string pumpString = pumpStringBuilder.ToString(); -- Gitblit v1.9.3