| | |
| | | using System.Linq; |
| | | using System.Text; |
| | | using System.Threading.Tasks; |
| | | using static System.Runtime.InteropServices.JavaScript.JSType; |
| | | |
| | | namespace DPumpHydr.WinFrmUI.Volute.ViewModel |
| | | { |
| | |
| | | public int StartSectionNumber { get; set; } |
| | | |
| | | public List<double> GaMa1 { get; set; } |
| | | public List<double> GaMa2 |
| | | { |
| | | get; set; |
| | | } |
| | | public List<double> GaMa2{ get; set;} |
| | | public List<double> Area { get; set; } |
| | | |
| | | //æé¢ä¿¡æ¯ |
| | | public List<int> Index { get; set; }//æé¢åºå· 第8æé¢å°±æ¯8 ç¬¬ä¸æé¢å°±æ¯1 |
| | | public List<double> H { get; set; }//é«åº¦ |
| | | public double R_out { get; set; }//å¤å´çåå¾ |
| | | public List<double> R_Left { get; set; }//è§åº¦1边对åºçåè§åå¾ UGä¸R1 |
| | | public List<double> R_Right { get; set; }//è§åº¦2边对åºçåè§åå¾ UGä¸R2 |
| | | public double BaseWidth { get; set; }//åºé¨å®½åº¦ å°±æ¯B3 |
| | | public double BaseCircleRadius { get; set; }//åºé¨ååå¾ å°±æ¯D3/2 |
| | | |
| | | /// <summary> |
| | | /// 计ç®å¹³åæµé |
| | |
| | | var g = 9.81; |
| | | this.V3 = Math.Round(geom_info.K3 * Math.Sqrt(2 * g * hdr_info.Q), 2); |
| | | } |
| | | /// <summary> |
| | | /// 计ç®é¢ç§¯ |
| | | /// </summary> |
| | | /// <param name="hdr_info"></param> |
| | | /// <param name="geom_info"></param> |
| | | /// <param name="v3"></param> |
| | | public void CalcArea(HdrBaseInfo hdr_info, GeomBaseInfo geom_info, double v3) |
| | | { |
| | | this.V3 = v3; |
| | | var area8 = hdr_info.Q * 1000000 / (3600 * v3); |
| | | var area8 = Math.Round(hdr_info.Q * 1000000 / (3600 * v3), 1); |
| | | int i = 0; |
| | | if (this.Area == null) |
| | | { |
| | |
| | | if (geom_info.IsQieYuJiYuan) |
| | | {//éèåäºåºå |
| | | for (i = StartSectionNumber; i < 8; i++) |
| | | Area[i] = area8 * (45 * i - geom_info.FAI0) / (360 - geom_info.FAI0); |
| | | Area[i] = Math.Round(area8 * (45 * i - geom_info.FAI0) / (360 - geom_info.FAI0), 1); |
| | | } |
| | | else |
| | | {//éç¨æ£å¸¸åé¢ |
| | | for (i = StartSectionNumber; i < 8; i++) |
| | | Area[i] = area8 * 45 * i / 360; |
| | | Area[i] = Math.Round(area8 * 45 * i / 360, 1); |
| | | } |
| | | |
| | | if (StartSectionNumber == 2) |
| | |
| | | |
| | | return null; |
| | | } |
| | | /// <summary> |
| | | /// åå§å1-8æé¢åæ° |
| | | /// </summary> |
| | | public void InitialAllParameters(HdrBaseInfo BaseInfo , GeomBaseInfo geom_info ) |
| | | { |
| | | this.Index = new List<int>(10); |
| | | this.H = new List<double>(10); |
| | | this.R_Left = new List<double>(10); |
| | | this.R_Right = new List<double>(10); |
| | | bool isFirst = true; |
| | | for (int i = 0; i < 10; i++) |
| | | { |
| | | this.Index.Add(0); |
| | | this.Index[i] = i; |
| | | this.H.Add(0); |
| | | this.R_Left.Add(0); |
| | | this.R_Right.Add(0); |
| | | if(i == 0 ) |
| | | { |
| | | continue; |
| | | } |
| | | CalcHeightByArea(geom_info, Index[i]); |
| | | } |
| | | for (int i = 8; i > 0; i--) |
| | | { |
| | | CalculateR(BaseInfo, geom_info, Index[i], isFirst); |
| | | if (isFirst) |
| | | { |
| | | isFirst = false; |
| | | } |
| | | } |
| | | |
| | | } |
| | | /// <summary> |
| | | /// æ ¹æ®é¢ç§¯è®¡ç®é«åº¦ |
| | | /// </summary> |
| | | public void CalcHeightByArea(GeomBaseInfo geom_info, int index) |
| | | { |
| | | double a = (Math.Tan(this.GaMa1[index] * Math.PI / 180) + Math.Tan(this.GaMa2[index] * Math.PI / 180)) / 2; |
| | | double b = geom_info.B3; |
| | | |
| | | double c = (90 + this.GaMa2[index]) / 360 * Math.PI * this.R_Left[index] * this.R_Left[index] + (90 + this.GaMa1[index]) / 360 * Math.PI * this.R_Right[index] * this.R_Right[index] |
| | | - this.R_Left[index] * this.R_Left[index] * Math.Tan((45 + this.GaMa2[index] / 2) * Math.PI / 180) - this.R_Right[index] * this.R_Right[index] * Math.Tan((45 + this.GaMa1[index] / 2) * Math.PI / 180) - this.Area[index]; |
| | | double delta = b * b - 4 * a * c; |
| | | if (delta < 0) |
| | | { |
| | | this.H[index] = -1; |
| | | return; |
| | | } |
| | | if (this.ShapeType == eSectionShapeType.ç©å½¢)//ç©å½¢ |
| | | { |
| | | this.H[index] = Math.Round((-c / b), 1) ; |
| | | return ; |
| | | } |
| | | else |
| | | { |
| | | if (delta < 0) |
| | | { |
| | | this.H[index] = -1; |
| | | return; |
| | | } |
| | | this.H[index] = Math.Round((-b + Math.Sqrt(delta)) / (2 * a), 1); |
| | | return ; |
| | | } |
| | | } |
| | | /// <summary> |
| | | /// æé¢åæ°è®¡ç® |
| | | /// </summary> |
| | | private double DecreaseR = 0.5; |
| | | public bool CalculateR(HdrBaseInfo BaseInfo ,GeomBaseInfo geom_info, int index, bool isFirst) |
| | | { |
| | | this.BaseWidth = geom_info.B3; |
| | | this.BaseCircleRadius = geom_info.D3 / 2; |
| | | if (!isFirst) |
| | | { |
| | | this.R_Left[index] = this.R_Left[index+1] - DecreaseR; |
| | | this.R_Right[index] = this.R_Right[index+1] - DecreaseR; |
| | | |
| | | if (this.R_Left[index] > (this.H[index] + 1)) |
| | | this.R_Left[index] = Math.Round(this.H[index] * 0.85 - 1, 0); |
| | | if (this.R_Right[index] > (this.H[index] + 1)) |
| | | this.R_Right[index] = Math.Round(this.H[index] * 0.85 - 1, 0); |
| | | |
| | | if (this.R_Left[index] < 2) |
| | | this.R_Left[index] = 2; |
| | | if (this.R_Right[index] < 2) |
| | | this.R_Right[index] = 2; |
| | | } |
| | | else//æ¯ç¬¬ä¸æ¬¡è®¡ç® |
| | | { |
| | | |
| | | //èµå¼ï¼R1 R2 R3 R4 |
| | | if (this.ShapeType == eSectionShapeType.对称) //typeï¼0ï¼å¯¹ç§°æ¢¯å½¢ |
| | | this.R_Left[index] = Math.Round(geom_info.B3 * 0.55 + 0.5 - 4, 0); |
| | | else if (this.ShapeType == eSectionShapeType.ä¸å¯¹ç§°)//typeï¼1ï¼ä¸å¯¹ç§°æ¢¯å½¢ |
| | | this.R_Left[index] = Math.Round(geom_info.B3 * 0.55 + 0.5 - 4, 0); |
| | | else if (this.ShapeType == eSectionShapeType.ç©å½¢)//typeï¼2ï¼ç©å½¢ |
| | | this.R_Left[index] = Math.Round(geom_info.B3 * 0.4 + 0.5 - 2, 0); |
| | | |
| | | |
| | | if (BaseInfo.IsSXB) |
| | | this.R_Left[index] = Math.Round(this.R_Left[index] / 2, 0); |
| | | //if (DesignMode == YSSnxOpen::DesignMode::AssPawuQnshQw1) |
| | | //{ |
| | | // R_Left = int(R_Left * 0.7); |
| | | //} |
| | | double m_R3 = 0; |
| | | double t = 0; |
| | | if (geom_info.B3 <= 35) |
| | | m_R3 = 5; |
| | | else if (geom_info.B3 <= 60 && geom_info.B3 > 35) |
| | | { |
| | | t = Math.Round(geom_info.B3 * 0.6, 0) - Math.Round(geom_info.B3 * 0.6 / 10.0, 0) * 10; |
| | | if (t <= 2) |
| | | m_R3 = Math.Round(geom_info.B3 * 0.6 / 10.0, 0) * 10; |
| | | else if (t > 2 && t <= 7) |
| | | m_R3 = Math.Round(geom_info.B3 * 0.6 / 10.0, 0) * 10 + 5; |
| | | else if (t > 7) |
| | | m_R3 = Math.Round(geom_info.B3 * 0.6 / 10.0, 0) * 10 + 10; |
| | | } |
| | | else if (geom_info.B3 > 60 && geom_info.B3 <= 90) |
| | | { |
| | | t = Math.Round(geom_info.B3 * 0.9, 0) - Math.Round(geom_info.B3 * 0.9 / 10.0, 0) * 10; |
| | | if (t <= 2) |
| | | m_R3 = Math.Round(geom_info.B3 * 0.9 / 10.0, 0) * 10; |
| | | else if (t > 2 && t <= 7) |
| | | m_R3 = Math.Round(geom_info.B3 * 0.9 / 10.0, 0) * 10 + 5; |
| | | else if (t > 7) |
| | | m_R3 = Math.Round(geom_info.B3 * 0.9 / 10.0, 0) * 10 + 10; |
| | | } |
| | | else if (geom_info.B3 > 90) |
| | | { |
| | | t = Math.Round(geom_info.B3 * 0.3, 0) - Math.Round(geom_info.B3 * 0.3 / 10.0, 0) * 10; |
| | | if (t <= 2) |
| | | m_R3 = Math.Round(geom_info.B3 * 0.3 / 10.0, 0) * 10; |
| | | else if (t > 2 && t <= 7) |
| | | m_R3 = Math.Round(geom_info.B3 * 0.3 / 10.0, 0) * 10 + 5; |
| | | else if (t > 7) |
| | | m_R3 = Math.Round(geom_info.B3 * 0.3 / 10.0, 0) * 10 + 10; |
| | | } |
| | | |
| | | this.R_Right[index] = this.R_Left[index]; |
| | | R_out = 1000.0; |
| | | |
| | | //æªé¢R1 å R4çåå°è§åº¦ DecreaseR |
| | | if (geom_info.B3 < 15) |
| | | { |
| | | DecreaseR = 0.5; |
| | | } |
| | | else if (geom_info.B3 >= 15 && geom_info.B3 < 25) |
| | | { |
| | | DecreaseR = 1; |
| | | } |
| | | else if (geom_info.B3 >= 25 && geom_info.B3 < 45) |
| | | { |
| | | DecreaseR = 1.5; |
| | | } |
| | | else if (geom_info.B3 >= 45) |
| | | { |
| | | DecreaseR = 2; |
| | | } |
| | | |
| | | if (BaseInfo.IsSXB) |
| | | DecreaseR = 1; |
| | | } |
| | | |
| | | return true; |
| | | } |
| | | |
| | | public void EditSingleShape(SectionShapePara sectionShapePara,int index) |
| | | { |
| | | this.GaMa1[index] = sectionShapePara.Gama_Left; |
| | | this.GaMa2[index] = sectionShapePara.Gama_Right; |
| | | this.H[index] = sectionShapePara.H; |
| | | this.R_out = sectionShapePara.R_out; |
| | | this.R_Left[index] = sectionShapePara.R_Left; |
| | | this.R_Right[index] = sectionShapePara.R_Right; |
| | | } |
| | | |
| | | } |
| | | } |