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