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; } } }