qinjie
2023-11-14 66da3b4ab0d982d5ca9a93603790d07d746d1e4b
优化底层代码
已修改8个文件
205 ■■■■■ 文件已修改
Hydro.Core/Base/BaseModel.cs 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.Core/Base/NodeModel.cs 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.Core/Link/PumpModel.cs 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.Core/Node/JunctionModel.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.Core/Node/MeterModel.cs 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.Core/Node/NozzleModel.cs 12 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.Core/Node/ReservoisModel.cs 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.Inp/NetWork.cs 145 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Hydro.Core/Base/BaseModel.cs
@@ -16,13 +16,11 @@
            this.ID = model.ID;
            this.Name = model.Name;
            this.Status = model.Status;
            this.Level = model.Level;
        }
        public string ID { get; set; }
        public string Name { get; set; }
        public StatusType Status { get; set; } = StatusType.OPEN;
        public int Level { get; set; }
    }
}
Hydro.Core/Base/NodeModel.cs
@@ -14,28 +14,18 @@
        {
            this.X = model.X;
            this.Y = model.Y;
            this.Demand = model.Demand;
            this.Elev = model.Elev;
            this.PatternID = model.PatternID;
        }
        public float X { get; set; }
        public float Y { get; set; }
        /// <summary>
        /// 需水量
        /// </summary>
        public float Demand { get; set; }
        /// <summary>
        /// 标高
        /// </summary>
        public float Elev { get; set; }
        /// <summary>
        /// 用水模式编号
        /// </summary>
        public string PatternID { get; set; }
        public string ToCoorString()
        {
Hydro.Core/Link/PumpModel.cs
@@ -39,7 +39,7 @@
        /// <summary>
        /// 扬程曲线
        /// </summary>
        public string HeadCurve { get; set; } = "PumpDefault";
        public string FlowCurveID { get; set; } = "PumpDefault";
        /// <summary>
        /// 参数
@@ -54,7 +54,7 @@
        public override string ToString()
        {
            string para = Parameters == null ? null : string.Join("\t", Parameters);
            return $"{ID}\t{Node1}\t{Node2}\tHead\t{HeadCurve}\t{para}\t;\t";
            return $"{ID}\t{Node1}\t{Node2}\tHead\t{FlowCurveID}\t{para}\t;\t";
        }
        /// <summary>
Hydro.Core/Node/JunctionModel.cs
@@ -8,6 +8,14 @@
{
    public class JunctionModel : NodeModel
    {
        /// <summary>
        /// 需水量
        /// </summary>
        public float Demand { get; set; }
        /// <summary>
        /// 用水模式编号
        /// </summary>
        public string PatternID { get; set; }
        public override string ToString()
        {
            var pTemp = PatternID;
@@ -19,11 +27,8 @@
        {
            return new MeterModel()
            {
                PatternID = base.PatternID,
                Demand = base.Demand,
                Elev = base.Elev,
                ID = base.ID,
                Level = base.Level,
                Name = base.Name,
                Status = base.Status,
                X = base.X,
@@ -39,11 +44,8 @@
                X = base.X,
                Status = base.Status,
                Name = base.Name,
                Level = base.Level,
                ID = base.ID,
                Elev = base.Elev,
                Demand = base.Demand,
                PatternID = base.PatternID,
            };
        }
    }
Hydro.Core/Node/MeterModel.cs
@@ -9,6 +9,14 @@
{
    public class MeterModel : NodeModel
    {
        /// <summary>
        /// 需水量
        /// </summary>
        public float Demand { get; set; }
        /// <summary>
        /// 用水模式编号
        /// </summary>
        public string PatternID { get; set; }
        public override string ToString()
        {
            if (string.IsNullOrEmpty(PatternID)) PatternID = "";
@@ -20,11 +28,8 @@
            return new JunctionModel()
            {
                Y = base.Y,
                PatternID = base.PatternID,
                Demand = base.Demand,
                Elev = base.Elev,
                ID = base.ID,
                Level = base.Level,
                Name = base.Name,
                Status = base.Status,
                X = base.X,
Hydro.Core/Node/NozzleModel.cs
@@ -13,6 +13,15 @@
        /// </summary>
        public float FlowCoefficient { get; set; }
        /// <summary>
        /// 需水量
        /// </summary>
        public float Demand { get; set; }
        /// <summary>
        /// 用水模式编号
        /// </summary>
        public string PatternID { get; set; }
        public override string ToString()
        {
            if (string.IsNullOrEmpty(PatternID)) PatternID = "";
@@ -31,11 +40,8 @@
            return new JunctionModel()
            {
                Y = base.Y,
                PatternID = base.PatternID,
                Demand = base.Demand,
                Elev = base.Elev,
                ID = base.ID,
                Level = base.Level,
                Name = base.Name,
                Status = base.Status,
                X = base.X,
Hydro.Core/Node/ReservoisModel.cs
@@ -13,6 +13,11 @@
        /// </summary>
        public float Head { get; set; }
        /// <summary>
        /// 用水模式编号
        /// </summary>
        public string PatternID { get; set; }
        public override string ToString()
        {
            return $"{ID}\t{Head}\t{PatternID}\t;\t";
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();