ningshuxia
2024-05-24 7a89858cd237c4fc5d0c952804d35fcaa62be57d
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
117
118
119
120
121
122
123
124
125
126
127
128
using IStation.Common;
 
namespace IStation.Application
{
    internal class TempOutHelper
    {
 
        public static DispatchSolutionOutput GetDispatchSolutionOutput(string flowId)
        {
            var output = new DispatchSolutionOutput();
            output.SolutionId = "temp999";
            output.FlowId = flowId;
            output.Station = new List<StationDispatchOutput>();
 
            var chss1Pumps = new List<PumpDispatchOutput>
            {
                GetPumpDispatchOutput("Pump11", 0, true, 4307.7588, 15.8093, 81.6112, 227.219, 37.6271, 444),
                GetPumpDispatchOutput("Pump12", 1, true, 4024.6057, 15.742, 81.3045, 212.1781, 36.523, 431),
                GetPumpDispatchOutput("Pump13", 2, true, 3941.9631, 16.1554, 82.7758, 209.4876, 36.533, 431.1),
                GetPumpDispatchOutput("Pump17", 6, true, 4130.7578, 15.9835, 82.6751, 217.4493, 36.6102, 432)
            };
 
            // var chss1totalH = 20.7518;
            var chss1totalH = chss1Pumps.Average(x => x.H);
            var chss1totalQ = chss1Pumps.Sum(x => x.Q);
            var chss1totalP = chss1Pumps.Sum(x => x.P);
 
            var chss1totalE = PumpParaHelper.CalculateE(chss1totalQ, chss1totalH, chss1totalP);
            var chss1 = GetStationDispatchOutput(1, chss1totalQ, chss1totalH, chss1totalE, chss1totalP, chss1Pumps);
 
 
            var chss2Pumps = new List<PumpDispatchOutput>
            {
                GetPumpDispatchOutput("Pump22", 1, true, 9589.2422, 15.3166, 75.3, 533.233,33.4343, 331),
                GetPumpDispatchOutput("Pump23", 2, true, 9423.4463, 15.1016, 72.4, 567.1, 34.4242, 340.8),
                GetPumpDispatchOutput("Pump25", 4, true, 10226.1523, 15.0448, 72.4, 563.2, 34.3434, 340),
                GetPumpDispatchOutput("Pump26", 5, true, 10011.1924, 15.1511, 74, 558.6, 33.9394, 336)
            };
 
            var chss2totalH = chss2Pumps.Average(x => x.H);
            var chss2totalQ = chss2Pumps.Sum(x => x.Q);
            var chss2totalP = chss2Pumps.Sum(x => x.P);
 
            var chss2totalE = PumpParaHelper.CalculateE(chss2totalQ, chss2totalH, chss2totalP);
            var chss2 = GetStationDispatchOutput(2, chss2totalQ, chss2totalH, chss2totalE, chss2totalP, chss2Pumps);
 
 
            output.Station.Add(chss1);
            output.Station.Add(chss2);
            return output;
        }
 
        private static StationDispatchOutput GetStationDispatchOutput(int index, double q, double h, double e, double p, List<PumpDispatchOutput> pumps)
        {
            var model = new StationDispatchOutput();
            model.Id = index.ToString();
            model.Index = index;
            model.Q = Math.Round(q, 1);
            model.H = Math.Round(h, 1);
            model.E = Math.Round(e, 1);
            model.P = Math.Round(p, 1);
            model.WP = Math.Round(Calcu_WP(p, q), 1);
            model.UWP = Math.Round(Calcu_UWP(p, q, h), 1);
            model.Pumps = pumps;
            return model;
        }
 
 
        private static PumpDispatchOutput GetPumpDispatchOutput(string id, int index, bool isBp, double q, double h, double e, double p, double fre, double speed)
        {
            var model = new PumpDispatchOutput();
            model.Id = id;
            model.Index = index;
            model.Name = id;
            model.IsBp = isBp;
            model.Q = Math.Round(q, 1);
            model.H = Math.Round(h, 1);
            model.E = Math.Round(e, 1);
            model.P = Math.Round(p, 1);
            model.Frequency = Math.Round(fre, 1);
            model.Speed = Math.Round(speed, 1);
            return model;
        }
 
 
        /// <summary>
        /// 单位水耗 千吨水
        /// </summary>
        private static double Calcu_UWP(double P, double Q, double H)
        {
            if (Q <= 0.001)
                return 0;
            if (H <= 0.00001)
                return 0;
            if (P <= 0.001)
                return 0;
            return P * 1000f / Q / H;
        }
 
        /// <summary>
        /// 单位水耗 千吨水
        /// </summary>
        private static double Calcu_UWP(double P, double Q, double inletPress, double outletPress)
        {
            double H = (outletPress - inletPress) * 102;
            if (Q <= 0.001)
                return 0;
            if (H <= 0.00001)
                return 0;
            if (P <= 0.001)
                return 0;
            return P * 1000f / Q / H;
        }
 
        /// <summary>
        /// 单位水耗
        /// </summary>
        private static double Calcu_WP(double P, double Q)
        {
            if (Q <= 0.001)
                return 0;
 
            if (P <= 0.001)
                return 0;
            return P * 1000f / Q;
        }
    }
}