public BeamShearResults Calculate(double d, double b, double fck, double n, double powAs, double fyd, double pow, double as1, double vEd, double ctgt = 1)
        {
            gammaC = 1.4;
            gammaS = 1.15;
            crdc   = 0.18 / gammaC;
            z      = 0.9 * d;
            tgt    = 1;
            k      = Math.Min((1 + (Math.Sqrt(200 / d))), 2);
            romin  = Math.Min(0.02, (as1 / (b * d * 0.01)));
            v      = 0.6 - (fck / 250);

            vMin = 0.035 * (Math.Sqrt(k * k * k * fck));
            pom1 = 100 * romin * fck;
            pom2 = Math.Pow(pom1, 0.333);
            //vRdc1 = crdc * k * pom2 * b * d * 0.001;
            //vRdcmin = vMin * b * d * 0.001;
            vRdc = Math.Max((crdc * k * pom2 * b * d * 0.001), (vMin * b * d * 0.001));
            vRdc = Math.Round(vRdc, 2);

            sRozstaw      = Math.Round((n * powAs * fyd * z * 0.01 * ctgt) / (vEd), 2);
            sRozstawFloor = Math.Floor(sRozstaw);

            vRds        = Math.Round(((n * powAs * fyd * z * 0.01 * ctgt) / (sRozstawFloor)), 2);
            vRdmax      = Math.Round((b * v * (fck / gammaC) * z * 0.001) / (ctgt + tgt), 2);
            roStrzemion = Math.Round((n * powAs) / (sRozstawFloor * b * 0.01), 3);
            roMin       = Math.Round(0.08 * ((Math.Pow(fck, 0.5)) / (fyd * gammaS)), 3);

            BeamShearResults result = new BeamShearResults
            {
                VRdc         = vRdc,
                VRds         = vRds,
                VRdmax       = vRdmax,
                RoStrzemion  = roStrzemion,
                RoMin        = roMin,
                RozstawFloor = sRozstawFloor,
            };

            return(result);
        }
示例#2
0
        private void ButtonScinanieObliczenia_Click(object sender, EventArgs e)
        {
            //otrzymanie wartości z pól
            var b  = double.Parse(TextBoxShearB.Text);
            var h  = double.Parse(TextBoxShearH.Text);
            var a  = double.Parse(TextBoxShearA.Text);
            var aS = double.Parse(TextBoxShearAs.Text);
            var v  = Math.Abs(double.Parse(TextBoxShearV.Text));
            var n  = double.Parse(ComboBoxShearN.Text);
            var fi = double.Parse(ComboBoxShearFi.Text);

            string nameConcrete = ComboBoxShearConcrete.Text;
            string nameSteele   = ComboBoxShearSteele.Text;

            double d, pow, powAs, fck, fcd, fyd, fyk, fctm;
            double vRdc, vRds, vRdmax, roStrzemion, roMin, sRozstawFloor;
            //string warning;

            var ctgt = 1; // Cotangens teta od 1 do 2

            d     = (h - a);
            pow   = b * h / 100;
            powAs = Math.Round((fi * fi * 3.14 / 400), 3);

            d   = (h - a);
            pow = b * h / 100;

            //Obiekty betonu i stali oraz parametry
            var concrete = new ConcreteProps(nameConcrete);
            var steele   = new SteeleProps(nameSteele);

            //wytrzymalosci dla betonu betonu
            var concretePropResult = concrete.ConcretePropResult();

            fctm = concretePropResult.Fctm;
            fck  = concretePropResult.Fck;

            //wytrzymalosci dla stali
            var steelePropResult = steele.StleelePropResult();

            fyk = steelePropResult.Fyk;

            fcd = Math.Round((fck / 1.4), 2);
            fyd = Math.Round((fyk / 1.15), 2);

            //obiekty BeamShear
            BeamShearCalculation bsc    = new BeamShearCalculation();
            BeamShearResults     result = bsc.Calculate(d, b, fck, n, powAs, fyd, pow, aS, v);

            vRdc          = result.VRdc;
            vRds          = result.VRds;
            vRdmax        = result.VRdmax;
            roStrzemion   = result.RoStrzemion;
            roMin         = result.RoMin;
            sRozstawFloor = result.RozstawFloor;

            labelShearCtgt.Text   = ctgt + "";
            labelShearVrdc.Text   = vRdc + "";
            labelShearVrds.Text   = vRds + "";
            labelShearVrdmax.Text = vRdmax + "";
            labelShearFcd.Text    = fcd + "";
            labelShearFyd.Text    = fyd + "";
            labelShearRomin.Text  = roMin + "";
            labelShearRow.Text    = roStrzemion + "";
            if (v < vRdc)
            {
                labelShearWarn.Text   = "Ved < Vrdc : strzemiona dobrać konstrukcyjnie";
                labelShearResult.Text = "konstrukcyjne";
            }
            else
            {
                labelShearWarn.Text   = "";
                labelShearResult.Text = "Φ" + fi + " co:  " + sRozstawFloor + " cm";
            }
        }