namespace Yw.Curve
{
///
/// 泵特性曲线辅助类
///
public class PumpFeatHelper
{
///
/// 通过 频率 计算流量扬程曲线表达式
///
public static CurveExpress CalcuCurveQhByHz(List pts, eFitType fit, double hz)
{
if (pts == null || pts.Count < 1)
{
return default;
}
var fitPow = FitHelper.GetFitPow(fit);
if (pts.Count < fitPow + 1)
{
return default;
}
double f_ratio = hz / 50.0;
var list = pts.Select(x => new CurvePoint(x.X * f_ratio, x.Y * f_ratio * f_ratio)).ToList();
return FitHelper.BuildCurveExpress(list, fit);
}
///
/// 通过 频率 计算流量扬程曲线表达式
///
public static CurveExpress CalcuCurveQhByHz(CurveExpress express, double hz, int? pointNumber = null)
{
if (!pointNumber.HasValue)
{
pointNumber = Settings.CurveParasHelper.Curve.PointNumber;
}
var pts = express.GetFitPoints(pointNumber.Value);
return CalcuCurveQhByHz(pts, express.FitType, hz);
}
///
/// 通过 频率 计算流量功率曲线表达式
///
public static CurveExpress CalcuCurveQpByHz(List pts, eFitType fit, double hz)
{
if (pts == null || pts.Count < 1)
{
return default;
}
var fitPow = FitHelper.GetFitPow(fit);
if (pts.Count < fitPow + 1)
{
return default;
}
double f_ratio = hz / 50.0;
var list = pts.Select(x => new CurvePoint(x.X * f_ratio, x.Y * f_ratio * f_ratio * f_ratio)).ToList();
return FitHelper.BuildCurveExpress(list, fit);
}
///
/// 通过 频率 计算流量功率曲线表达式
///
public static CurveExpress CalcuCurveQpByHz(CurveExpress express, double hz, int? pointNumber = null)
{
if (!pointNumber.HasValue)
{
pointNumber = Settings.CurveParasHelper.Curve.PointNumber;
}
var pts = express.GetFitPoints(pointNumber.Value);
return CalcuCurveQpByHz(pts, express.FitType, hz);
}
}
}