From 049f546f25cabfb5b08e29c54f49d61a544b0395 Mon Sep 17 00:00:00 2001 From: Shuxia Ning <NingShuxia0927@outlook.com> Date: 星期二, 10 九月 2024 10:36:24 +0800 Subject: [PATCH] 升级前备份 --- IStation.Service/08-algorithm/01-analysis/AnalysisHelper_Model.cs | 33 ++++++++++++++++++++++++++------- 1 files changed, 26 insertions(+), 7 deletions(-) diff --git a/IStation.Service/08-algorithm/01-analysis/AnalysisHelper_Model.cs b/IStation.Service/08-algorithm/01-analysis/AnalysisHelper_Model.cs index 474f653..19c3566 100644 --- a/IStation.Service/08-algorithm/01-analysis/AnalysisHelper_Model.cs +++ b/IStation.Service/08-algorithm/01-analysis/AnalysisHelper_Model.cs @@ -40,6 +40,7 @@ this.CalcFrequencyItems(50, 50, 50, 0.1); } + /// <summary> /// /// </summary> @@ -48,9 +49,10 @@ /// <param name="freMin"></param> /// <param name="freMax"></param> /// <param name="freSpace"></param> - public AnaPump(Model.Pump rhs, double freDef, double freMin, double freMax, double freSpace) : this(rhs) + /// <param name="fre_head_diff_avg_dict"></param> + public AnaPump(Model.Pump rhs, double freDef, double freMin, double freMax, double freSpace, Dictionary<double,double?> fre_head_diff_avg_dict = null) : this(rhs) { - this.CalcFrequencyItems(freDef, freMin, freMax, freSpace); + this.CalcFrequencyItems(freDef, freMin, freMax, freSpace, fre_head_diff_avg_dict); } /// <summary> @@ -118,17 +120,34 @@ /// </summary> public bool AllowCalc { get; set; } - void CalcFrequencyItems(double freDef, double freMin, double freMax, double freSpace) + void CalcFrequencyItems(double freDef, double fre_min, double fre_max, double fre_space, Dictionary<double, double?> fre_head_diff_avg_dict = null) { if (!this.AllowCalc) return; this.AnaFrequencyItems = new List<AnaPumpFre>(); - for (double fre = freMax; fre >= freMin; fre -= freSpace) + var exist_dict = fre_head_diff_avg_dict != null && fre_head_diff_avg_dict.Any(); + decimal fre_min_decimal = (decimal)fre_min; + decimal fre_max_decimal = (decimal)fre_max; + decimal fre_space_decimal = (decimal)fre_space; + for (decimal fre_decimal = fre_max_decimal; fre_decimal >= fre_min_decimal; fre_decimal -= fre_space_decimal) { var freItem = new AnaPumpFre(); - freItem.Frequency = Math.Round(fre, 1); - freItem.CurveQH = Curve.PumpCalculateHelper.CalculateSimilarQH(this.CurveQH, freDef, fre); - freItem.CurveQP = Curve.PumpCalculateHelper.CalculateSimilarQP(this.CurveQP, freDef, fre); + freItem.Frequency = (double)Math.Round(fre_decimal, 1); + CurveExpress curve_qh = this.CurveQH; + double fre_double = (double)fre_decimal; + if (exist_dict) + { + if (fre_head_diff_avg_dict.ContainsKey(fre_double)) + { + var head_diff_factor = fre_head_diff_avg_dict[fre_double] ?? 0; + var add_factor_points = this.CurveQH.DefinePoints + .Select(x => new Curve.CurvePoint(x.X, x.Y + head_diff_factor)) + .ToList(); + curve_qh = Curve.FitHelper.BuildCurveExpress(add_factor_points, eFitType.FourM); + } + } + freItem.CurveQH = Curve.PumpCalculateHelper.CalculateSimilarQH(curve_qh, freDef, fre_double); + freItem.CurveQP = Curve.PumpCalculateHelper.CalculateSimilarQP(this.CurveQP, freDef, fre_double); this.AnaFrequencyItems.Add(freItem); } } -- Gitblit v1.9.3