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