lixiaojun
2024-08-06 62f18f31a10fd5597b45151f688e5189eba888fd
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
 
namespace Yw.Hydro
{
    /// <summary>
    /// 解析辅助类
    /// </summary>
    public class ParseHelper
    {
        /// <summary>
        /// 
        /// </summary>
        public static NetWork ToNetWork(Yw.Model.HydroModelInfo model)
        {
            if (model == null)
            {
                return default;
            }
            var netWork = new NetWork();
 
            //连接节点
            if (model.Junctions != null && model.Junctions.Count > 0)
            {
                foreach (var junction in model.Junctions)
                {
                    var junctionModel = new JunctionModel();
                    junctionModel.ID = junction.Code;
                    junctionModel.Name = junction.Name;
                    junctionModel.Elev = (float)junction.Elev;
                    junctionModel.Demand = junction.Demand.HasValue ? (float)junction.Demand.Value : 0;
                    junctionModel.PatternID = junction.DemandPattern;
                    junctionModel.X = (float)junction.Position2d.X;
                    junctionModel.Y = (float)junction.Position2d.Y;
                    netWork.Nodes.Add(junctionModel);
                }
            }
 
            //水库
            if (model.Reservoirs != null && model.Reservoirs.Count > 0)
            {
                foreach (var reservoir in model.Reservoirs)
                {
                    var reservoirModel = new ReservoisModel();
                    reservoirModel.ID = reservoir.Code;
                    reservoirModel.Name = reservoir.Name;
                    reservoirModel.Head = (float)reservoir.Head;
                    reservoirModel.PatternID = reservoir.HeadPattern;
                    reservoirModel.X = (float)reservoir.Position2d.X;
                    reservoirModel.Y = (float)reservoir.Position2d.Y;
                    netWork.Nodes.Add(reservoirModel);
                }
            }
 
            //水池
            if (model.Tanks != null && model.Tanks.Count > 0)
            {
                foreach (var tank in model.Tanks)
                {
                    var tankModel = new TankModel();
                    tankModel.ID = tank.Code;
                    tankModel.Name = tank.Name;
                    tankModel.Elev = (float)tank.PoolElev;
                    tankModel.InitLevel = (float)tank.InitLevel;
                    tankModel.MaxLevel = (float)tank.MaxLevel;
                    tankModel.MinLevel = (float)tank.MinLevel;
                    tankModel.MinVol = (float)tank.MinVol;
                    tankModel.VolCurve = tank.VolCurve;
                    tankModel.Diameter = (float)tank.Diameter;
                    tankModel.X = (float)tank.Position2d.X;
                    tankModel.Y = (float)tank.Position2d.Y;
                    netWork.Nodes.Add(tankModel);
                }
            }
 
            //管道
            if (model.Pipes != null && model.Pipes.Count > 0)
            {
                foreach (var pipe in model.Pipes)
                {
                    var pipeModel = new PipeModel();
                    pipeModel.ID = pipe.Code;
                    pipeModel.Name = pipe.Name;
                    pipeModel.Node1 = pipe.StartCode;
                    pipeModel.Node2 = pipe.EndCode;
                    pipeModel.Length = (float)pipe.Length;
                    pipeModel.Diameter = (float)pipe.Diameter;
                    pipeModel.Roughness = (float)pipe.Roughness;
                    pipeModel.MinorLoss = (float)pipe.MinorLoss;
                    netWork.Links.Add(pipeModel);
                }
            }
 
            //水泵
            if (model.Pumps != null && model.Pumps.Count > 0)
            {
                foreach (var pump in model.Pumps)
                {
                    var pumpModel = new PumpModel();
                    pumpModel.ID = pump.Code;
                    pumpModel.Name = pump.Name;
                    pumpModel.Node1 = pump.StartCode;
                    pumpModel.Node2 = pump.EndCode;
                    pumpModel.RatedPower = pump.RatedPower;
                    pumpModel.FlowCurveID = pump.CurveQH;
                    // pumpModel.Status = HyCore.ObjectEnum.StatusType.OPEN;
                    netWork.Links.Add(pumpModel);
                }
            }
 
            return netWork;
        }
 
 
 
 
    }
}