From 1d22616b251b366b9c238aa5f00fd630a95b8d81 Mon Sep 17 00:00:00 2001 From: Shuxia Ning <NingShuxia0927@outlook.com> Date: 星期一, 11 十一月 2024 15:45:47 +0800 Subject: [PATCH] Merge branch 'master' of http://47.103.154.90:83/r/HStation/XHS.V1.0 --- Hydro/Yw.Hydro.Core/ParseHelper.cs | 277 +++++++++++++++++++++++++++++++++--------------------- 1 files changed, 168 insertions(+), 109 deletions(-) diff --git a/Hydro/Yw.Hydro.Core/ParseHelper.cs b/Hydro/Yw.Hydro.Core/ParseHelper.cs index 67926f3..c761cd8 100644 --- a/Hydro/Yw.Hydro.Core/ParseHelper.cs +++ b/Hydro/Yw.Hydro.Core/ParseHelper.cs @@ -18,6 +18,67 @@ #region 鑺傜偣 + //姘村簱 + if (model.Reservoirs != null && model.Reservoirs.Count > 0) + { + foreach (var reservoir in model.Reservoirs) + { + var reservoirModel = new Reservoir(); + reservoirModel.Id = reservoir.Code; + reservoirModel.Name = reservoir.Name; + reservoirModel.Quality = 0; + reservoirModel.Position = new Position2d(reservoir.Position2d.X, reservoir.Position2d.Y); + reservoirModel.PoolElev = reservoir.PoolElev ?? 0; + reservoirModel.Head = reservoir.Head; + reservoirModel.HeadPattern = reservoir.HeadPattern; + netWork.Reservoirs.Add(reservoirModel); + } + } + + //姘存睜 + if (model.Tanks != null && model.Tanks.Count > 0) + { + foreach (var tank in model.Tanks) + { + var tankModel = new Tank(); + tankModel.Id = tank.Code; + tankModel.Name = tank.Name; + tankModel.Quality = 0; + tankModel.Position = new Position2d(tank.Position2d.X, tank.Position2d.Y); + tankModel.PoolElev = tank.PoolElev; + tankModel.InitLevel = tank.InitLevel; + tankModel.MaxLevel = tank.MaxLevel; + tankModel.MinLevel = tank.MinLevel; + tankModel.Diameter = tank.DN; + tankModel.MinVol = tank.MinVol; + tankModel.VolCurve = tank.VolCurve; + //tankModel.Overflow = tank.OverFlow; + netWork.Tanks.Add(tankModel); + } + } + + //姘寸 + if (model.Waterboxs != null && model.Waterboxs.Count > 0) + { + foreach (var waterbox in model.Waterboxs) + { + var waterboxModel = new Tank(); + waterboxModel.Id = waterbox.Code; + waterboxModel.Name = waterbox.Name; + waterboxModel.Quality = 0; + waterboxModel.Position = new Position2d(waterbox.Position2d.X, waterbox.Position2d.Y); + waterboxModel.PoolElev = waterbox.PoolElev; + waterboxModel.InitLevel = waterbox.InitLevel; + waterboxModel.MaxLevel = waterbox.MaxLevel; + waterboxModel.MinLevel = waterbox.MinLevel; + waterboxModel.Diameter = waterbox.DN; + waterboxModel.MinVol = waterbox.MinVol; + waterboxModel.VolCurve = waterbox.VolCurve; + //waterboxModel.Overflow = waterbox.OverFlow; + netWork.Tanks.Add(waterboxModel); + } + } + //杩炴帴鑺傜偣 if (model.Junctions != null && model.Junctions.Count > 0) { @@ -26,7 +87,7 @@ var junctionModel = new Junction(); junctionModel.Id = junction.Code; junctionModel.Name = junction.Name; - junctionModel.Quality = junction.Quality; + junctionModel.Quality = 0; junctionModel.Position = new Position2d(junction.Position2d.X, junction.Position2d.Y); junctionModel.Elev = junction.Elev; junctionModel.Demand = junction.Demand; @@ -44,7 +105,7 @@ var nozzleModel = new Nozzle(); nozzleModel.Id = nozzle.Code; nozzleModel.Name = nozzle.Name; - nozzleModel.Quality = nozzle.Quality; + nozzleModel.Quality = 0; nozzleModel.Position = new Position2d(nozzle.Position2d.X, nozzle.Position2d.Y); nozzleModel.Elev = nozzle.Elev; nozzleModel.Demand = nozzle.Demand; @@ -62,13 +123,30 @@ var hydrantModel = new Hydrant(); hydrantModel.Id = hydrant.Code; hydrantModel.Name = hydrant.Name; - hydrantModel.Quality = hydrant.Quality; + hydrantModel.Quality = 0; hydrantModel.Position = new Position2d(hydrant.Position2d.X, hydrant.Position2d.Y); hydrantModel.Elev = hydrant.Elev; hydrantModel.Demand = hydrant.Demand; hydrantModel.DemandPattern = hydrant.DemandPattern; hydrantModel.Coefficient = hydrant.Coefficient; netWork.Hydrants.Add(hydrantModel); + } + } + + //闂峰ご + if (model.Bluntheads != null && model.Bluntheads.Count > 0) + { + foreach (var blunthead in model.Bluntheads) + { + var bluntheadModel = new Junction(); + bluntheadModel.Id = blunthead.Code; + bluntheadModel.Name = blunthead.Name; + bluntheadModel.Quality = 0; + bluntheadModel.Position = new Position2d(blunthead.Position2d.X, blunthead.Position2d.Y); + bluntheadModel.Elev = blunthead.Elev; + bluntheadModel.Demand = blunthead.Demand; + bluntheadModel.DemandPattern = blunthead.DemandPattern; + netWork.Junctions.Add(bluntheadModel); } } @@ -80,7 +158,7 @@ var elbowModel = new Junction(); elbowModel.Id = elbow.Code; elbowModel.Name = elbow.Name; - elbowModel.Quality = elbow.Quality; + elbowModel.Quality = 0; elbowModel.Position = new Position2d(elbow.Position2d.X, elbow.Position2d.Y); elbowModel.Elev = elbow.Elev; elbowModel.Demand = elbow.Demand; @@ -97,7 +175,7 @@ var threelinkModel = new Junction(); threelinkModel.Id = threelink.Code; threelinkModel.Name = threelink.Name; - threelinkModel.Quality = threelink.Quality; + threelinkModel.Quality = 0; threelinkModel.Position = new Position2d(threelink.Position2d.X, threelink.Position2d.Y); threelinkModel.Elev = threelink.Elev; threelinkModel.Demand = threelink.Demand; @@ -114,7 +192,7 @@ var fourlinkModel = new Junction(); fourlinkModel.Id = fourlink.Code; fourlinkModel.Name = fourlink.Name; - fourlinkModel.Quality = fourlink.Quality; + fourlinkModel.Quality = 0; fourlinkModel.Position = new Position2d(fourlink.Position2d.X, fourlink.Position2d.Y); fourlinkModel.Elev = fourlink.Elev; fourlinkModel.Demand = fourlink.Demand; @@ -131,7 +209,7 @@ var meterModel = new Meter(); meterModel.Id = meter.Code; meterModel.Name = meter.Name; - meterModel.Quality = meter.Quality; + meterModel.Quality = 0; meterModel.Position = new Position2d(meter.Position2d.X, meter.Position2d.Y); meterModel.Elev = meter.Elev; meterModel.Demand = meter.Demand; @@ -148,7 +226,7 @@ var flowmeterModel = new Junction(); flowmeterModel.Id = flowmeter.Code; flowmeterModel.Name = flowmeter.Name; - flowmeterModel.Quality = flowmeter.Quality; + flowmeterModel.Quality = 0; flowmeterModel.Position = new Position2d(flowmeter.Position2d.X, flowmeter.Position2d.Y); flowmeterModel.Elev = flowmeter.Elev; flowmeterModel.Demand = flowmeter.Demand; @@ -165,89 +243,12 @@ var pressmeterModel = new Junction(); pressmeterModel.Id = pressmeter.Code; pressmeterModel.Name = pressmeter.Name; - pressmeterModel.Quality = pressmeter.Quality; + pressmeterModel.Quality = 0; pressmeterModel.Position = new Position2d(pressmeter.Position2d.X, pressmeter.Position2d.Y); pressmeterModel.Elev = pressmeter.Elev; pressmeterModel.Demand = pressmeter.Demand; pressmeterModel.DemandPattern = pressmeter.DemandPattern; netWork.Junctions.Add(pressmeterModel); - } - } - - //闂峰ご - if (model.Bluntheads != null && model.Bluntheads.Count > 0) - { - foreach (var blunthead in model.Bluntheads) - { - var bluntheadModel = new Junction(); - bluntheadModel.Id = blunthead.Code; - bluntheadModel.Name = blunthead.Name; - bluntheadModel.Quality = blunthead.Quality; - bluntheadModel.Position = new Position2d(blunthead.Position2d.X, blunthead.Position2d.Y); - bluntheadModel.Elev = blunthead.Elev; - bluntheadModel.Demand = blunthead.Demand; - bluntheadModel.DemandPattern = blunthead.DemandPattern; - netWork.Junctions.Add(bluntheadModel); - } - } - - //姘村簱 - if (model.Reservoirs != null && model.Reservoirs.Count > 0) - { - foreach (var reservoir in model.Reservoirs) - { - var reservoirModel = new Reservoir(); - reservoirModel.Id = reservoir.Code; - reservoirModel.Name = reservoir.Name; - reservoirModel.Quality = reservoir.Quality; - reservoirModel.Position = new Position2d(reservoir.Position2d.X, reservoir.Position2d.Y); - reservoirModel.PoolElev = reservoir.PoolElev.HasValue ? reservoir.PoolElev.Value : 0; - reservoirModel.Head = reservoir.Head; - reservoirModel.HeadPattern = reservoir.HeadPattern; - netWork.Reservoirs.Add(reservoirModel); - } - } - - //姘存睜 - if (model.Tanks != null && model.Tanks.Count > 0) - { - foreach (var tank in model.Tanks) - { - var tankModel = new Tank(); - tankModel.Id = tank.Code; - tankModel.Name = tank.Name; - tankModel.Quality = tank.Quality; - tankModel.Position = new Position2d(tank.Position2d.X, tank.Position2d.Y); - tankModel.PoolElev = tank.PoolElev; - tankModel.InitLevel = tank.InitLevel; - tankModel.MaxLevel = tank.MaxLevel; - tankModel.MinLevel = tank.MinLevel; - tankModel.MinVol = tank.MinVol; - tankModel.VolCurve = tank.VolCurve; - tankModel.Diameter = tank.DN; - netWork.Tanks.Add(tankModel); - } - } - - //姘寸 - if (model.Waterboxs != null && model.Waterboxs.Count > 0) - { - foreach (var waterbox in model.Waterboxs) - { - var waterboxModel = new Tank(); - waterboxModel.Id = waterbox.Code; - waterboxModel.Name = waterbox.Name; - waterboxModel.Quality = waterbox.Quality; - waterboxModel.Position = new Position2d(waterbox.Position2d.X, waterbox.Position2d.Y); - waterboxModel.PoolElev = waterbox.PoolElev; - waterboxModel.InitLevel = waterbox.InitLevel; - waterboxModel.MaxLevel = waterbox.MaxLevel; - waterboxModel.MinLevel = waterbox.MinLevel; - waterboxModel.MinVol = waterbox.MinVol; - waterboxModel.VolCurve = waterbox.VolCurve; - waterboxModel.Diameter = waterbox.DN; - waterboxModel.Overflow = waterbox.OverFlow; - netWork.Tanks.Add(waterboxModel); } } @@ -300,17 +301,16 @@ { foreach (var exchanger in model.Exchangers) { - var exchangerModel = new Pipe(); + var exchangerModel = new Exchanger(); exchangerModel.Id = exchanger.Code; exchangerModel.Name = exchanger.Name; exchangerModel.StartNode = allNodes.Find(x => x.Id == exchanger.StartCode); exchangerModel.EndNode = allNodes.Find(x => x.Id == exchanger.EndCode); exchangerModel.LinkStatus = exchanger.LinkStatus; - exchangerModel.Length = exchanger.Length; exchangerModel.Diameter = exchanger.Diameter; - exchangerModel.Roughness = exchanger.Roughness; exchangerModel.MinorLoss = exchanger.MinorLoss; - netWork.Pipes.Add(exchangerModel); + exchangerModel.CurveQL = "GPVDefault"; + netWork.Exchangers.Add(exchangerModel); } } @@ -319,17 +319,16 @@ { foreach (var compressor in model.Compressors) { - var compressModel = new Pipe(); + var compressModel = new Compressor(); compressModel.Id = compressor.Code; compressModel.Name = compressor.Name; compressModel.StartNode = allNodes.Find(x => x.Id == compressor.StartCode); compressModel.EndNode = allNodes.Find(x => x.Id == compressor.EndCode); compressModel.LinkStatus = compressor.LinkStatus; - compressModel.Length = compressor.Length; compressModel.Diameter = compressor.Diameter; - compressModel.Roughness = compressor.Roughness; compressModel.MinorLoss = compressor.MinorLoss; - netWork.Pipes.Add(compressModel); + compressModel.CurveQL = "GPVDefault"; + netWork.Compressors.Add(compressModel); } } @@ -344,7 +343,7 @@ pumpModel.StartNode = allNodes.Find(x => x.Id == pump.StartCode); pumpModel.EndNode = allNodes.Find(x => x.Id == pump.EndCode); pumpModel.LinkStatus = pump.LinkStatus; - pumpModel.RatedPower = pump.RatedP; + pumpModel.RatedP = pump.RatedP; pumpModel.CurveQH = pump.CurveQH; if (string.IsNullOrEmpty(pumpModel.CurveQH)) { @@ -353,9 +352,6 @@ pumpModel.SpeedRatio = pump.SpeedRatio; pumpModel.SpeedRatioPattern = pump.SpeedRatioPattern; - pumpModel.Price = pump.Price; - pumpModel.PricePattern = pump.PricePattern; - pumpModel.CurveQE = pump.CurveQE; netWork.Pumps.Add(pumpModel); } } @@ -365,18 +361,81 @@ { foreach (var valve in model.Valves) { - var valveModel = new Yw.EPAnet.Valve(); - valveModel.Id = valve.Code; - valveModel.Name = valve.Name; - valveModel.StartNode = allNodes.Find(x => x.Id == valve.StartCode); - valveModel.EndNode = allNodes.Find(x => x.Id == valve.EndCode); - valveModel.LinkStatus = valve.LinkStatus; - valveModel.Diameter = valve.Diameter; - valveModel.MinorLoss = valve.MinorLoss; - valveModel.ValveType = valve.ValveType; - valveModel.ValveSetting = valve.ValveSetting; + //姝㈠洖闃�琚綋鎴愮閬撳鐞� + if (valve.ValveType == Yw.Hydro.ValveType.CV) + { + var pipeModel = new Pipe(); + pipeModel.Id = valve.Code; + pipeModel.Name = valve.Name; + pipeModel.StartNode = allNodes.Find(x => x.Id == valve.StartCode); + pipeModel.EndNode = allNodes.Find(x => x.Id == valve.EndCode); + pipeModel.LinkStatus = valve.LinkStatus; + pipeModel.Length = 0.01; + pipeModel.Diameter = valve.Diameter; + pipeModel.Roughness = 110; + pipeModel.MinorLoss = valve.MinorLoss; + netWork.Pipes.Add(pipeModel); + } + else + { + var valveModel = new Yw.EPAnet.Valve(); + valveModel.Id = valve.Code; + valveModel.Name = valve.Name; + valveModel.StartNode = allNodes.Find(x => x.Id == valve.StartCode); + valveModel.EndNode = allNodes.Find(x => x.Id == valve.EndCode); + valveModel.LinkStatus = valve.LinkStatus; + valveModel.Diameter = valve.Diameter; + valveModel.MinorLoss = valve.MinorLoss; + valveModel.ValveType = valve.ValveType; + valveModel.ValveSetting = valve.ValveSetting; + switch (valve.ValveType) + { + case Yw.Hydro.ValveType.PRV://鍑忓帇闃� + { - netWork.Valves.Add(valveModel); + } + break; + case Yw.Hydro.ValveType.PSV://绋冲帇闃� + { + + } + break; + case Yw.Hydro.ValveType.PBV://鍘嬪姏鍒跺姩闃� + { + + } + break; + case Yw.Hydro.ValveType.FCV://娴侀噺鎺у埗闃� + { + + } + break; + case Yw.Hydro.ValveType.TCV://鑺傛祦鎺у埗闃� + { + valveModel.ValveSetting = "0"; + var curveol = model.Curves?.Find(x => x.Code == valve.ValveSetting); + if (curveol != null) + { + var point2dList = curveol.CurveData.Select(x => new Yw.Geometry.Point2d(x.X, x.Y)).ToList(); + var ptCurveOL = new Yw.Geometry.CubicSpline2d(point2dList); + valveModel.ValveSetting = ptCurveOL.GetPointY(valve.OpeningDegree).ToString(); + if (valve.OpeningDegree > 0) + { + valveModel.LinkStatus = Yw.EPAnet.ValveStatus.None; + } + } + + } + break; + case Yw.Hydro.ValveType.GPV://甯歌闃�闂� + { + + } + break; + default: break; + } + netWork.Valves.Add(valveModel); + } } } -- Gitblit v1.9.3