duheng
2024-11-05 21dd2ae9704c484d5d75b2ed980e5402505da7dc
Hydro/Yw.EPAnet.Calcu.Core/03-calcu/NetworkCalcuExtensions.cs
@@ -10,20 +10,36 @@
        /// <summary>
        /// 计算
        /// </summary>
        public static CalcuResult Calcu(this Network network)
        public static CalcuResult Calcu(this Network network,bool MinorLossPreCalc=true)
        {
            var result = new CalcuResult();
            //Null验证
            if (network == null)
            {
                result.Succeed = false;
                return result;
            }
            string inpString = null;
            if (MinorLossPreCalc)
            {
                CalcuResult minorLossResult = network.CalcuMinorLoss();
                if (!minorLossResult.Succeed)
                {
                    result.Succeed = false;
                    result.FailedList.AddRange(minorLossResult.FailedList);
                    return result;
                }
                inpString = network.ToInpString(minorLossResult);
            }
            else
            {
                inpString = network.ToInpString();
            }
            //获取系统临时文件目录,创建inp临时文件
            var inpFilePath = Path.Combine(Path.GetTempPath(), Guid.NewGuid().ToString("N") + ".inp");
            var inpString = network.ToInpString();
            File.WriteAllText(inpFilePath, inpString);
            //加载管网
@@ -72,7 +88,7 @@
                epanet.getnodeid(i, sb);
                var arr = new string[] { "Head", "Press", "Demand" }; //System.Enum.GetValues(typeof(HydraulicModel.NodeValueType));
                var arrnum = new int[] { 10, 11, 9 };
                var resultNode = new CalcuNode()
                var resultNode = new Node()
                {
                    Id = sb.ToString(),
                };
@@ -95,6 +111,7 @@
                    }
                }
                result.NodeList.Add(resultNode);
                result.NodeDict.Add(resultNode.Id, resultNode);
            }
            for (int i = 1; i <= linkCount; i++)
@@ -103,7 +120,7 @@
                //var arr = System.Enum.GetValues(typeof(HydraulicModel.LinkValueType));
                var arr = new string[] { "Flow", "Velocity", "Headloss" }; //System.Enum.GetValues(typeof(HydraulicModel.NodeValueType));
                var arrnum = new int[] { 8, 9, 10 };
                var resultLink = new CalcuLink()
                var resultLink = new Link()
                {
                    Id = sb.ToString(),
                };
@@ -126,7 +143,12 @@
                    }
                }
                result.LinkList.Add(resultLink);
                result.LinkDict.Add(resultLink.Id, resultLink);
            }
            return result;
        }