public static float Calculate_Resindex() { float T_demand_carp_h_eksi_hstar = 0; float T_demand_carp_Hdesign = 0; float[] Hdesignlar = NodeOp.Get_Hdesign(); float[] Elevler = NodeOp.Get_NodeElev(); float[] Demandler = NodeOp.Get_NodeDemand(); float[] Pressurelar = NodeOp.Get_Pressure(); float[] h_eksi_hstar = new float[NodeOp.Get_numofNode()]; float[] demand_carp_h_eksi_hstar = new float[NodeOp.Get_numofNode()]; float[] demand_carp_Hdesign = new float[NodeOp.Get_numofNode()]; for (int i = 0; i < NodeOp.Get_numofNode(); i++) { UnsafeNativeMethods.ENgetnodetype(i + 1, out NodeType kontrol); if (kontrol.ToString() != ReservoirOp.ChkNodeType)//reservuar değilse { if (Demandler[i] > 0) { h_eksi_hstar[i] = Pressurelar[i] - Sabitler.MinHead; demand_carp_h_eksi_hstar[i] = Demandler[i] * h_eksi_hstar[i]; T_demand_carp_h_eksi_hstar = T_demand_carp_h_eksi_hstar + demand_carp_h_eksi_hstar[i]; demand_carp_Hdesign[i] = Demandler[i] * Hdesignlar[i]; T_demand_carp_Hdesign = T_demand_carp_Hdesign + demand_carp_Hdesign[i]; } } } double ResHesaplanmis = (T_demand_carp_h_eksi_hstar) / (ReservoirOp.Calculate_TotalPowerofSystem() - T_demand_carp_Hdesign); double rounded = Math.Round(ResHesaplanmis, 8); return((float)rounded); }
public static float[] Get_ResElevations() { for (int i = 0; i < NodeOp.Get_numofNode(); i++) { UnsafeNativeMethods.ENgetnodetype(i + 1, out NodeType kontrol); if (kontrol.ToString() == ChkNodeType) { UnsafeNativeMethods.ENgetnodevalue(i + 1, NodeValue.Head, out float ResHead); if (ResHead > 0) { if (RezKotlari.ContainsKey(i)) { //null } else { RezKotlari.Add(i, ResHead); } } } } float[] ResNodeElevations = RezKotlari.Select(z => z.Value).ToArray(); //float[] ResNodeElevations = RezKotlari.ToArray(); return(ResNodeElevations); }
public static float[] Get_ResNodeDischarges() { for (int i = 0; i < NodeOp.Get_numofNode(); i++) { UnsafeNativeMethods.ENgetnodetype(i + 1, out NodeType kontrol); if (kontrol.ToString() == ChkNodeType) { UnsafeNativeMethods.ENgetnodevalue(i + 1, NodeValue.Head, out float ResHead); UnsafeNativeMethods.ENgetnodevalue(i + 1, NodeValue.Demand, out float ResDischarge); if (ResHead > 0) { if (Rezbosaltim.ContainsKey(i)) { //null } else { Rezbosaltim.Add(i, Math.Abs(ResDischarge)); } } } } float[] ResNodeDischarges = Rezbosaltim.Select(z => z.Value).ToArray(); return(ResNodeDischarges); }
public static float Calculate_Failureindex() { float[] minDeger = new float[NodeOp.Get_numofNode()]; float[] Pressurelar = NodeOp.Get_Pressure(); for (int i = 0; i < NodeOp.Get_numofNode(); i++) { UnsafeNativeMethods.ENgetnodetype(i + 1, out NodeType kontrol); if (kontrol.ToString() != ReservoirOp.ChkNodeType)//reservuar control { minDeger[i] = Pressurelar[i] - Sabitler.MinHead; } } float minimumDeger = minDeger.Where(a => a > 0).Min(); return(minimumDeger); }
public static void Calculate_PowDis_ILK(Dictionary <int, float> icListem) { int[] boruIndex1 = new int[icListem.Count]; int[] boruIndex2 = new int[icListem.Count]; float[] boruFiyat1 = new float[icListem.Count]; float[] boruFiyat2 = new float[icListem.Count]; float[] Cap1 = new float[icListem.Count]; //8 elemanlı dizi oluşturdu float[] Cap2 = new float[icListem.Count]; float[] boruLenght1 = new float[icListem.Count]; float[] boruLenght2 = new float[icListem.Count]; float[] Pipe_Start_Point = new float[icListem.Count]; float[] Pipe_End_Point = new float[icListem.Count]; //listeyi sıralıyor.. var iclistSirali = icListem.OrderBy(x => x.Key).ToList(); Cap1 = iclistSirali.Select(z => z.Value).ToArray(); //Boruların başlangıç ve bitiş noktalarını bulup dizi haline getiriyor.. for (int i = 0; i < icListem.Count; i++) { UnsafeNativeMethods.ENgetlinknodes(i + 1, out int NodeS, out int NodeF); Pipe_End_Point[i] = NodeS; Pipe_Start_Point[i] = NodeF; } //boruların CAP1 ve CAP2 olarak uzunluk ve fiyatlarını buluyor.. for (int k = 0; k < icListem.Count; k++) { UnsafeNativeMethods.ENgetlinkvalue(k + 1, LinkValue.Length, out float lenght1); boruLenght1[k] = lenght1; } for (int k = 0; k < icListem.Count; k++) { boruIndex1[k] = Array.IndexOf(Sabitler.Pipe_Diameters, Cap1[k]); boruFiyat1[k] = Sabitler.Pipe_Cost[boruIndex1[k]] * boruLenght1[k]; Cap2[k] = Sabitler.Pipe_Diameters[Array.IndexOf(Sabitler.Pipe_Diameters, Cap1[k]) - 1]; boruIndex2[k] = Array.IndexOf(Sabitler.Pipe_Diameters, Cap2[k]); boruFiyat2[k] = Sabitler.Pipe_Cost[boruIndex2[k]] * boruLenght1[k]; } // Junctionların demandlerini alıyoruz.//BUNU SADECE 1 kere yapıyoruz... for (int i = 0; i < NodeOp.Get_numofNode(); i++) { UnsafeNativeMethods.ENgetnodevalue(i + 1, NodeValue.Demand, out float DemandValue); if (DemandValue < 0) { PublicListeler.Node_Demand_list.Add(i + 1, 0); } else { float deger = DemandValue * (float)3.6; PublicListeler.Node_Demand_list.Add(i + 1, deger); } } //////////////////////////GAMA DURUMU İÇİN (CAP2)////////////////////// // Start_Point noktası için HGL-Demand float[] Start_Point_HGL_CAP2 = new float[icListem.Count]; float[] End_Point_HGL_CAP2 = new float[icListem.Count]; //Networke CAP2'yi atayıp sistemi analiz ediyoruz... for (int i = 0; i < icListem.Count; i++) { UnsafeNativeMethods.ENsetlinkvalue(i + 1, LinkValue.Diameter, Cap2[i]); } NetworkOp.SaveAndRun(); // HGL değerlerini çekiyoruz... node numarasına denk gelen HGL leri listeliyoruz. for (int i = 0; i < NodeOp.Get_numofNode(); i++) { UnsafeNativeMethods.ENgetnodevalue(i + 1, NodeValue.Head, out float HGL); PublicListeler.Node_HGL_list_CAP2.Add(i + 1, HGL); } //////////////////////////GAMA DURUMU İÇİN (CAP1)////////////////////// // Start_Point noktası için HGL-Demand float[] Start_Point_HGL_CAP1 = new float[icListem.Count]; float[] End_Point_HGL_CAP1 = new float[icListem.Count]; //Networke CAP1 i atayıp sistemi analiz ediyoruz... for (int i = 0; i < icListem.Count; i++) { UnsafeNativeMethods.ENsetlinkvalue(i + 1, LinkValue.Diameter, Cap1[i]); } NetworkOp.SaveAndRun(); // HGL değerlerini çekiyoruz... for (int i = 0; i < NodeOp.Get_numofNode(); i++) { UnsafeNativeMethods.ENgetnodevalue(i + 1, NodeValue.Head, out float HGL); PublicListeler.Node_HGL_list_CAP1.Add(i + 1, HGL); } //power dissipationlar hesaplanacak ve Ratio bulunacak float[] PowDisp_1 = new float[icListem.Count]; float[] PowDisp_2 = new float[icListem.Count]; float[] Ratio = new float[icListem.Count]; for (int t = 0; t < icListem.Count; t++) { UnsafeNativeMethods.ENgetlinknodes(t + 1, out int NodeS, out int NodeF); if (PublicListeler.Node_HGL_list_CAP1[NodeS] > PublicListeler.Node_HGL_list_CAP1[NodeF]) { PowDisp_1[t] = (PublicListeler.Node_Demand_list[NodeS] * PublicListeler.Node_HGL_list_CAP1[NodeS] - PublicListeler.Node_Demand_list[NodeF] * PublicListeler.Node_HGL_list_CAP1[NodeF]) / 3600; } else { PowDisp_1[t] = -(PublicListeler.Node_Demand_list[NodeS] * PublicListeler.Node_HGL_list_CAP1[NodeS] - PublicListeler.Node_Demand_list[NodeF] * PublicListeler.Node_HGL_list_CAP1[NodeF]) / 3600; } if (PublicListeler.Node_HGL_list_CAP2[NodeS] > PublicListeler.Node_HGL_list_CAP2[NodeF]) { PowDisp_2[t] = (PublicListeler.Node_Demand_list[NodeS] * PublicListeler.Node_HGL_list_CAP2[NodeS] - PublicListeler.Node_Demand_list[NodeF] * PublicListeler.Node_HGL_list_CAP2[NodeF]) / 3600; } else { PowDisp_2[t] = -(PublicListeler.Node_Demand_list[NodeS] * PublicListeler.Node_HGL_list_CAP2[NodeS] - PublicListeler.Node_Demand_list[NodeF] * PublicListeler.Node_HGL_list_CAP2[NodeF]) / 3600; } Ratio[t] = -(boruFiyat2[t] - boruFiyat1[t]) / ((PowDisp_2[t] - PowDisp_1[t]) * Sabitler.g * 1000); PublicListeler.Powdis_Dict_ILK.Add(t, Ratio[t]); } for (int i = 0; i < icListem.Count(); i++) { UnsafeNativeMethods.ENsetlinkvalue(i + 1, LinkValue.Diameter, Cap1[i]); } NetworkOp.SaveAndRun(); PublicListeler.Node_HGL_list_CAP1.Clear(); PublicListeler.Node_HGL_list_CAP2.Clear(); }