| | |
| | | using Microsoft.VisualBasic; |
| | | using System.Security.Permissions; |
| | | using Yw.EPAnet; |
| | | using Microsoft.Extensions.Logging.Abstractions; |
| | | |
| | | namespace Yw.Hydro |
| | | { |
| | |
| | | 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; |
| | | reservoirModel.HeadPattern = string.Empty; |
| | | netWork.Reservoirs.Add(reservoirModel); |
| | | } |
| | | } |
| | |
| | | junctionModel.Position = new Position2d(junction.Position2d.X, junction.Position2d.Y); |
| | | junctionModel.Elev = junction.Elev; |
| | | junctionModel.MinorLoss = junction.MinorLoss; |
| | | junctionModel.Demand = junction.Demand; |
| | | junctionModel.DemandPattern = junction.DemandPattern; |
| | | junctionModel.Demand = 0; |
| | | junctionModel.DemandPattern = null; |
| | | |
| | | netWork.Junctions.Add(junctionModel); |
| | | } |
| | |
| | | nozzleModel.Position = new Position2d(nozzle.Position2d.X, nozzle.Position2d.Y); |
| | | nozzleModel.Elev = nozzle.Elev; |
| | | nozzleModel.MinorLoss = nozzle.MinorLoss; |
| | | nozzleModel.Demand = nozzle.Demand; |
| | | nozzleModel.DemandPattern = nozzle.DemandPattern; |
| | | nozzleModel.Demand = 0; |
| | | nozzleModel.DemandPattern = null; |
| | | nozzleModel.Coefficient = nozzle.Coefficient; |
| | | netWork.Nozzles.Add(nozzleModel); |
| | | } |
| | |
| | | coolingModel.Position = new Position2d(cooling.Position2d.X, cooling.Position2d.Y); |
| | | coolingModel.Elev = cooling.Elev; |
| | | coolingModel.MinorLoss = cooling.MinorLoss; |
| | | coolingModel.Demand = cooling.Demand; |
| | | coolingModel.DemandPattern = cooling.DemandPattern; |
| | | coolingModel.Demand = 0; |
| | | coolingModel.DemandPattern = null; |
| | | coolingModel.Coefficient = cooling.Coefficient; |
| | | netWork.Nozzles.Add(coolingModel); |
| | | } |
| | |
| | | hydrantModel.Position = new Position2d(hydrant.Position2d.X, hydrant.Position2d.Y); |
| | | hydrantModel.Elev = hydrant.Elev; |
| | | hydrantModel.MinorLoss = hydrant.MinorLoss; |
| | | hydrantModel.Demand = hydrant.Demand; |
| | | hydrantModel.DemandPattern = hydrant.DemandPattern; |
| | | hydrantModel.Demand = 0; |
| | | hydrantModel.DemandPattern = null; |
| | | hydrantModel.Coefficient = hydrant.Coefficient; |
| | | netWork.Hydrants.Add(hydrantModel); |
| | | } |
| | |
| | | bluntheadModel.Position = new Position2d(blunthead.Position2d.X, blunthead.Position2d.Y); |
| | | bluntheadModel.Elev = blunthead.Elev; |
| | | bluntheadModel.MinorLoss = blunthead.MinorLoss; |
| | | bluntheadModel.Demand = blunthead.Demand; |
| | | bluntheadModel.DemandPattern = blunthead.DemandPattern; |
| | | bluntheadModel.Demand = 0; |
| | | bluntheadModel.DemandPattern = null; |
| | | netWork.Bluntheads.Add(bluntheadModel); |
| | | } |
| | | } |
| | |
| | | elbowModel.Position = new Position2d(elbow.Position2d.X, elbow.Position2d.Y); |
| | | elbowModel.Elev = elbow.Elev; |
| | | elbowModel.MinorLoss = elbow.MinorLoss; |
| | | elbowModel.Demand = elbow.Demand; |
| | | elbowModel.DemandPattern = elbow.DemandPattern; |
| | | elbowModel.Demand = 0; |
| | | elbowModel.DemandPattern = null; |
| | | elbowModel.ElbowType = elbow.ElbowType; |
| | | elbowModel.BendingAngle = elbow.BendingAngle; |
| | | netWork.Elbows.Add(elbowModel); |
| | |
| | | threelinkModel.Position = new Position2d(threelink.Position2d.X, threelink.Position2d.Y); |
| | | threelinkModel.Elev = threelink.Elev; |
| | | threelinkModel.MinorLoss = threelink.MinorLoss; |
| | | threelinkModel.Demand = threelink.Demand; |
| | | threelinkModel.DemandPattern = threelink.DemandPattern; |
| | | threelinkModel.Demand = 0; |
| | | threelinkModel.DemandPattern = null; |
| | | threelinkModel.RunningThroughLoss = threelink.RunningThroughLoss; |
| | | threelinkModel.BranchThroughLoss = threelink.BranchThroughLoss; |
| | | netWork.Threelinks.Add(threelinkModel); |
| | |
| | | pipeModel.Name = pipe.Name; |
| | | pipeModel.StartNode = allNodes.Find(x => x.Id == pipe.StartCode); |
| | | pipeModel.EndNode = allNodes.Find(x => x.Id == pipe.EndCode); |
| | | pipeModel.LinkStatus = pipe.LinkStatus; |
| | | pipeModel.LinkStatus = Yw.Hydro.PipeStatus.Open; |
| | | pipeModel.Length = pipe.Length; |
| | | pipeModel.Diameter = pipe.Diameter; |
| | | pipeModel.Roughness = pipe.Roughness; |
| | | pipeModel.MinorLossCoeff = pipe.MinorLoss; |
| | | pipeModel.MinorLossCoeff = 0; |
| | | netWork.Pipes.Add(pipeModel); |
| | | } |
| | | } |
| | |
| | | translationModel.Name = translation.Name; |
| | | translationModel.StartNode = allNodes.Find(x => x.Id == translation.StartCode); |
| | | translationModel.EndNode = allNodes.Find(x => x.Id == translation.EndCode); |
| | | translationModel.LinkStatus = translation.LinkStatus; |
| | | translationModel.LinkStatus = Yw.Hydro.LinkStatus.Open; |
| | | translationModel.Length = translation.Length; |
| | | translationModel.Diameter = translation.Diameter; |
| | | translationModel.Diameter = (translation.StartDiameter + translation.EndDiameter) / 2f; |
| | | translationModel.Roughness = translation.Roughness; |
| | | translationModel.MinorLossCoeff = translation.MinorLoss; |
| | | netWork.Translations.Add(translationModel); |
| | |
| | | valveModel.Diameter = valve.Diameter; |
| | | valveModel.MinorLoss = valve.MinorLoss; |
| | | valveModel.ValveType = valve.ValveType; |
| | | valveModel.ValveSetting = valve.ValveSetting; |
| | | //valveModel.ValveSetting = valve.ValveSetting; |
| | | switch (valve.ValveType) |
| | | { |
| | | case Yw.Hydro.ValveType.PRV://减压阀 |
| | |
| | | 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.LinkStatus == Yw.Hydro.LinkStatus.Open) |
| | | { |
| | | if (valve.OpeningDegree > 0) |
| | | { |
| | | valveModel.LinkStatus = Yw.EPAnet.ValveStatus.None; |
| | | } |
| | | } |
| | | } |
| | | // 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.LinkStatus == Yw.Hydro.LinkStatus.Open) |
| | | // { |
| | | // if (valve.OpeningDegree > 0) |
| | | // { |
| | | // valveModel.LinkStatus = Yw.EPAnet.ValveStatus.None; |
| | | // } |
| | | // } |
| | | //} |
| | | |
| | | } |
| | | break; |
| | |
| | | exchangerModel.LinkStatus = exchanger.LinkStatus; |
| | | exchangerModel.Diameter = exchanger.Diameter; |
| | | exchangerModel.MinorLoss = exchanger.MinorLoss; |
| | | exchangerModel.CurveQL = "GPVDefault"; |
| | | exchangerModel.CurveQL = exchanger.CurveQL; |
| | | netWork.Exchangers.Add(exchangerModel); |
| | | } |
| | | } |
| | |
| | | compressModel.LinkStatus = compressor.LinkStatus; |
| | | compressModel.Diameter = compressor.Diameter; |
| | | compressModel.MinorLoss = compressor.MinorLoss; |
| | | compressModel.CurveQL = "GPVDefault"; |
| | | compressModel.CurveQL = compressor.CurveQL; |
| | | netWork.Compressors.Add(compressModel); |
| | | } |
| | | } |