| | |
| | | this.CalcFrequencyItems(50, 50, 50, 0.1); |
| | | } |
| | | |
| | | |
| | | /// <summary> |
| | | /// |
| | | /// </summary> |
| | |
| | | /// <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> |
| | |
| | | /// </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); |
| | | } |
| | | } |