Hydro/Yw.EPAnet.Calcu.Core/00-core/CurvePoint.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,79 @@ namespace Yw.EPAnet { /// <summary> /// /// </summary> public class CurvePoint { /// <summary> /// /// </summary> public CurvePoint() { } /// <summary> /// /// </summary> public CurvePoint(int x, int y) : this() { this.X = x; this.Y = y; } /// <summary> /// /// </summary> public CurvePoint(float x, float y) : this() { this.X = x; this.Y = y; } /// <summary> /// /// </summary> public CurvePoint(double x, double y) : this() { this.X = x; this.Y = y; } /// <summary> /// /// </summary> public CurvePoint(decimal x, decimal y) : this() { this.X = (double)x; this.Y = (double)y; } /// <summary> /// /// </summary> public CurvePoint(CurvePoint rhs) : this() { this.X = rhs.X; this.Y = rhs.Y; } /// <summary> /// X /// </summary> public double X { get; set; } /// <summary> /// Y /// </summary> public double Y { get; set; } /// <summary> /// /// </summary> public override string ToString() { return $"{this.X},{this.Y}"; } } } Hydro/Yw.EPAnet.Calcu.Core/00-core/PipeStatus.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,23 @@ namespace Yw.EPAnet { /// <summary> /// 管éç¶æ /// </summary> public class PipeStatus { /// <summary> /// å¼å¯ /// </summary> public const string Open = "Open"; /// <summary> /// å ³é /// </summary> public const string Closed = "Closed"; /// <summary> /// CV æå³ç管éå å«äºéå¶æµåçæ¢åé /// </summary> public const string CV = "CV"; } } Hydro/Yw.EPAnet.Calcu.Core/00-core/Position2d.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,60 @@ namespace Yw.EPAnet { /// <summary> /// ä½ç½® /// </summary> public class Position2d { /// <summary> /// /// </summary> public Position2d() { } /// <summary> /// /// </summary> public Position2d(double x, double y) { this.X = x; this.Y = y; } /// <summary> /// /// </summary> public Position2d(float x, float y) { this.X = x; this.Y = y; } /// <summary> /// /// </summary> public Position2d(Position2d rhs) { this.X = rhs.X; this.Y = rhs.Y; } /// <summary> /// X /// </summary> public double X { get; set; } /// <summary> /// Y /// </summary> public double Y { get; set; } /// <summary> /// /// </summary> public override string ToString() { return $"{this.X},{this.Y}"; } } } Hydro/Yw.EPAnet.Calcu.Core/00-core/PumpStatus.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,18 @@ namespace Yw.EPAnet { /// <summary> /// æ°´æ³µç¶æ /// </summary> public class PumpStatus { /// <summary> /// å¼å¯ /// </summary> public const string Open = "Open"; /// <summary> /// å ³é /// </summary> public const string Closed = "Closed"; } } Hydro/Yw.EPAnet.Calcu.Core/00-core/ValveStatus.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,23 @@ namespace Yw.EPAnet { /// <summary> /// éé¨ç¶æ /// </summary> public class ValveStatus { /// <summary> /// æ /// </summary> public const string None = "None"; /// <summary> /// å¼å¯ /// </summary> public const string Open = "Open"; /// <summary> /// å ³é /// </summary> public const string Closed = "Closed"; } } Hydro/Yw.EPAnet.Calcu.Core/01-network/00-core/Network.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,125 @@ namespace Yw.EPAnet { /// <summary> /// æ°´åç®¡ç½ /// </summary> public partial class Network { /// <summary> /// /// </summary> public Network() { this.Reservoirs = new List<Reservoir>(); this.Tanks = new List<Tank>(); this.Junctions = new List<Junction>(); this.Nozzles = new List<Nozzle>(); this.Hydrants = new List<Hydrant>(); this.Meters = new List<Meter>(); this.Pumps = new List<Pump>(); this.Valves = new List<Valve>(); this.Pipes = new List<Pipe>(); this.Curves = new List<Curve>(); this.Patterns = new List<Pattern>(); this.Rules = new List<Rule>(); } /// <summary> /// /// </summary> public Network(Network rhs) { this.Reservoirs = rhs.Reservoirs; this.Tanks = rhs.Tanks; this.Junctions = rhs.Junctions; this.Nozzles = rhs.Nozzles; this.Hydrants = rhs.Hydrants; this.Meters = rhs.Meters; this.Pumps = rhs.Pumps; this.Valves = rhs.Valves; this.Pipes = rhs.Pipes; this.Curves = rhs.Curves; this.Patterns = rhs.Patterns; this.Rules = rhs.Rules; } #region Node /// <summary> /// æ°´åºå表 /// </summary> public List<Reservoir> Reservoirs { get; set; } /// <summary> /// æ°´æ± å表 /// </summary> public List<Tank> Tanks { get; set; } /// <summary> /// è¿æ¥èç¹å表 /// </summary> public List<Junction> Junctions { get; set; } /// <summary> /// å·å´å表 /// </summary> public List<Nozzle> Nozzles { get; set; } /// <summary> /// æ¶ç«æ å表 /// </summary> public List<Hydrant> Hydrants { get; set; } /// <summary> /// 水表å表 /// </summary> public List<Meter> Meters { get; set; } #endregion #region Linker /// <summary> /// æ°´æ³µå表 /// </summary> public List<Pump> Pumps { get; set; } /// <summary> /// éé¨å表 /// </summary> public List<Valve> Valves { get; set; } /// <summary> /// 管éå表 /// </summary> public List<Pipe> Pipes { get; set; } #endregion #region Operation /// <summary> /// æ²çº¿å表 /// </summary> public List<Curve> Curves { get; set; } /// <summary> /// 模å¼å表 /// </summary> public List<Pattern> Patterns { get; set; } /// <summary> /// è§å /// </summary> public List<Rule> Rules { get; set; } #endregion } } Hydro/Yw.EPAnet.Calcu.Core/01-network/00-core/Network_Method.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,214 @@ namespace Yw.EPAnet { /// <summary> /// æ°´å管ç½ï¼æ¹æ³ï¼ /// </summary> public partial class Network { /// <summary> /// è·åææç»ä»¶ /// </summary> public List<IParter> GetAllParters() { var list = new List<IParter>(); if (this.Reservoirs != null && this.Reservoirs.Count > 0) { list.AddRange(this.Reservoirs); } if (this.Tanks != null && this.Tanks.Count > 0) { list.AddRange(this.Tanks); } if (this.Junctions != null && this.Junctions.Count > 0) { list.AddRange(this.Junctions); } if (this.Nozzles != null && this.Nozzles.Count > 0) { list.AddRange(this.Nozzles); } if (this.Hydrants != null && this.Hydrants.Count > 0) { list.AddRange(this.Hydrants); } if (this.Meters != null && this.Meters.Count > 0) { list.AddRange(this.Meters); } if (this.Pipes != null && this.Pipes.Count > 0) { list.AddRange(this.Pipes); } if (this.Pumps != null && this.Pumps.Count > 0) { list.AddRange(this.Pumps); } if (this.Valves != null && this.Valves.Count > 0) { list.AddRange(this.Valves); } if (this.Curves != null && this.Curves.Count > 0) { list.AddRange(this.Curves); } if (this.Patterns != null && this.Patterns.Count > 0) { list.AddRange(this.Patterns); } if (this.Rules != null && this.Rules.Count > 0) { list.AddRange(this.Rules); } return list; } /// <summary> /// è·åææèç¹ /// </summary> public List<INode> GetAllNodes() { var list = new List<INode>(); if (this.Reservoirs != null && this.Reservoirs.Count > 0) { list.AddRange(this.Reservoirs); } if (this.Tanks != null && this.Tanks.Count > 0) { list.AddRange(this.Tanks); } if (this.Junctions != null && this.Junctions.Count > 0) { list.AddRange(this.Junctions); } if (this.Nozzles != null && this.Nozzles.Count > 0) { list.AddRange(this.Nozzles); } if (this.Hydrants != null && this.Hydrants.Count > 0) { list.AddRange(this.Hydrants); } if (this.Meters != null && this.Meters.Count > 0) { list.AddRange(this.Meters); } return list; } /// <summary> /// è·åææç®¡æ®µ /// </summary> public List<ILink> GetAllLinks() { var list = new List<ILink>(); if (this.Pipes != null && this.Pipes.Count > 0) { list.AddRange(this.Pipes); } if (this.Pumps != null && this.Pumps.Count > 0) { list.AddRange(this.Pumps); } if (this.Valves != null && this.Valves.Count > 0) { list.AddRange(this.Valves); } return list; } /// <summary> /// è·åæææä½ /// </summary> public List<IOperation> GetAllOperations() { var list = new List<IOperation>(); if (this.Curves != null && this.Curves.Count > 0) { list.AddRange(this.Curves); } if (this.Patterns != null && this.Patterns.Count > 0) { list.AddRange(this.Patterns); } if (this.Rules != null && this.Rules.Count > 0) { list.AddRange(this.Rules); } return list; } /// <summary> /// è·åæææ°´æº /// </summary> public List<INode> GetAllWaterSources() { var list = new List<INode>(); if (this.Reservoirs != null && this.Reservoirs.Count > 0) { list.AddRange(this.Reservoirs); } if (this.Tanks != null && this.Tanks.Count > 0) { list.AddRange(this.Tanks); } return list; } /// <summary> /// è·åæææ©æ£å¨ /// </summary> public List<IEmitter> GetAllEmitters() { var list = new List<IEmitter>(); if (this.Nozzles != null && this.Nozzles.Count > 0) { list.AddRange(this.Nozzles); } if (this.Hydrants != null && this.Hydrants.Count > 0) { list.AddRange(this.Hydrants); } return list; } /// <summary> /// è·åææè¿æ¥èç¹ /// </summary> public List<IJunction> GetAllJunctions() { var list = new List<IJunction>(); if (this.Junctions != null && this.Junctions.Count > 0) { list.AddRange(this.Junctions); } if (this.Nozzles != null && this.Nozzles.Count > 0) { list.AddRange(this.Nozzles); } if (this.Hydrants != null && this.Hydrants.Count > 0) { list.AddRange(this.Hydrants); } if (this.Meters != null && this.Meters.Count > 0) { list.AddRange(this.Meters); } return list; } } } Hydro/Yw.EPAnet.Calcu.Core/01-network/00-core/Parter.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,34 @@ namespace Yw.EPAnet { /// <summary> /// ç»ä»¶ /// </summary> public class Parter { /// <summary> /// /// </summary> public Parter() { } /// <summary> /// /// </summary> public Parter(Parter rhs) { this.Id = rhs.Id; this.Name = rhs.Name; } /// <summary> /// id /// </summary> public string Id { get; set; } /// <summary> /// åç§° /// </summary> public string Name { get; set; } } } Hydro/Yw.EPAnet.Calcu.Core/01-network/01-interface/00-core/ILink.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,19 @@ namespace Yw.EPAnet { /// <summary> /// 管段 /// </summary> public interface ILink : IParter { /// <summary> /// å¼å§èç¹ /// </summary> INode StartNode { get; set; } /// <summary> /// ç»æèç¹ /// </summary> INode EndNode { get; set; } } } Hydro/Yw.EPAnet.Calcu.Core/01-network/01-interface/00-core/INode.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,21 @@ namespace Yw.EPAnet { /// <summary> /// èç¹ /// </summary> public interface INode : IParter { /// <summary> /// åå§æ°´è´¨ /// </summary> double Quality { get; set; } /// <summary> /// ä½ç½® /// </summary> Position2d Position { get; set; } } } Hydro/Yw.EPAnet.Calcu.Core/01-network/01-interface/00-core/IOperation.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,10 @@ namespace Yw.EPAnet { /// <summary> /// æä½ /// </summary> public interface IOperation : IParter { } } Hydro/Yw.EPAnet.Calcu.Core/01-network/01-interface/00-core/IParter.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,18 @@ namespace Yw.EPAnet { /// <summary> /// ç»ä»¶æ¥å£ /// </summary> public interface IParter { /// <summary> /// Id /// </summary> string Id { get; set; } /// <summary> /// åç§° /// </summary> string Name { get; set; } } } Hydro/Yw.EPAnet.Calcu.Core/01-network/01-interface/01-node/IEmitter.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,13 @@ namespace Yw.EPAnet { /// <summary> /// æ©æ£å¨æ¥å£ /// </summary> public interface IEmitter : IJunction { /// <summary> /// å·å°ç³»æ°/æµéç³»æ° /// </summary> double Coefficient { get; set; } } } Hydro/Yw.EPAnet.Calcu.Core/01-network/01-interface/01-node/IJunction.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,24 @@ namespace Yw.EPAnet { /// <summary> /// è¿æ¥èç¹ /// </summary> public interface IJunction : INode { /// <summary> /// æ é« /// </summary> double Elev { get; set; } /// <summary> /// éæ°´é /// </summary> double? Demand { get; set; } /// <summary> /// éæ°´æ¨¡å¼ /// </summary> string DemandPattern { get; set; } } } Hydro/Yw.EPAnet.Calcu.Core/01-network/01-interface/01-node/IReservoir.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,19 @@ namespace Yw.EPAnet { /// <summary> /// æ°´åº /// </summary> public interface IReservoir : ISource { /// <summary> /// æ»æ°´å¤´ /// </summary> double Head { get; set; } /// <summary> /// æ¨¡å¼ /// </summary> string HeadPattern { get; set; } } } Hydro/Yw.EPAnet.Calcu.Core/01-network/01-interface/01-node/ISource.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,10 @@ namespace Yw.EPAnet { /// <summary> /// æ°´æºæ¥å£ /// </summary> public interface ISource : INode { } } Hydro/Yw.EPAnet.Calcu.Core/01-network/01-interface/01-node/ITank.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,43 @@ namespace Yw.EPAnet { /// <summary> /// æ°´æ± /// </summary> public interface ITank : ISource { /// <summary> /// æ± åºæ é« /// </summary> double PoolElev { get; set; } /// <summary> /// åå§æ°´ä½ /// </summary> double InitLevel { get; set; } /// <summary> /// æä½æ°´ä½ /// </summary> double MinLevel { get; set; } /// <summary> /// æé«æ°´ä½ /// </summary> double MaxLevel { get; set; } /// <summary> /// ç´å¾ /// </summary> double Diameter { get; set; } /// <summary> /// æå°å®¹ç§¯ /// </summary> double MinVol { get; set; } /// <summary> /// 容积æ²çº¿ /// </summary> string VolCurve { get; set; } } } Hydro/Yw.EPAnet.Calcu.Core/01-network/01-interface/02-link/IPipe.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,29 @@ namespace Yw.EPAnet { /// <summary> /// 管é /// </summary> public interface IPipe : ILink { /// <summary> /// ç´å¾ /// </summary> double Diameter { get; set; } /// <summary> /// é¿åº¦ /// </summary> double Length { get; set; } /// <summary> /// ç²ç³ç³»æ° /// </summary> double Roughness { get; set; } /// <summary> /// å±é»ç³»æ° /// </summary> double MinorLoss { get; set; } } } Hydro/Yw.EPAnet.Calcu.Core/01-network/01-interface/02-link/IPump.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,46 @@ namespace Yw.EPAnet { /// <summary> /// æ°´æ³µ /// </summary> public interface IPump : ILink { /// <summary> /// é¢å®åç /// æå®è½éæ°´æ³µçåç /// </summary> double RatedPower { get; set; } /// <summary> /// æµéæ¬ç¨æ²çº¿ /// </summary> string CurveQH { get; set; } /// <summary> /// è½¬éæ¯ /// </summary> double? SpeedRatio { get; set; } /// <summary> /// è½¬éæ¯æ¨¡å¼ /// æè¿°è½¬éæ¯è®¾ç½®ææ ·éæ¶é´ååçæ¶é´æ¨¡å¼ /// 模å¼ç¼ç /// </summary> string SpeedRatioPattern { get; set; } /// <summary> /// è½èä»·æ ¼ /// </summary> double? Price { get; set; } /// <summary> /// ä»·æ ¼æ¨¡å¼ /// </summary> string PricePattern { get; set; } /// <summary> /// æçæ²çº¿ /// </summary> string CurveQE { get; set; } } } Hydro/Yw.EPAnet.Calcu.Core/01-network/01-interface/02-link/IValve.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,28 @@ namespace Yw.EPAnet { /// <summary> /// éé¨ /// </summary> public interface IValve : ILink { /// <summary> /// ç´å¾ /// </summary> double Diameter { get; set; } /// <summary> /// å±é»ç³»æ° /// </summary> double MinorLoss { get; set; } /// <summary> /// éé¨ç±»å /// </summary> string ValveType { get; set; } /// <summary> /// éé¨è®¾ç½® /// </summary> string ValveSetting { get; set; } } } Hydro/Yw.EPAnet.Calcu.Core/01-network/01-interface/03-operation/ICurve.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,18 @@ namespace Yw.EPAnet { /// <summary> /// æ²çº¿ /// </summary> public interface ICurve : IOperation { /// <summary> /// æ²çº¿ç±»å /// </summary> string CurveType { get; set; } /// <summary> /// æ²çº¿æ°æ® /// </summary> List<CurvePoint> CurveData { get; set; } } } Hydro/Yw.EPAnet.Calcu.Core/01-network/01-interface/03-operation/IPattern.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,18 @@ namespace Yw.EPAnet { /// <summary> /// 模å¼ï¼å®ä¹æ¶é´æ¨¡å¼ï¼ /// </summary> public interface IPattern : IOperation { /// <summary> /// ç±»å« /// </summary> string Category { get; set; } /// <summary> /// ä¹å /// </summary> List<double> Multipliers { get; set; } } } Hydro/Yw.EPAnet.Calcu.Core/01-network/01-interface/03-operation/IRule.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,10 @@ namespace Yw.EPAnet { /// <summary> /// è§å /// </summary> public interface IRule : IOperation { } } Hydro/Yw.EPAnet.Calcu.Core/01-network/02-node/01-reservoir/Reservoir.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,46 @@ namespace Yw.EPAnet { /// <summary> /// æ°´åº /// </summary> public class Reservoir : Parter, IReservoir { /// <summary> /// /// </summary> public Reservoir() { } /// <summary> /// /// </summary> public Reservoir(Reservoir rhs) : base(rhs) { this.Quality = rhs.Quality; this.Position = rhs.Position; this.Head = rhs.Head; this.HeadPattern = rhs.HeadPattern; } /// <summary> /// åå§æ°´è´¨ /// </summary> public double Quality { get; set; } /// <summary> /// ä½ç½® /// </summary> public Position2d Position { get; set; } /// <summary> /// æ»æ°´å¤´ /// </summary> public double Head { get; set; } /// <summary> /// æ°´å¤´æ¨¡å¼ /// </summary> public string HeadPattern { get; set; } } } Hydro/Yw.EPAnet.Calcu.Core/01-network/02-node/02-tank/Tank.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,75 @@ namespace Yw.EPAnet { /// <summary> /// æ°´æ± /// </summary> public class Tank : Parter, ITank { /// <summary> /// /// </summary> public Tank() { } /// <summary> /// /// </summary> public Tank(Tank rhs) : base(rhs) { this.Quality = rhs.Quality; this.Position = rhs.Position; this.PoolElev = rhs.PoolElev; this.InitLevel = rhs.InitLevel; this.MinLevel = rhs.MinLevel; this.MaxLevel = rhs.MaxLevel; this.Diameter = rhs.Diameter; this.MinVol = rhs.MinVol; this.VolCurve = rhs.VolCurve; } /// <summary> /// åå§æ°´è´¨ /// </summary> public double Quality { get; set; } /// <summary> /// ä½ç½® /// </summary> public Position2d Position { get; set; } /// <summary> /// æ± åºæ é« /// </summary> public double PoolElev { get; set; } /// <summary> /// åå§æ°´ä½ /// </summary> public double InitLevel { get; set; } /// <summary> /// æä½æ°´ä½ /// </summary> public double MinLevel { get; set; } /// <summary> /// æé«æ°´ä½ /// </summary> public double MaxLevel { get; set; } /// <summary> /// ç´å¾ /// </summary> public double Diameter { get; set; } /// <summary> /// æå°å®¹ç§¯ /// </summary> public double MinVol { get; set; } /// <summary> /// 容积æ²çº¿ /// </summary> public string VolCurve { get; set; } } } Hydro/Yw.EPAnet.Calcu.Core/01-network/02-node/03-junction/Hydrant.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,57 @@ namespace Yw.EPAnet { /// <summary> /// æ¶ç«æ /// </summary> public class Hydrant : Parter, IEmitter { /// <summary> /// /// </summary> public Hydrant() { } /// <summary> /// /// </summary> public Hydrant(Hydrant rhs) : base(rhs) { this.Quality = rhs.Quality; this.Position = rhs.Position; this.Elev = rhs.Elev; this.Demand = rhs.Demand; this.DemandPattern = rhs.DemandPattern; this.Coefficient = rhs.Coefficient; } /// <summary> /// åå§æ°´è´¨ /// </summary> public double Quality { get; set; } /// <summary> /// ä½ç½® /// </summary> public Position2d Position { get; set; } /// <summary> /// æ é« /// </summary> public double Elev { get; set; } /// <summary> /// éæ°´é /// </summary> public double? Demand { get; set; } /// <summary> /// éæ°´æ¨¡å¼ /// </summary> public string DemandPattern { get; set; } /// <summary> /// æµéç³»æ° /// </summary> public double Coefficient { get; set; } } } Hydro/Yw.EPAnet.Calcu.Core/01-network/02-node/03-junction/Junction.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,51 @@ namespace Yw.EPAnet { /// <summary> /// è¿æ¥èç¹ /// </summary> public class Junction : Parter, IJunction { /// <summary> /// /// </summary> public Junction() { } /// <summary> /// /// </summary> public Junction(Junction rhs) : base(rhs) { this.Quality = rhs.Quality; this.Position = rhs.Position; this.Elev = rhs.Elev; this.Demand = rhs.Demand; this.DemandPattern = rhs.DemandPattern; } /// <summary> /// åå§æ°´è´¨ /// </summary> public double Quality { get; set; } /// <summary> /// ä½ç½® /// </summary> public Position2d Position { get; set; } /// <summary> /// æ é« /// </summary> public double Elev { get; set; } /// <summary> /// éæ°´é /// </summary> public double? Demand { get; set; } /// <summary> /// éæ°´æ¨¡å¼ /// </summary> public string DemandPattern { get; set; } } } Hydro/Yw.EPAnet.Calcu.Core/01-network/02-node/03-junction/Meter.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,50 @@ namespace Yw.EPAnet { /// <summary> /// 水表 /// </summary> public class Meter : Parter, IJunction { /// <summary> /// /// </summary> public Meter() { } /// <summary> /// /// </summary> public Meter(Meter rhs) : base(rhs) { this.Quality = rhs.Quality; this.Position = rhs.Position; this.Elev = rhs.Elev; this.Demand = rhs.Demand; this.DemandPattern = rhs.DemandPattern; } /// <summary> /// åå§æ°´è´¨ /// </summary> public double Quality { get; set; } /// <summary> /// ä½ç½® /// </summary> public Position2d Position { get; set; } /// <summary> /// æ é« /// </summary> public double Elev { get; set; } /// <summary> /// éæ°´é /// </summary> public double? Demand { get; set; } /// <summary> /// éæ°´æ¨¡å¼ /// </summary> public string DemandPattern { get; set; } } } Hydro/Yw.EPAnet.Calcu.Core/01-network/02-node/03-junction/Nozzle.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,57 @@ namespace Yw.EPAnet { /// <summary> /// å·å´ /// </summary> public class Nozzle : Parter, IEmitter { /// <summary> /// /// </summary> public Nozzle() { } /// <summary> /// /// </summary> public Nozzle(Nozzle rhs) : base(rhs) { this.Quality = rhs.Quality; this.Position = rhs.Position; this.Elev = rhs.Elev; this.Demand = rhs.Demand; this.DemandPattern = rhs.DemandPattern; this.Coefficient = rhs.Coefficient; } /// <summary> /// åå§æ°´è´¨ /// </summary> public double Quality { get; set; } /// <summary> /// ä½ç½® /// </summary> public Position2d Position { get; set; } /// <summary> /// æ é« /// </summary> public double Elev { get; set; } /// <summary> /// éæ°´é /// </summary> public double? Demand { get; set; } /// <summary> /// éæ°´æ¨¡å¼ /// </summary> public string DemandPattern { get; set; } /// <summary> /// å·å°ç³»æ° /// </summary> public double Coefficient { get; set; } } } Hydro/Yw.EPAnet.Calcu.Core/01-network/03-link/01-pipe/Pipe.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,65 @@ namespace Yw.EPAnet { /// <summary> /// 管é /// </summary> public class Pipe : Parter, IPipe { /// <summary> /// /// </summary> public Pipe() { } /// <summary> /// /// </summary> public Pipe(Pipe rhs) : base(rhs) { this.StartNode = rhs.StartNode; this.EndNode = rhs.EndNode; this.Diameter = rhs.Diameter; this.Length = rhs.Length; this.Roughness = rhs.Roughness; this.MinorLoss = rhs.MinorLoss; this.LinkStatus = rhs.LinkStatus; } /// <summary> /// å¼å§èç¹ /// </summary> public INode StartNode { get; set; } /// <summary> /// ç»æèç¹ /// </summary> public INode EndNode { get; set; } /// <summary> /// 管éç¶æ /// </summary> public string LinkStatus { get; set; } /// <summary> /// ç´å¾ /// </summary> public double Diameter { get; set; } /// <summary> /// é¿åº¦ /// </summary> public double Length { get; set; } /// <summary> /// ç²ç³ç³»æ° /// </summary> public double Roughness { get; set; } /// <summary> /// å±é»ç³»æ° /// </summary> public double MinorLoss { get; set; } } } Hydro/Yw.EPAnet.Calcu.Core/01-network/03-link/02-pump/Pump.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,80 @@ namespace Yw.EPAnet { /// <summary> /// æ°´æ³µ /// </summary> public class Pump : Parter, IPump { /// <summary> /// /// </summary> public Pump() { } /// <summary> /// /// </summary> public Pump(Pump rhs) : base(rhs) { this.StartNode = rhs.StartNode; this.EndNode = rhs.EndNode; this.LinkStatus = rhs.LinkStatus; this.RatedPower = rhs.RatedPower; this.CurveQH = rhs.CurveQH; this.SpeedRatio = rhs.SpeedRatio; this.SpeedRatioPattern = rhs.SpeedRatioPattern; this.Price = rhs.Price; this.PricePattern = rhs.PricePattern; this.CurveQE = rhs.CurveQE; } /// <summary> /// å¼å§èç¹ /// </summary> public INode StartNode { get; set; } /// <summary> /// ç»æèç¹ /// </summary> public INode EndNode { get; set; } /// <summary> /// æ°´æ³µç¶æ /// </summary> public string LinkStatus { get; set; } /// <summary> /// é¢å®åç /// </summary> public double RatedPower { get; set; } /// <summary> /// æµéæ¬ç¨æ²çº¿ /// </summary> public string CurveQH { get; set; } /// <summary> /// è½¬éæ¯ /// </summary> public double? SpeedRatio { get; set; } /// <summary> /// è½¬éæ¯æ¨¡å¼ /// </summary> public string SpeedRatioPattern { get; set; } /// <summary> /// è½èä»·æ ¼ /// </summary> public double? Price { get; set; } /// <summary> /// ä»·æ ¼æ¨¡å¼ /// </summary> public string PricePattern { get; set; } /// <summary> /// æµéæçæ²çº¿ /// </summary> public string CurveQE { get; set; } } } Hydro/Yw.EPAnet.Calcu.Core/01-network/03-link/03-valve/Valve.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,64 @@ namespace Yw.EPAnet { /// <summary> /// éé¨ /// </summary> public class Valve : Parter, IValve { /// <summary> /// /// </summary> public Valve() { } /// <summary> /// /// </summary> public Valve(Valve rhs) : base(rhs) { this.StartNode = rhs.StartNode; this.EndNode = rhs.EndNode; this.LinkStatus = rhs.LinkStatus; this.Diameter = rhs.Diameter; this.MinorLoss = rhs.MinorLoss; this.ValveType = rhs.ValveType; this.ValveSetting = rhs.ValveSetting; } /// <summary> /// å¼å§èç¹ /// </summary> public INode StartNode { get; set; } /// <summary> /// ç»æèç¹ /// </summary> public INode EndNode { get; set; } /// <summary> /// éé¨ç¶æ /// </summary> public string LinkStatus { get; set; } /// <summary> /// ç´å¾ /// </summary> public double Diameter { get; set; } /// <summary> /// å±é»ç³»æ° /// </summary> public double MinorLoss { get; set; } /// <summary> /// éé¨ç±»å /// </summary> public string ValveType { get; set; } /// <summary> /// éé¨è®¾ç½® /// </summary> public string ValveSetting { get; set; } } } Hydro/Yw.EPAnet.Calcu.Core/01-network/04-operation/Curve.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,34 @@ namespace Yw.EPAnet { /// <summary> /// æ²çº¿ /// </summary> public class Curve : Parter, ICurve { /// <summary> /// /// </summary> public Curve() { } /// <summary> /// /// </summary> public Curve(Curve rhs) : base(rhs) { this.CurveType = rhs.CurveType; this.CurveData = rhs.CurveData; } /// <summary> /// æ²çº¿ç±»å /// </summary> public string CurveType { get; set; } /// <summary> /// æ²çº¿æ°æ® /// </summary> public List<CurvePoint> CurveData { get; set; } } } Hydro/Yw.EPAnet.Calcu.Core/01-network/04-operation/Pattern.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,35 @@ namespace Yw.EPAnet { /// <summary> /// æ¨¡å¼ /// </summary> public class Pattern : Parter, IPattern { /// <summary> /// /// </summary> public Pattern() { } /// <summary> /// /// </summary> public Pattern(Pattern rhs) : base(rhs) { this.Category = rhs.Category; this.Multipliers = rhs.Multipliers; } /// <summary> /// ç±»å« /// </summary> public string Category { get; set; } /// <summary> /// ä¹å /// </summary> public List<double> Multipliers { get; set; } } } Hydro/Yw.EPAnet.Calcu.Core/01-network/04-operation/Rule.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,15 @@ namespace Yw.EPAnet { /// <summary> /// è§å /// </summary> public class Rule : Parter, IRule { /// <summary> /// /// </summary> public Rule() { } } } Hydro/Yw.EPAnet.Calcu.Core/02-check/CheckFailed.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,15 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Yw.EPAnet { /// <summary> /// æ£æ¥å¤±è´¥ /// </summary> public class CheckFailed { } } Hydro/Yw.EPAnet.Calcu.Core/02-check/CheckResult.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,18 @@ namespace Yw.EPAnet { /// <summary> /// æ£æ¥ç»æ /// </summary> public class CheckResult { /// <summary> /// æ¯å¦æå /// </summary> public bool Succeed { get; set; } /// <summary> /// 失败å表 /// </summary> public List<CheckFailed> FailedList { get; set; } } } Hydro/Yw.EPAnet.Calcu.Core/03-calculation/CalcuFailed.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,10 @@ namespace Yw.EPAnet { /// <summary> /// 计ç®å¤±è´¥ /// </summary> public class CalcuFailed { } } Hydro/Yw.EPAnet.Calcu.Core/03-calculation/CalcuLink.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,23 @@ namespace Yw.EPAnet { /// <summary> /// ç®¡æ®µè®¡ç® /// </summary> public class CalcuLink : CalcuParter { /// <summary> /// æµé /// </summary> public float Flow { get; set; } /// <summary> /// æµé /// </summary> public float Velocity { get; set; } /// <summary> /// 水头æå¤± /// </summary> public float Headloss { get; set; } } } Hydro/Yw.EPAnet.Calcu.Core/03-calculation/CalcuNode.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,23 @@ namespace Yw.EPAnet { /// <summary> /// èç¹è®¡ç® /// </summary> public class CalcuNode : CalcuParter { /// <summary> /// èªç±åå /// </summary> public double Press { get; set; } /// <summary> /// ç»å¯¹åå /// </summary> public double Head { get; set; } /// <summary> /// éæ°´é /// </summary> public double Demand { get; set; } } } Hydro/Yw.EPAnet.Calcu.Core/03-calculation/CalcuParter.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,13 @@ namespace Yw.EPAnet { /// <summary> /// ç»ä»¶è®¡ç® /// </summary> public class CalcuParter { /// <summary> /// id /// </summary> public string Id { get; set; } } } Hydro/Yw.EPAnet.Calcu.Core/03-calculation/CalcuResult.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,47 @@ namespace Yw.EPAnet { /// <summary> /// 计ç®ç»æ /// </summary> public class CalcuResult { /// <summary> /// æ¯å¦æå /// </summary> public bool Succeed { get; set; } /// <summary> /// 失败å表 /// </summary> public List<CalcuFailed> FailedList { get; set; } /// <summary> /// èç¹å表 /// </summary> public List<CalcuNode> NodeList { get; set; } /// <summary> /// 管段å表 /// </summary> public List<CalcuLink> LinkList { get; set; } /// <summary> /// è·åç»ä»¶å表 /// </summary> public List<CalcuParter> GetParterList() { var list = new List<CalcuParter>(); if (this.NodeList != null && this.NodeList.Count > 0) { list.AddRange(this.NodeList); } if (this.LinkList != null && this.LinkList.Count > 0) { list.AddRange(this.LinkList); } return list; } } } Hydro/Yw.EPAnet.Calcu.Core/04-Inp/InpInteropHelper.cs
¶Ô±ÈÐÂÎļþ @@ -0,0 +1,28 @@ namespace Yw.EPAnet { /// <summary> /// Inp交äºè¾ å©ç±» /// </summary> public static class InpInteropHelper { /// <summary> /// 转æ¢è³Inpå符串 /// </summary> /// <returns></returns> public static string ToInpString(this Network rhs) { return default; } /// <summary> /// ä»Inpå符串ä¸è§£æ /// </summary> /// <param name="inpString">inpå符串</param> /// <returns></returns> public static Network FromInpString(string inpString) { return default; } } } Hydro/Yw.EPAnet.Calcu.Core/Enum/ObjectEnum.cs
@@ -36,5 +36,7 @@ ç¼ºå°æ°´ç®±ææ°´æ± 对象 = 3, 管件对象è¿ç®¡ä»¶å¯¹è±¡ = 4 } } } Hydro/Yw.EPAnet.Calcu.Core/NetWork/NetWork.cs
@@ -1,5 +1,4 @@ using Hydro.CommonBase; using Yw.EPAnet.Calcu; //using Yw.EPAcore.Core; using System; using System.Collections.Generic; @@ -772,7 +771,7 @@ /// <returns></returns> public virtual List<IResult> Calc(string InpPath) { Yw.EPAcore.Core.HydraulicCore epanet = new Yw.EPAcore.Core.HydraulicCore(true); EPAcore.Core.HydraulicCore epanet = new EPAcore.Core.HydraulicCore(true); var list = new List<IResult>(); var err = epanet.open(InpPath, "", ""); @@ -804,7 +803,7 @@ for (var j = 0; j < arr.Length; j++) { float v = 0; var t = (Yw.EPAcore.Core.NodeValueType)j; var t = (EPAcore.Core.NodeValueType)j; epanet.getnodevalue(i, arrnum[j], ref v); switch (arr[j]) { @@ -835,7 +834,7 @@ for (var j = 0; j < arr.Length; j++) { float v = 0; var t = (Yw.EPAcore.Core.NodeValueType)j; var t = (EPAcore.Core.NodeValueType)j; epanet.getnodevalue(i, arrnum[j], ref v); switch (arr[j]) { Hydro/Yw.EPAnet.Calcu.Core/Node/JunctionModel.cs
@@ -49,5 +49,7 @@ Elev = base.Elev, }; } } } Hydro/Yw.EPAnet.Calcu.Core/Node/TankModel.cs
@@ -50,5 +50,7 @@ var Overflow = IsOverFlow ? "" : ""; return $"{ID}\t{Elev}\t{InitLevel}\t{MinLevel}\t{MaxLevel}\t{Diameter}\t{MinVol}\t{VolCurve}\t{Overflow}\t;\t"; } } } Hydro/Yw.EPAnet.Calcu.Core/Yw.EPAnet.Calcu.Core.csproj
@@ -10,8 +10,4 @@ <ProjectReference Include="..\Yw.EPAnet.Core\Yw.EPAnet.Core.csproj" /> </ItemGroup> <ItemGroup> <Folder Include="00-core\" /> </ItemGroup> </Project>