| | |
| | | { |
| | | if (link is Pipe p) |
| | | { |
| | | |
| | | var cStartnode = (dictLinks[link.Id].Flow > 0 ? link.StartNode : link.EndNode) as Node; |
| | | var cEndnode = (dictLinks[link.Id].Flow > 0 ? link.EndNode : link.StartNode) as Node; |
| | | var endNodeMinorlossCoff = p.EndMinorLossCoeff; |
| | | var startNodeMinorlossCoff = p.StartMinorLossCoeff; |
| | | //根据p.diameter和p.flow计算流速 |
| | | double velocity = dictLinks[p.Id].Flow / (Math.PI * Math.Pow(p.Diameter / 2, 2)); |
| | | var calcLink = dictLinks[link.Id]; |
| | | var cStartnode = (calcLink.Flow > 0 ? link.StartNode : link.EndNode) as Node; |
| | | var cEndnode = (calcLink.Flow > 0 ? link.EndNode : link.StartNode) as Node; |
| | | var flow = Math.Abs(dictLinks[p.Id].Flow); |
| | | if (p.StartMinorLossCoeff != 0) |
| | | |
| | | if (calcLink.StartMinorLoss!=0) |
| | | { |
| | | //根据流速计算局部水头损失 |
| | | double headminorloss1 = p.StartMinorLossCoeff * Math.Pow(velocity, 2) / 2 / 9.81; |
| | | double headminorloss1 = calcLink.StartMinorLoss; |
| | | double energypower = GetEnergyPowerByQH(flow, headminorloss1); |
| | | var Id = cStartnode.Id; |
| | | if (!result.LossEnergy.ContainsKey(Id)) result.LossEnergy.Add(Id, new List<EnergyPoint>()); |
| | |
| | | points.Add(point); |
| | | } |
| | | |
| | | if (p.EndMinorLossCoeff != 0) |
| | | |
| | | |
| | | if (calcLink.EndMinorLoss != 0) |
| | | { |
| | | //根据流速计算局部水头损失 |
| | | double headminorloss2 = p.EndMinorLossCoeff * Math.Pow(velocity, 2) / 2 / 9.81; |
| | | double headminorloss2 = calcLink.EndMinorLoss; |
| | | double energypower = GetEnergyPowerByQH(flow, headminorloss2); |
| | | var Id = cEndnode.Id; |
| | | if (!result.LossEnergy.ContainsKey(Id)) result.LossEnergy.Add(Id, new List<EnergyPoint>()); |
| | |
| | | points.Add(point); |
| | | } |
| | | |
| | | double pipeheadminorloss = 0; |
| | | if (p.MinorLossCoeff != 0) |
| | | { |
| | | //根据流速计算局部水头损失 |
| | | pipeheadminorloss = p.MinorLossCoeff * Math.Pow(velocity, 2) / 2 / 9.81; |
| | | double energypower = GetEnergyPowerByQH(flow, pipeheadminorloss); |
| | | var Id = p.Id; |
| | | if (!result.LossEnergy.ContainsKey(Id)) result.LossEnergy.Add(Id, new List<EnergyPoint>()); |
| | | var energypoint = new EnergyPoint |
| | | { |
| | | Id = Id, |
| | | EnergyType = eEnergyType.MinorLoss, |
| | | EnergyPower = energypower, |
| | | |
| | | }; |
| | | result.LossEnergy[Id].Add(energypoint); |
| | | result.MinorLossTotalEnerge += energypower; |
| | | points.Add(energypoint); |
| | | } |
| | | |
| | | //var pipeheadminorloss =calcLink.StartMinorLoss + calcLink.EndMinorLoss; |
| | | |
| | | { |
| | | double headlossFriction = Math.Abs(dictLinks[p.Id].HeadLoss) - pipeheadminorloss; |
| | | double headlossFriction = Math.Abs(dictLinks[p.Id].HeadLoss);// Math.Abs(dictLinks[p.Id].HeadLoss) - pipeheadminorloss; |
| | | double energypower = GetEnergyPowerByQH(flow, headlossFriction); |
| | | var Id = p.Id; |
| | | if (!result.LossEnergy.ContainsKey(Id)) result.LossEnergy.Add(Id, new List<EnergyPoint>()); |