From 09be1b29e4eb5ee484905a84e3cedfdec0b4b484 Mon Sep 17 00:00:00 2001 From: duheng <2784771470@qq.com> Date: 星期二, 12 十一月 2024 17:43:28 +0800 Subject: [PATCH] Merge branch 'master' of http://47.103.154.90:83/r/HStation/XHS.V1.0 --- WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/PumpParallelAnalyDlg.cs | 93 +++++++++++++++++++++++++++------------------- 1 files changed, 55 insertions(+), 38 deletions(-) diff --git a/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/PumpParallelAnalyDlg.cs b/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/PumpParallelAnalyDlg.cs index 8949c90..05c0bb0 100644 --- a/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/PumpParallelAnalyDlg.cs +++ b/WinFrmUI/HStation.WinFrmUI.PhartRelation.Core/PumpParallelAnalyDlg.cs @@ -1,5 +1,6 @@ 锘縰sing System.Data; using Yw.Geometry; +using Yw.WinFrmUI.Phart; namespace HStation.WinFrmUI.PhartRelation { @@ -120,16 +121,55 @@ var qp_pt_list = x.CurveQP.Select(x => new Yw.Geometry.Point2d(x.X, x.Y)).ToList(); vm.Qp = new CubicSpline2d(qp_pt_list); } + vm.CalcuQ = x.CalcuQ; - vm.CalcuH = x.CalcuH; + vm.CalcuH = x.CalcuH; vm.Color = GetRandomColor(i); vm.Calc(); vm_list.Add(vm); + if (!x.RunStatus) + continue; + + if (!x.CalcuQ.HasValue || !x.CalcuH.HasValue) + continue; + var calc_flow = x.CalcuQ.Value; + var calc_head = x.CalcuH.Value; + + var max_flow = vm.Qh.MaxX; + var max_flow_head = vm.Qh.GetPointY(max_flow); + + var min_flow = vm.Qh.MinX; + var min_flow_head = vm.Qh.GetPointY(min_flow); + + if (max_flow_head < calc_head && min_flow_head > calc_head) + continue; + + var extend_ratio = 1m; + var extend_success = false; + for (decimal num = 0.01m; num <= 5; num += 0.01m) + { + extend_ratio += num; + var ex_pt_list = qh_pt_list.GetExpandFitPointList((double)extend_ratio); + var ex_x_array = ex_pt_list.GetInterPointsX(calc_head); + if (ex_x_array != null && ex_x_array.Any()) + { + extend_success = true; + vm.ExtendRatio = Math.Round((double)extend_ratio * 100, 1); + vm.Calc(); + break; + } + } + if (!extend_success) + { + + } } + this.pumpParallelInfoCtrl1.SetBindingData(vm_list, null); var run_list = this.pumpParallelInfoCtrl1.GetRunList(); - var msg = SetParallel(run_list); + var msg = SetParallel(run_list); + this.pumpSerialParallelChart.SetQeVisible(false); if (!string.IsNullOrEmpty(msg)) { return msg; @@ -168,6 +208,7 @@ Set(list); this.barInfo.Caption = $"<b><color=red>{msg}</color></b>"; return msg; + } @@ -193,6 +234,8 @@ { return default; } + double total_flow = list.Sum(x => x.CalcuQ ?? 0); + double total_head = list.Average(x => x.CalcuH ?? 0); var qh = new Yw.Geometry.CubicSpline2d(calc_pt_qh_list); var qe = new Yw.Geometry.CubicSpline2d(calc_pt_qe_list); @@ -206,43 +249,17 @@ vm_sp.Qe = qe; vm_sp.Qp = qp; + vm_sp.QhCalc = qh; + vm_sp.QeCalc = qe; + vm_sp.QpCalc = qp; + + vm_sp.CalcuH = total_head; + vm_sp.CalcuQ = total_flow ; + vm_sp.Color = Color.Black; vm_sp.IsBp = true; - vm_sp.IsDefault = true; - - var total_flow = list.Sum(x => x.Qh.MaxX); - var parallel_flow = calc_pt_qh_list.Max(x => x.X); - double extend_ratio = 1; - if (total_flow > parallel_flow * 1.05) - { - extend_ratio = total_flow / parallel_flow; - extend_ratio = Math.Round(extend_ratio, 1); - if (qh != null) - { - var ex_pt_list = qh.GetPointList(); - var ex_qh = new Yw.Geometry.CubicSpline2d(ex_pt_list); - ex_qh.MaxX = ex_qh.MaxX * extend_ratio; - vm_sp.QhCalc = ex_qh; - } - - if (qe != null) - { - var ex_pt_list = qe.GetPointList(); - var ex_qe = new Yw.Geometry.CubicSpline2d(ex_pt_list); - ex_qe.MaxX = ex_qe.MaxX * extend_ratio; - vm_sp.QeCalc = ex_qe; - } - if (qp != null) - { - var ex_pt_list = qp.GetPointList(); - var ex_qp = new Yw.Geometry.CubicSpline2d(ex_pt_list); - ex_qp.MaxX = ex_qp.MaxX * extend_ratio; - vm_sp.QpCalc = ex_qp; - } - } - vm_sp.ExtendFlow = qh.MaxX; - vm_sp.ExtendRatio = extend_ratio; + vm_sp.IsDefault = true; return vm_sp; } @@ -264,9 +281,9 @@ total_flow = Math.Round(total_flow, 1); total_head = Math.Round(total_head, 1); this.pumpParallelInfoCtrl1.SetDesignPoint(total_flow, total_head); - this.pumpSerialParallelChart.CalcWorkPointByQ(total_flow); + this.pumpSerialParallelChart.CalcWorkPointByQ(total_flow); } - + } -- Gitblit v1.9.3