| | |
| | | using System.Data; |
| | | using Yw.Geometry; |
| | | using Yw.WinFrmUI.Phart; |
| | | |
| | | namespace HStation.WinFrmUI.PhartRelation |
| | | { |
| | |
| | | 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.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; |
| | |
| | | Set(list); |
| | | this.barInfo.Caption = $"<b><color=red>{msg}</color></b>"; |
| | | return msg; |
| | | |
| | | } |
| | | |
| | | |
| | |
| | | line_name = "并联曲线"; |
| | | calc_bol = helper.CalculateParallel(out calc_pt_qh_list, out calc_pt_qe_list, out calc_pt_qp_list); |
| | | |
| | | if (!calc_bol || calc_pt_qh_list.Count < 3) |
| | | if (!calc_bol || calc_pt_qh_list.Count < 4) |
| | | { |
| | | 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); |
| | | var qp = new Yw.Geometry.CubicSpline2d(calc_pt_qp_list); |
| | | |
| | | |
| | | var vm_sp = new Yw.WinFrmUI.Phart.PumpSerialParallelInfoViewModel(); |
| | | vm_sp.Id = _parallel_id; |
| | | vm_sp.Name = line_name; |
| | | vm_sp.Qh = new Yw.Geometry.CubicSpline2d(calc_pt_qh_list); |
| | | vm_sp.Qe = new Yw.Geometry.CubicSpline2d(calc_pt_qe_list); |
| | | vm_sp.Qp = new Yw.Geometry.CubicSpline2d(calc_pt_qp_list); |
| | | vm_sp.QhCalc = vm_sp.Qh; |
| | | vm_sp.QeCalc = vm_sp.Qe; |
| | | vm_sp.QpCalc = vm_sp.Qp; |
| | | vm_sp.Qh = qh; |
| | | 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 pt_list = vm_sp.Qp.GetPointList(12); |
| | | vm_sp.IsDefault = true; |
| | | return vm_sp; |
| | | |
| | | } |
| | |
| | | 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); |
| | | } |
| | | |
| | | |
| | | } |
| | | |
| | | |