lixiaojun
2025-01-20 bef933e7e166b085ba7e46e38ea62d9ae0129ec6
Hydro/Yw.Hydro.Core/ParseHelper.cs
@@ -1,6 +1,4 @@
using Microsoft.VisualBasic;
using System.Security.Permissions;
using Yw.EPAnet;
using Microsoft.Extensions.Logging.Abstractions;
namespace Yw.Hydro
{
@@ -33,9 +31,8 @@
                    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);
                }
            }
@@ -99,8 +96,8 @@
                    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);
                }
@@ -119,8 +116,8 @@
                    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);
                }
@@ -139,8 +136,8 @@
                    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);
                }
@@ -159,8 +156,8 @@
                    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);
                }
@@ -179,8 +176,8 @@
                    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);
                }
            }
@@ -198,8 +195,8 @@
                    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);
@@ -219,8 +216,8 @@
                    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);
@@ -320,11 +317,11 @@
                    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);
                }
            }
@@ -340,9 +337,9 @@
                    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);
@@ -406,7 +403,7 @@
                        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://减压阀
@@ -432,20 +429,20 @@
                            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;
@@ -475,7 +472,7 @@
                    exchangerModel.LinkStatus = exchanger.LinkStatus;
                    exchangerModel.Diameter = exchanger.Diameter;
                    exchangerModel.MinorLoss = exchanger.MinorLoss;
                    exchangerModel.CurveQL = "GPVDefault";
                    exchangerModel.CurveQL = exchanger.CurveQL;
                    netWork.Exchangers.Add(exchangerModel);
                }
            }
@@ -494,7 +491,7 @@
                    compressModel.LinkStatus = compressor.LinkStatus;
                    compressModel.Diameter = compressor.Diameter;
                    compressModel.MinorLoss = compressor.MinorLoss;
                    compressModel.CurveQL = "GPVDefault";
                    compressModel.CurveQL = compressor.CurveQL;
                    netWork.Compressors.Add(compressModel);
                }
            }