public SavijanjePravougaonogPresekaEC2V2( double b, double h, double d1, double d2, BetonModelEC beton, ReinforcementTypeModelEC armatura, double Msd, double Nsd = 0, KofZaProracunPravougaonogPresekaModelEC kof = null) { InitValidations(b, h, beton, armatura, d1, d2); this.Msd = Msd; this.Nsd = Nsd; this.b = b; this.h = h; this.d1 = d1; this.d2 = d2; this.beton = beton; this.armatura = armatura; if (kof != null) { KofZaProracunPravougaonogPreseka = kof; μSd = kof.μRd; } Start(); }
public SavijanjePravougaonogPresekaEC2V2( double b, double h, double d1, double d2, BetonModelEC beton, ReinforcementTypeModelEC armatura, double Mg, double Mq, double Ng = 0, double Nq = 0, KofZaProracunPravougaonogPresekaModelEC kof = null) { InitValidations(b, h, beton, armatura, d1, d2); this.Mg = Mg; this.Mq = Mq; this.Msd = 1.35 * Mg + 1.5 * Mq; this.Ng = Ng; this.Nq = Nq; this.Nsd = 1.35 * Ng + 1.5 * Nq; this.b = b; this.h = h; this.d1 = d1; this.d2 = d2; this.beton = beton; this.armatura = armatura; if (kof != null) { KofZaProracunPravougaonogPreseka = kof; μSd = kof.μRd; } Start(); }
public static KofZaProracunPravougaonogPresekaModelEC Get_Kof_From_μ(double μSd) { var μ_lim = new KofZaProracunPravougaonogPresekaModelEC(); μ_lim.SetByEcEs1(-3.5, 20); if (μSd > μ_lim.μRd) { var kof_iz_tablice = GetItem_Full(μSd: μSd); var max_εs1 = kof_iz_tablice.εs1 + 0.5; var min_εs1 = kof_iz_tablice.εs1 - 0.5; var ListToSerachForKof = new List <KofZaProracunPravougaonogPresekaModelEC> (); ListToSerachForKof.AddRange(GetListTacna_εs1(max_εs1, min_εs1)); return(GetSearchForμRd(μSd, ListToSerachForKof)); } if (μSd < μ_lim.μRd) { var kof_iz_tablice = GetItem_Full(μSd: μSd); var max_εc = kof_iz_tablice.εc + 0.5; var min_εc = kof_iz_tablice.εc - 0.5; var ListToSerachForKof = new List <KofZaProracunPravougaonogPresekaModelEC>(); ListToSerachForKof.AddRange(GetListTacna_εc(max_εc, min_εc)); return(GetSearchForμRd(μSd, ListToSerachForKof)); } return(μ_lim); }
private static void PBAB_TacnPostupak() { double Msd = 770; double Mu; double Du; double b_eff = 60; double b_w = 30; double h_f = 10; double d = 51; double s; double δ = h_f / d; //BetonModel beton = BetonClasses.GetBetonClassList().Single(b => b.name == "C25/30"); ReinforcementTypeModelEC arm = ReinforcementType.GetArmatura().Single(a => a.name == "B500B"); var fcd = 2.05; KofZaProracunPravougaonogPresekaModelEC kof1 = new KofZaProracunPravougaonogPresekaModelEC(); KofZaProracunPravougaonogPresekaModelEC kof2 = new KofZaProracunPravougaonogPresekaModelEC(); bool done = false; s = δ; int i = 0; var s_add = 0.1; do { i++; //kof1.SetByS_PBAB(s); var x = s * d; var Du1 = kof1.αv * b_eff * s * d * fcd; var zb1 = d * (1 - kof1.ka * s); var Ebd = ((s - δ) / s) * kof1.εc; kof2.SetByEcEs1(Ebd, 10); var Du2 = kof2.αv * (b_eff - b_w) * (x - h_f) * fcd; var zb2 = d - h_f - kof2.ka * (x - h_f); Mu = Math.Round(Du1 * zb1 / 100 - Du2 * zb2 / 100, 2); if (Mu < Msd) { s += s_add; continue; } //if (Mu > Msd) { s -= 0.09; continue; } if (Mu > Math.Round(Msd * 1.001, 2)) { s_add = s_add / 2; s -= s_add; continue; } if (Mu >= Msd && Mu <= Math.Round(Msd * 1.001, 2)) { done = true; } } while (!done); Console.WriteLine(i); Console.ReadKey(); GC.Collect(); }
private static void EC_T_Presek_PomocuFormule() { double Msd = 6100; double b_eff = 175; double b_w = 35; double h_f = 15; double d = 143; double s; double δ = h_f / d; var μSd = 0.0; var bi = b_eff; BetonModelEC beton = BetonClasses.GetBetonClassListEC().Single(b => b.name == "C25/30"); ReinforcementTypeModelEC arm = ReinforcementType.GetArmatura().Single(a => a.name == "B500B"); var fcd = beton.fcd / 10; KofZaProracunPravougaonogPresekaModelEC kof1 = new KofZaProracunPravougaonogPresekaModelEC(); KofZaProracunPravougaonogPresekaModelEC kof2 = new KofZaProracunPravougaonogPresekaModelEC(); KofZaProracunPravougaonogPresekaModelEC kof_zvezdica = new KofZaProracunPravougaonogPresekaModelEC(); //kof1. bool done = false; s = δ; kof1.SetByξ(s); kof2 = kof1; int i = 0; //var s_add = 0.1; do { var x = kof2.ξ * d; var Eb = ((x - h_f) / x) * kof2.εc; kof_zvezdica.SetByEcEs1(Eb, 20); if (kof2.εc == 0)///na pocetku ce uvek biti kof2 0; { bi = 1 * b_eff; } else { bi = (1 - (kof_zvezdica.αv / kof1.αv) * (1 - (h_f / (kof2.ξ * d))) * (1 - (b_w / b_eff))) * b_eff; } μSd = Msd * 100 / (bi * Math.Pow(d, 2) * fcd); var kof3 = KofZaProracunPravougaonogPresekaEC.Get_Kof_From_μ(μSd); if (Math.Round(kof2.ξ, 3) == Math.Round(kof3.ξ, 3)) { done = true; continue; } kof2 = kof3; } while (!done); }
private double Getω(KofZaProracunPravougaonogPresekaModelEC Kof, double Vsd, double b, double d1, double h, BetonModelEC beton) { var zs = (h / 2 - d1); var Kof_lim = KofZaProracunPravougaonogPresekaEC.GetLimitKofZaProracunPravougaonogPresekaEC(beton); var Mrd_limit = (Kof_lim.μRd * b * Math.Pow((h - d1), 2) * beton.fcd / 10) / 100; var ω1 = Kof_lim.μRd * ((1 / Kof_lim.ζ) - (1 / 0.89)) + Kof.μRd * 1 / 0.89 + Vsd * (zs / (0.89 * (h - d1)) - 1); return(ω1); }
private static List <KofZaProracunPravougaonogPresekaModelEC> GetListTacna_εs1(double max_εs1, double min_εs1, double percision = 0.0001) { var result = new List <KofZaProracunPravougaonogPresekaModelEC>(); var εc = -3.5; for (double j = min_εs1; j <= max_εs1; j += percision) { var i = εc; var n = new KofZaProracunPravougaonogPresekaModelEC(); n.SetByEcEs1(i, j); result.Add(n); } return(result); }
private void CistTPresek() { var z = d - h_f / 2; KofZaProracunPravougaonogPreseka = new KofZaProracunPravougaonogPresekaModelEC(); KofZaProracunPravougaonogPreseka.SetByξ(h_f / d); x = KofZaProracunPravougaonogPreseka.ξ * d; var Start_e = KofZaProracunPravougaonogPreseka; KofZaProracunPravougaonogPresekaModelEC Next_e = KofZaProracunPravougaonogPreseka; var lamda_b = 1 - (Start_e.αv / Next_e.αv) * (1 - (h_f / (Next_e.ξ * d)) * (1 - (b_eff / b_w))); do { } while (Start_e.ξ != Next_e.ξ); }
private static List <KofZaProracunPravougaonogPresekaModelEC> GetListTacna_εc(double max_εc, double min_εc, double percision = 0.0001) { //if (Math.Abs(εc) > 3.5 || εs1 > 20 && εs1 < 0) // return null; var result = new List <KofZaProracunPravougaonogPresekaModelEC>(); for (double i = min_εc; i <= max_εc; i += percision) { var j = 20; var n = new KofZaProracunPravougaonogPresekaModelEC(); n.SetByEcEs1(i, j); result.Add(n); } return(result); }
/// <summary> /// Msd * 100 / (b * Math.Pow(d, 2) * fcd) /// </summary> /// <param name="Msd">in kN/m</param> /// <param name="b">in cm</param> /// <param name="d">in cm</param> /// <param name="fcd">in kN/cm</param> /// <returns></returns> public static double GetμSd(double Msd, double b, double d, double fcd) { var result = Msd * 100 / (b * Math.Pow(d, 2) * fcd); var max = new KofZaProracunPravougaonogPresekaModelEC(-3.5, 0.5).μRd; var min = new KofZaProracunPravougaonogPresekaModelEC(-0.1, 20).μRd; if (result > max) { return(max); } //throw new Exception("Diletacija u armaturi i betonu prekoracema; \nPovecajte presek!"); if (result < min) { throw new Exception("Diletacija u armaturi i betonu prekoracema; \nPovecajte presek!"); } return(result); }
private static KofZaProracunPravougaonogPresekaModelEC GetSearchForμRd(double μSd, List <KofZaProracunPravougaonogPresekaModelEC> listToSearch) { var list = listToSearch; if (listToSearch.Count == 0) { var nul = new KofZaProracunPravougaonogPresekaModelEC(); nul.SetByEcEs1(0, 20); return(nul); } double closest = list.Select(k => k.μRd) .Select(n => new { n, distance = Math.Abs(n - μSd) }) .OrderBy(p => p.distance) .First(i => i.n >= μSd).n; return(listToSearch.Single(k => k.μRd == closest)); }
/// <summary> /// Vraca 2350 listu /// </summary> /// <returns></returns> public static List <KofZaProracunPravougaonogPresekaModelEC> ListTacna(double percision = 0.01) { double εc = 0.01; double εs1 = 0.01; var result = new List <KofZaProracunPravougaonogPresekaModelEC>(); for (double i = εc; i <= 3.5; i += percision) { var j = 20; var n = new KofZaProracunPravougaonogPresekaModelEC(); n.SetByEcEs1(-i, j); result.Add(n); } for (double j = εs1; j < 20; j += percision) { var i = -3.5; var n = new KofZaProracunPravougaonogPresekaModelEC(); n.SetByEcEs1(i, j); result.Add(n); } return(result); }
public SavijanjePravougaonogPresekaEC2_V2(double b, double h, double d1, double d2, BetonModelEC beton, ReinforcementTypeModelEC armatura, double Msd, double Nsd = 0, KofZaProracunPravougaonogPresekaModelEC kof = null) { this.b = b; this.h = h; if (h == 0) { TipDim = TipDimenzionisanja.Slobodno; } this.d1 = d1; this.d2 = d2; this.beton = beton; this.armatura = armatura; this.Msd = Msd; this.Nsd = Nsd; Kof = kof; InitValidation(); //Calc(); }
public SavijanjeTPresekaEC2( double b_w, double b_eff, double h, double h_f, double d1, double Mg, double Mq, BetonModelEC beton, ReinforcementTypeModelEC armatura, double d2 = 0, double Ng = 0, double Nq = 0, KofZaProracunPravougaonogPresekaModelEC kof = null) { this.b_w = b_w; this.b_eff = b_eff; this.h = h; this.h_f = h_f; this.d1 = d1; this.d2 = d2; this.Msd = 1.35 * Mg + 1.5 * Mq; this.Nsd = 1.35 * Ng + 1.5 * Nq; this.Msds = Msd + Nsd * (h / 100 / 2 - d1 / 100); if (kof != null) { KofZaProracunPravougaonogPreseka = kof; μSd = kof.μRd; } }
private static void ec2_TacnPostupak() { double Msd = 180; double Mu; double Du = 0; double b_eff = 20; double b_w = 20; double h_f = 15; double d = 44; double s; double δ = h_f / d; double Nu = 0; double bi = 0; BetonModelEC beton = BetonClasses.GetBetonClassListEC().Single(b => b.name == "C25/30"); ReinforcementTypeModelEC arm = ReinforcementType.GetArmatura().Single(a => a.name == "B500B"); //var fcd = 2.05; double As = (Du - Nu) / arm.fyd; KofZaProracunPravougaonogPresekaModelEC kof1 = new KofZaProracunPravougaonogPresekaModelEC(); KofZaProracunPravougaonogPresekaModelEC kof2 = new KofZaProracunPravougaonogPresekaModelEC(); bool done = false; s = δ; int i = 0; var x = 0.0; var s_add = 0.1; var μSd = (Msd * 100) / (b_eff * Math.Pow(d, 2) * beton.fcd / 10); var kof_test = KofZaProracunPravougaonogPresekaEC.Get_Kof_From_μ(μSd); if (kof_test.ξ <= s) { var kof = kof_test; x = kof.ξ * d; As = (Msd * 100) / (kof.ζ * d * arm.fyd); } do { i++; kof1.SetByξ(s); x = s * d; var Du1 = kof1.αv * b_eff * s * d * beton.fcd / 10; var zb1 = d * (1 - kof1.ka * s); var Ebd = ((s - δ) / s) * kof1.εc; kof2.SetByEcEs1(Ebd, 20); var Du2 = kof2.αv * (b_eff - b_w) * (x - h_f) * beton.fcd / 10; var zb2 = d - h_f - kof2.ka * (x - h_f); Mu = Du1 * zb1 / 100 - Du2 * zb2 / 100; if (i > 30) { break; } if (Mu * 1.0005 < Msd) { s += s_add; continue; } if (Mu > Msd * 1.001) { s_add = s_add / 2; s -= s_add; continue; } if (Mu * 1.0005 >= Msd && Mu <= Msd * 1.001) { Du = Du1 - Du2; As = (Du - Nu) / arm.fyd; done = true; } } while (!done); if (i > 30 && done == false) { Console.WriteLine("Can't calculate!"); Console.ReadKey(); return; } bi = Mu / (kof1.μRd * Math.Pow(d, 2) * beton.fcd / 10); As = (Du - Nu) / arm.fyd; x = kof1.ξ * d; Console.WriteLine("n= " + i); Console.WriteLine("As= " + As); Console.WriteLine("x= " + x); Console.WriteLine("Mu= " + Mu); Console.ReadKey(); GC.Collect(); }