示例#1
0
        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();
        }
示例#2
0
        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);
        }
示例#4
0
        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();
        }
示例#5
0
        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);
        }
示例#6
0
        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);
        }
示例#8
0
        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();
        }
示例#14
0
 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;
     }
 }
示例#15
0
        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();
        }