Beispiel #1
0
        private void ReinforcementCalc()
        {
            var Msds = Forces.Msds(Geometry.h, Geometry.d1);

            Mrd_limit = (Kof_lim.μRd * Geometry.b * Math.Pow(Geometry.d, 2) * Material.beton.fcd / 10) / 100;

            if (Msds <= Mrd_limit)
            {
                As1_pot = (KofZaProracunPravougaonogPreseka.ω * Geometry.b * Geometry.d * Material.beton.fcd / 10 / Material.armatura.fyd) + (Forces.Nsd / Material.armatura.fyd);
            }
            else
            {
                As2_pot = (Msds * 100 - Mrd_limit * 100) / ((Geometry.d - Geometry.d2) * Material.armatura.fyd);
                As1_pot = Mrd_limit * 100 / (Kof_lim.ζ * Geometry.d * Material.armatura.fyd) + (Forces.Nsd / Material.armatura.fyd) + As2_pot;

                As2_pot = As2_pot < 0 ? 0 : As2_pot;
            }

            if ((As1_pot + As2_pot) / Geometry.b / Geometry.h > ρ_max)
            {
                throw new Exception("ρ_max exceeded! Make section bigger");
            }

            if (As2_pot != 0)
            {
                KofZaProracunPravougaonogPreseka = Kof_lim;
            }
            X = KofZaProracunPravougaonogPreseka.ξ * Geometry.d;

            if (Forces.IsMsdNegativ)
            {
                As2_pot = As1_pot;
                As1_pot = (Msds * 100 - Mrd_limit * 100) / ((Geometry.d - Geometry.d2) * Material.armatura.fyd);
            }
        }
Beispiel #2
0
        private void SetKof()
        {
            if (TypeDim == TypeDimensioning.Bound)
            {
                μSd = coeffService.GetByμ(Forces.Msds(Geometry.h, Geometry.d1), Geometry.b, Geometry.d).μRd;
            }
            else
            {
                μSd = coeffService.GetNew(Material.beton.εcu2, Material.armatura.eps_ud).μRd;
            }

            KofZaProracunPravougaonogPreseka = coeffService.GetByμ(μSd);
        }
            public μSd_And_νSd GetFromKof(CoeffForCalcRectCrossSectionModelEC kof)
            {
                this.kof = kof ?? throw new ArgumentNullException(nameof(kof));
                var fyd = material.armatura.fyd * 10;

                x = geometry.d * kof.ξ;

                εs2 = kof.εc / x * (x - geometry.d1);

                var sign  = kof.εs1 / Math.Abs(kof.εs1);
                var sigma = kof.εs1 * material.armatura.Es;

                σs1 = sigma > fyd ? sign * fyd : sign * sigma;

                sign  = εs2 / Math.Abs(εs2);
                sigma = Math.Abs(εs2) * material.armatura.Es;
                σs2   = sigma > fyd ? sign * fyd : sign * sigma;

                return(this);
            }
            public μSd_And_νSd GetFromKof(CoeffForCalcRectCrossSectionModelEC kof, double ω)
            {
                this.kof = kof ?? throw new ArgumentNullException(nameof(kof));
                var fyd = material.armatura.fyd * 10;

                x = geometry.d * kof.ξ;

                εs2 = kof.εc / x * (x - geometry.d1);

                var sigma = kof.εs1 * material.armatura.Es;

                σs1 = sigma > fyd ? fyd : sigma;

                sigma = Math.Abs(εs2) * material.armatura.Es;
                σs2   = sigma > fyd ? fyd : sigma;

                νSd = 0.85 * kof.αv * kof.ξ + ω * ((σs2 / fyd) - (σs1 / fyd));
                μSd = 0.85 * kof.αv * kof.ξ * (geometry.h / geometry.d * 0.5 - kof.ka * kof.ξ) + ω * (geometry.h / geometry.d * 0.5 - geometry.d1 / geometry.d) * Math.Abs((σs2 / fyd) + (σs1 / fyd));

                return(this);
            }
Beispiel #5
0
        public BendingRectangularCrossSectionEC2(
            IForcesBendingAndCompressison forces,
            IElementGeometry geometry,
            IMaterial material,
            CoeffForCalcRectCrossSectionModelEC kof = null)
        {
            InitValidations(geometry, material);
            this.Forces   = forces;
            this.Geometry = geometry;
            this.Material = material;

            coeffService = new CoeffService(Material, Geometry);

            Kof_lim = coeffService.GetByξ(material.beton.ξ_lim);


            if (kof != null)
            {
                KofZaProracunPravougaonogPreseka = kof;
                μSd = kof.μRd;
            }

            Start();
        }