Shuxia Ning
2024-11-25 d4898c5d7e1bbbbba384a0e29f29c066d6f502a7
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
129
130
131
132
133
134
using System.Text;
 
namespace Yw.EPAnet
{
    ///// <summary>
    ///// 管网计算拓展
    ///// </summary>
    //public static class NetworkCalcuMinorExtensions
    //{
    //    /// <summary>
    //    /// 计算
    //    /// </summary>
    //    public static CalcuResult CalcuMinorLoss(this Network network)
    //    {
    //        var minorResult = new CalcuResult();
        
 
    //        //Null验证
    //        if (network == null)
    //        {
    //            minorResult.Succeed = false;
    //            return minorResult;
    //        }
 
    //        using (var calcResult = network.Calcu(false))
    //        {
    //            network.GetAllLinks().ForEach(link =>
    //            {
    //                if (calcResult.LinkDict.ContainsKey(link.Id))
    //                {
    //                    var resultLink = calcResult.LinkDict[link.Id];
    //                    link.Flow = resultLink.Flow;
    //                }
    //            });
    //        }
 
 
                
      
    //        network.GetAllNodes().ForEach(n =>
    //        {
    //            if (n is JunctionWT wt)
    //            {
    //                if (wt.PrevLinks.Count != 1 || wt.NextLinks.Count != 1) return;
    //                var preLink = minorResult.GetLink(wt.PrevLinks[0].Id);
    //                var nextLink = minorResult.GetLink(wt.NextLinks[0].Id);
    //                preLink.EndNodeMinorlossCoff = wt.MinorLoss_WT / 2;
    //                nextLink.StartNodeMinorlossCoff = wt.MinorLoss_WT / 2;
    //            }
    //            else if (n is Junction3T j3t)
    //            {
    //                if (j3t.PrevLinks.Count + j3t.NextLinks.Count != 3 || j3t.PrevLinks.Count==0 || j3t.NextLinks.Count==0) return;
    //                List<ILink> branchlinks = new List<ILink>();
    //                ILink mainlink = null;
    //                if (j3t.PrevLinks.Count==1)//一进,二出
    //                {
    //                    mainlink = j3t.PrevLinks[0];
    //                    branchlinks= j3t.NextLinks;
    //                }
    //                else if(j3t.NextLinks.Count == 1)//一出,N进
    //                {
    //                    mainlink = j3t.NextLinks[0];
    //                    branchlinks = j3t.PrevLinks;
    //                }
    //                if (branchlinks.Count==2)
    //                {
    //                    var pipe0 = mainlink as Pipe;
    //                    var pipe1 = branchlinks[0] as Pipe;
    //                    var pipe2 = branchlinks[1] as Pipe;
    //                    string Id1 = pipe1.Diameter == pipe0.Diameter ? pipe1.Id : pipe2.Id;
    //                    string Id2 = pipe1.Diameter == pipe0.Diameter ? pipe2.Id : pipe1.Id;
    //                    var preLink = minorResult.GetLink(mainlink.Id);
    //                    var nextLink1 = minorResult.GetLink(Id1);
    //                    var nextLink2 = minorResult.GetLink(Id2);
    //                    nextLink1.StartNodeMinorlossCoff = j3t.MinorLoss_StraightThrough;
    //                    nextLink2.StartNodeMinorlossCoff = j3t.MinorLoss_BranchThrough;
    //                }
    //                else if (branchlinks.Count==1)
    //                {
    //                    var pipe0 = mainlink as Pipe;
    //                    var pipe1 = branchlinks[0] as Pipe;
    //                    string Id1 = pipe1.Id;
    //                    var preLink = minorResult.GetLink(mainlink.Id);
    //                    var nextLink1 = minorResult.GetLink(Id1);
    //                    nextLink1.StartNodeMinorlossCoff = pipe1.Diameter == pipe0.Diameter? j3t.MinorLoss_StraightThrough: j3t.MinorLoss_BranchThrough;
    //                }
                    
    //            }
    //            else if (n is Junction4T j4t)
    //            {
    //                if (j4t.PrevLinks.Count + j4t.NextLinks.Count != 4 ) return;
    //                List<ILink> branchlinks = new List<ILink>();
           
    //                if (j4t.PrevLinks.Count == 1)//一进,二出
    //                {
                        
    //                    branchlinks = j4t.NextLinks;
    //                }
    //                else if (j4t.NextLinks.Count == 1)//一出,N进
    //                {
                        
    //                    branchlinks = j4t.PrevLinks;
    //                }
    //                else if (j4t.NextLinks.Count==2)
    //                {
    //                    branchlinks = j4t.NextLinks;
    //                }
    //                branchlinks.ForEach(link =>
    //                {
    //                    var pipe = link as Pipe;
    //                    var preLink = minorResult.GetLink(link.Id);
    //                    preLink.EndNodeMinorlossCoff = j4t.MinorLoss_Crossing;
    //                });
    //            }
    //        });
            
 
 
    //        return minorResult;
    //    }
 
    //    public static Link GetLink(this CalcuResult result, string linkId)
    //    {
    //        if (!result.LinkDict.ContainsKey(linkId))
    //        {
    //            result.LinkDict.Add(linkId, new Link() { MinorlossCoff=0});
 
 
    //        }
    //        return result.LinkDict[linkId] as Link;
    //    }
    //}
 
}