| | |
| | | /// <returns>能量 w</returns> |
| | | public static double CalcuEnergy(double flow, double head) |
| | | { |
| | | var energy = flow * head; |
| | | var energy = Math.Abs(flow * head); |
| | | energy = energy * ConstParas.WaterDensity * ConstParas.g / 3600; |
| | | return energy; |
| | | } |
| | | |
| | | //public double CalculateFlowRateHW(double C, double diameter_mm, double headLoss_m, double length_m) |
| | | //{ |
| | | // // 单位转换:直径 mm → m |
| | | // double D = diameter_mm / 1000.0; |
| | | |
| | | // // 计算水力坡度 S = h_f / L |
| | | // double S = headLoss_m / length_m; |
| | | |
| | | // // 海曾-威廉公式计算流量 (m³/s) |
| | | // double Q = 0.2785 * C * Math.Pow(D, 2.63) * Math.Pow(S, 0.54); |
| | | |
| | | // return Q; |
| | | //} |
| | | |
| | | } |
| | | } |
| | |
| | | return allLinkList?.ToDictionary(x => x.Id); |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取最小高程 |
| | | /// </summary> |
| | | public double GetMinElev() |
| | | { |
| | | return default; |
| | | var allNodeList = GetAllNodes(); |
| | | if (allNodeList == null || allNodeList.Count < 1) |
| | | { |
| | | return default; |
| | | } |
| | | var minElev = allNodeList.Min(x => x.GetElev()); |
| | | return minElev; |
| | | } |
| | | |
| | | } |
| | |
| | | |
| | | #region 最小高程 |
| | | |
| | | //获取最小高程 |
| | | double minElev = double.MaxValue; |
| | | foreach (var nodeDict in allNodeDict) |
| | | { |
| | | var node = nodeDict.Value; |
| | | if (node is Junction junction) |
| | | { |
| | | minElev = Math.Min(minElev, junction.Elev); |
| | | } |
| | | else if (node is Reservoir reservoir) |
| | | { |
| | | |
| | | } |
| | | else if (node is Tank tank) |
| | | { |
| | | minElev = Math.Min(minElev, tank.PoolElev); |
| | | } |
| | | } |
| | | double minElev = nw.GetMinElev(); |
| | | |
| | | #endregion |
| | | |
| | |
| | | { |
| | | Id = calcuNode.Id, |
| | | EnergyType = eEnergyType.Input, |
| | | EnergyPower = CalcuHelper.CalcuEnergy(-calcuNode.Demand, calcuNode.Head - minElev) |
| | | EnergyPower = CalcuHelper.CalcuEnergy(calcuNode.Demand, calcuNode.Head - minElev) |
| | | }; |
| | | vmList.Add(vm); |
| | | allNodeEnergyDict.Add(calcuNode.Id, new List<EnergyPoint>() { vm }); |