| | |
| | | { |
| | | InitializeComponent(); |
| | | this.Text = "并联分析"; |
| | | this.WindowState = FormWindowState.Maximized; |
| | | this.IconOptions.Icon = Yw.WinFrmUI.GlobalParas.AppIcon; |
| | | |
| | | this.pumpSerialParallelChart.LineVisible = true; |
| | | this.pumpParallelInfoCtrl1.SetEvent += (id, qh, qe, qp) => |
| | | { |
| | | var list = this.pumpParallelInfoCtrl1.GetRunList(); |
| | | SetParallel(list); |
| | | }; |
| | | |
| | | this.pumpParallelInfoCtrl1.SetInfoEvent += (id, name, color) => |
| | | { |
| | | this.pumpSerialParallelChart.SetInfo(id, name, color); |
| | |
| | | { |
| | | this.pumpParallelInfoCtrl1.SetQueryInfo(id, pt); |
| | | }; |
| | | this.pumpParallelInfoCtrl1.SaveEvent += () => |
| | | this.pumpParallelInfoCtrl1.ResetEvent += () => |
| | | { |
| | | var list = this.pumpParallelInfoCtrl1.GetRunList(); |
| | | SetParallel(list); |
| | | }; |
| | | this.pumpParallelInfoCtrl1.SaveEvent += () => |
| | | { |
| | | var run_list = this.pumpParallelInfoCtrl1.GetRunList(); |
| | | var list = new List<XhsSingleResultViewModel>(); |
| | |
| | | list.Add(vm); |
| | | } |
| | | } |
| | | this.ReloadDataEvent?.Invoke(list); |
| | | var bol = this.ReloadDataEvent?.Invoke(list); |
| | | if (bol.HasValue && bol.Value) |
| | | { |
| | | this.Close(); |
| | | } |
| | | }; |
| | | } |
| | | |
| | | private string _parallel_id = "parallel"; |
| | | public event Func<List<XhsSingleResultViewModel>, Task<bool>> ReloadDataEvent; |
| | | private string _parallel_id = "parallel"; |
| | | public event Func<List<XhsSingleResultViewModel>, bool> ReloadDataEvent; |
| | | |
| | | |
| | | /// <summary> |
| | |
| | | } |
| | | |
| | | var vm = new Yw.WinFrmUI.Phart.PumpSerialParallelInfoViewModel(); |
| | | vm.ID= x.ID; |
| | | vm.ID = x.ID; |
| | | vm.Id = x.ID.ToString(); |
| | | vm.Name = x.Name; |
| | | vm.Code = x.Code; |
| | |
| | | vm_list.Add(vm); |
| | | |
| | | } |
| | | |
| | | |
| | | this.pumpParallelInfoCtrl1.SetBindingData(vm_list, null); |
| | | var run_list = this.pumpParallelInfoCtrl1.GetRunList(); |
| | | var run_list = this.pumpParallelInfoCtrl1.GetRunList(); |
| | | var msg = SetParallel(run_list); |
| | | if (!string.IsNullOrEmpty(msg)) |
| | | { |
| | | //TipFormHelper.ShowWarn(msg); |
| | | return msg; |
| | | } |
| | | return string.Empty; |
| | | } |
| | | |
| | | |
| | | private string SetParallel(List<Yw.WinFrmUI.Phart.PumpSerialParallelInfoViewModel> list) |
| | | { |
| | | this.pumpSerialParallelChart.Delete(); |
| | | if (list == null || !list.Any()) |
| | | { |
| | | return "无数据!"; |
| | | } |
| | | } |
| | | if (list.Count < 2) |
| | | { |
| | | CalcEqPoint(list); |
| | | this.pumpSerialParallelChart.Add(list); |
| | | Set(list); |
| | | return "无法计算 并联曲线!"; |
| | | } |
| | | var msg = string.Empty; |
| | | var vm_parallel = CalcParallel(list); |
| | | if (vm_parallel != null) |
| | | { |
| | | list.Add(vm_parallel); |
| | | CalcEqPoint(list); |
| | | this.pumpSerialParallelChart.Add(list); |
| | | return string.Empty; |
| | | } |
| | | else |
| | | { |
| | | return "无法计算 并联曲线!"; |
| | | msg = "无法计算 并联曲线!"; |
| | | } |
| | | Set(list); |
| | | return msg; |
| | | } |
| | | |
| | | |
| | |
| | | return default; |
| | | } |
| | | |
| | | Yw.Geometry.CubicSpline2d qh = new Yw.Geometry.CubicSpline2d(calc_pt_qh_list); |
| | | Yw.Geometry.CubicSpline2d qe = new Yw.Geometry.CubicSpline2d(calc_pt_qe_list); |
| | | Yw.Geometry.CubicSpline2d qp = new Yw.Geometry.CubicSpline2d(calc_pt_qp_list); |
| | | |
| | | var total_flow = list.Sum(x => x.Qh.MaxX); |
| | | var parallel_flow = calc_pt_qh_list.Max(x => x.X); |
| | | if (total_flow > parallel_flow * 1.05) |
| | | { |
| | | var ex_ratio = total_flow / parallel_flow; |
| | | if (qh != null) |
| | | qh.MaxX = qh.MaxX * ex_ratio; |
| | | if (qe != null) |
| | | qe.MaxX = qe.MaxX * ex_ratio; |
| | | if (qp != null) |
| | | qp.MaxX = qp.MaxX * ex_ratio; |
| | | } |
| | | |
| | | |
| | | |
| | | 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.Qh = qh; |
| | | vm_sp.Qe = qe; |
| | | vm_sp.Qp = qp; |
| | | vm_sp.QhCalc = vm_sp.Qh; |
| | | vm_sp.QeCalc = vm_sp.Qe; |
| | | vm_sp.QpCalc = vm_sp.Qp; |
| | |
| | | vm_sp.IsBp = true; |
| | | vm_sp.IsDefault = true; |
| | | |
| | | var pt_list = vm_sp.Qp.GetPointList(12); |
| | | return vm_sp; |
| | | |
| | | } |
| | | |
| | | private void CalcEqPoint(List<Yw.WinFrmUI.Phart.PumpSerialParallelInfoViewModel> list) |
| | | private void Set(List<Yw.WinFrmUI.Phart.PumpSerialParallelInfoViewModel> list) |
| | | { |
| | | if (list == null || !list.Any()) |
| | | { |
| | | this.pumpSerialParallelChart.InitialChartData(); |
| | | return; |
| | | } |
| | | |
| | | double total_flow = list.Sum(x => x.CalcuQ ?? 0); |
| | | double total_head = list.Average(x => x.CalcuH ?? 0); |
| | | this.pumpParallelInfoCtrl1.SetDesignPoint(total_flow, total_head); |
| | | this.pumpSerialParallelChart.Add(list); |
| | | var run_list = list.Where(x => x.RunStatus).ToList(); |
| | | if (run_list != null && run_list.Any()) |
| | | { |
| | | double total_flow = run_list.Sum(x => x.CalcuQ ?? 0); |
| | | double total_head = run_list.Average(x => x.CalcuH ?? 0); |
| | | 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); |
| | | } |
| | | |
| | | } |
| | | |
| | | |