namespace IStation.Algorithm
{
///
/// 调度分析辅助类 Model
///
public partial class AnalysisHelper
{
///
/// 分析泵
///
public class AnaPump
{
///
///
///
public AnaPump() { }
///
///
///
///
public AnaPump(Model.Pump rhs)
{
this.Flag = rhs.Flag;
this.Name = rhs.Name;
this.Code = rhs.Code;
this.IsBp = rhs.IsBp;
this.Qr = rhs.Qr;
this.Hr = rhs.Hr;
this.Nr = rhs.Nr;
this.Pr = rhs.Pr;
this.Er = rhs.Er;
if (rhs.CurveQH != null && rhs.CurveQP != null)
{
this.CurveQH = rhs.CurveQH.Clone();
this.CurveQP = rhs.CurveQP.Clone();
this.AllowCalc = true;
}
this.CalcFrequencyItems(50, 50, 50, 0.1);
}
///
///
///
///
///
///
///
///
///
public AnaPump(Model.Pump rhs, double freDef, double freMin, double freMax, double freSpace, Dictionary fre_head_diff_avg_dict = null) : this(rhs)
{
this.CalcFrequencyItems(freDef, freMin, freMax, freSpace, fre_head_diff_avg_dict);
}
///
///
///
public int Flag { get; set; }
///
///
///
public string Code { get; set; }
///
///
///
public string Name { get; set; }
///
///
///
public double Qr { get; set; }
///
///
///
public double Hr { get; set; }
///
///
///
public double Nr { get; set; }
///
///
///
public double Pr { get; set; }
///
///
///
public double Er { get; set; }
///
///
///
public bool IsBp { get; set; }
///
///
///
public Curve.CurveExpress CurveQH { get; set; }
///
///
///
public Curve.CurveExpress CurveQP { get; set; }
///
///
///
public List AnaFrequencyItems { get; set; }
///
///
///
public bool AllowCalc { get; set; }
void CalcFrequencyItems(double freDef, double fre_min, double fre_max, double fre_space, Dictionary fre_head_diff_avg_dict = null)
{
if (!this.AllowCalc)
return;
this.AnaFrequencyItems = new List();
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 = (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);
}
}
}
///
/// 分析泵变频项
///
public class AnaPumpFre
{
///
///
///
public double Frequency { get; set; }
///
///
///
public Curve.CurveExpress CurveQH { get; set; }
///
///
///
public Curve.CurveExpress CurveQP { get; set; }
}
}
}