lixiaojun
2025-03-11 7637ab417835160b2ea91f6ca3164aa876a63f8c
能耗分析bug修复
已修改3个文件
46 ■■■■ 文件已修改
Yw.Epanet.Calcu.Core/00-core/CalcuHelper.cs 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Yw.Epanet.Calcu.Core/01-network/00-core/Network_Method.cs 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Yw.Epanet.Calcu.Core/06-energy/NetworkAnalyseEnergyExtensions.cs 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Yw.Epanet.Calcu.Core/00-core/CalcuHelper.cs
@@ -48,24 +48,12 @@
        /// <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;
        //}
    }
}
Yw.Epanet.Calcu.Core/01-network/00-core/Network_Method.cs
@@ -233,9 +233,18 @@
            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;
        }
    }
Yw.Epanet.Calcu.Core/06-energy/NetworkAnalyseEnergyExtensions.cs
@@ -70,24 +70,7 @@
            #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
@@ -109,7 +92,7 @@
                    {
                        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 });