using System.Collections.Generic;
using System.Linq;
namespace IStation.Model
{
public partial class PumpCurve
{
///
/// 通过 频率 计算流量扬程曲线表达式
///
public CurveExpress CalcuCurveQhByHz(double hz)
{
if (CurveInfo == null || CurveInfo.CurveQH == null)
return default;
var points = CurveInfo.CurveQH.GetFitPoints(20);
double f_ratio = hz / 50.0;
var pts = points.Select(x => new CurvePoint(x.X * f_ratio, x.Y * f_ratio * f_ratio)).ToList();
return new CurveExpress(pts, CurveInfo.CurveQH.FitType);
}
///
/// 通过 频率 计算流量功率曲线表达式
///
public CurveExpress CalcuCurveQpByHz(double hz)
{
if (CurveInfo == null || CurveInfo.CurveQP == null)
return default;
var points = CurveInfo.CurveQP.GetFitPoints(20);
double f_ratio = hz / 50.0;
var pts = points.Select(x => new CurvePoint(x.X * f_ratio, x.Y * f_ratio * f_ratio * f_ratio)).ToList();
return new CurveExpress(pts, CurveInfo.CurveQP.FitType);
}
///
/// 通过 频率 计算流量功率曲线表达式
///
public CurveExpress CalcuCurveQeByHz(double hz)
{
if (CurveInfo == null || CurveInfo.CurveQE == null)
return default;
var points = CurveInfo.CurveQE.GetFitPoints(20);
double f_ratio = hz / 50.0;
var pts = points.Select(x => new CurvePoint(x.X * f_ratio, x.Y)).ToList();
return new CurveExpress(pts, CurveInfo.CurveQE.FitType);
}
///
/// 通过 流量 获取 拟合功率
///
public double GetFitP(double hz, double q)
{
var express = CalcuCurveQpByHz(hz);
return FitCurveHelper.GetFitPointY(express, q);
}
///
/// 获取拟合点
///
public List GetFitPoints(eFeatCurveType featCurveType, int pointNumber = 20)
{
List list = null;
switch (featCurveType)
{
case eFeatCurveType.QH:
{
if (CurveInfo != null && CurveInfo.CurveQH != null)
{
list = CurveInfo.CurveQH.GetFitPoints(pointNumber);
}
}
break;
case eFeatCurveType.QP:
{
if (CurveInfo != null && CurveInfo.CurveQP != null)
{
list = CurveInfo.CurveQP.GetFitPoints(pointNumber);
}
}
break;
case eFeatCurveType.QE:
{
if (CurveInfo != null && CurveInfo.CurveQE != null)
{
list = CurveInfo.CurveQE.GetFitPoints(pointNumber);
}
}
break;
default: break;
}
return list;
}
}
}