Exemple #1
0
        public string TinhThepDamCN()
        {
            Result_ett <TinhThep_ett> rs = new Result_ett <TinhThep_ett>();
            TinhThep_ett tinhThep_Ett    = new TinhThep_ett();

            #region lấy dữ liệu từ tham số truyền vào
            string Rs_str = Request["Rs"];
            string Rb_str = Request["Rb"];
            string h_str  = Request["h"];
            string a_str  = Request["a"];
            string b_str  = Request["b"];
            //string bf_str = Request["bf"];
            string M_str = Request["M"];
            //string C_str = Request["C"]; //???
            string Rsc_str = Request["Rsc"];

            string Un_str   = Request["Un"];
            string fi1n_str = Request["fi1n"];
            string Vn_str   = Request["Vn"];
            string fi2n_str = Request["fi2n"];
            string Uk_str   = Request["Uk"];
            string fi1k_str = Request["fi1k"];
            string Vk_str   = Request["Vk"];
            string fi2k_str = Request["fi2k"];
            string Rbt_str  = Request["Rbt"];
            string Q_str    = Request["Q"];
            string Rsw_str  = Request["Rsw"];
            string n_str    = Request["n"];
            string fi3_str  = Request["fi3"];
            #endregion

            #region phần để chuyển dữ liệu từ dạng chuỗi string sang dạng số thực double
            double Un   = float.Parse(Un_str);
            double fi1n = float.Parse(fi1n_str);
            double Vn   = float.Parse(Vn_str);
            double fi2n = float.Parse(fi2n_str);



            double Uk   = float.Parse(Uk_str);
            double fi1k = float.Parse(fi1k_str);
            double Vk   = float.Parse(Vk_str);
            double fi2k = float.Parse(fi2k_str);
            double Rbt  = float.Parse(Rbt_str);
            double Q    = float.Parse(Q_str);
            double Rsw  = float.Parse(Rsw_str);
            double n    = float.Parse(n_str);
            double fi3  = float.Parse(fi3_str);



            int    Rs = int.Parse(Rs_str);
            double Rb = float.Parse(Rb_str);
            int    h  = int.Parse(h_str);
            int    a  = int.Parse(a_str);
            int    b  = int.Parse(b_str);
            //int bf = int.Parse(bf_str);
            double M = double.Parse(M_str) * Math.Pow(10, 6);
            //int C = int.Parse(C_str);
            //int C = 2500;
            double C   = 0;
            int    Rsc = int.Parse(Rsc_str);

            int    Osc = (Rs <= 400) ? Rs : 400;
            double w   = 0.85 - 0.008 * Rb;
            int    h0  = h - a;
            double Cr  = w / (1 + (Rs / Osc) * (1 - (w / 1.1)));
            double Ar  = Cr * (1 - 0.5 * Cr);
            double Am  = (M / (Rb * b * h0)) / 100;
            C = 1 - Math.Sqrt(1 - 2 * Am);
            double As  = 0;
            double As1 = 0;
            #endregion


            #region phần tính toán theo thuật toán + công thức
            tinhThep_Ett.Am = Am;
            tinhThep_Ett.Ar = Ar;

            if (Am <= Ar)
            {
                As  = M / (double)(Rs * C * h0);
                As1 = 0;
                tinhThep_Ett.Comment = "Chỉ cần đặt cốt đơn";
                //rs.Data.Comment = "Chỉ cần đặt cốt đơn";
                tinhThep_Ett.SSAmAr = "≤";
            }
            else
            {
                if (Am <= 0.5)
                {
                    As1 = (M - Ar * Rb * b * h0 * h0) / (Rsc * (h0 - a));
                    As  = ((Cr * Rb * b * h0) / Rs) + ((Rsc / Rs) * As1);
                    tinhThep_Ett.Comment = "Cần đặt cốt kép";
                }
                else
                {
                    tinhThep_Ett.Comment = "Tiết diện không hợp lý.";
                }
                tinhThep_Ett.SSAmAr = ">";
            }

            rs.ErrCode        = EnumErrCode.Success;
            tinhThep_Ett.As   = As / 100;
            tinhThep_Ett.As1  = As1;
            tinhThep_Ett.Anbt = (Un * 3.14 * Math.Pow((fi1n / 2), 2) + Vn * 3.14 * Math.Pow((fi2n / 2), 2)) / 100;
            tinhThep_Ett.Akbt = (Uk * 3.14 * Math.Pow((fi1k / 2), 2) + Vk * 3.14 * Math.Pow((fi2k / 2), 2)) / 100;
            if ((fi1n <= b / 10) && (fi2n <= b / 10) && (fi1n - fi2n <= 6))
            {
                tinhThep_Ett.ChiuNen = "Bố trí thép chịu nén hợp lý";
            }
            else
            {
                tinhThep_Ett.ChiuNen = "Bố trí thép chịu nén chưa hợp lý";
            }
            if ((fi1k <= b / 10) && (fi2k <= b / 10) && (fi1k - fi2k <= 6))
            {
                tinhThep_Ett.ChiuKeo = "Bố trí thép chịu kéo hợp lý";
            }
            else
            {
                tinhThep_Ett.ChiuKeo = "Bố trí thép chịu kéo chưa hợp lý";
            }

            //Tính cốt đai
            double Sw  = (Rbt * b * Math.Pow(h, 2)) / (Q * Math.Pow(10, 4));
            double qsw = (Rsw * (n * Math.PI * Math.Pow((fi3 / 2), 2) / 4)) / Sw;
            double Qsw = 0.75 * qsw * 2 * h0;
            double Qb  = 0;
            if (qsw > 0.25 * Rbt * b)
            {
                Qb = (1.5 * Rbt * b * Math.Pow(h0, 2)) / (2 * h0);
            }
            else
            {
                Qb = (4 * 1.5 * Math.Pow(h0, 2) * qsw) / (2 * h0);
            }

            double Qnc = Qb + Qsw;
            tinhThep_Ett.Qnc = Qnc / 100;
            tinhThep_Ett.Q   = Q;
            if (Qnc >= Q)
            {
                tinhThep_Ett.CuongDo = "dầm đủ khả năng chịu ứng suất nén chính";
                tinhThep_Ett.SSQnc   = "≥";
            }
            else
            {
                tinhThep_Ett.CuongDo = "dầm không đủ khả năng chịu ứng suất nén chính";
                tinhThep_Ett.SSQnc   = "<";
            }

            double Stt = (Rsw * (n * Math.PI * Math.Pow(fi3, 2)) / 4) * qsw / 100;
            tinhThep_Ett.Stt = Stt;

            double Sct = (h0 / 2) < 300 ? (h0 / 2) : 300;
            tinhThep_Ett.Sct = Sct;

            double Smax = (Rbt * b * h0) / Q / 100;
            tinhThep_Ett.Smax = Smax;

            double s = Stt < Sct ? Stt : (Sct < Smax ? Sct : Smax);
            tinhThep_Ett.S = s;

            double Ad = (n * Math.PI * Math.Pow(fi3, 2)) / 4 / 100;
            tinhThep_Ett.Ad = Ad;
            #endregion
            #region trả dữ liệu cho hàm ajax để trình bày lên view
            rs.Data = tinhThep_Ett;
            return(JsonConvert.SerializeObject(rs));

            #endregion
        }
Exemple #2
0
        public string TinhThepDamCT()
        {
            Result_ett <TinhThep_ett> rs = new Result_ett <TinhThep_ett>();
            TinhThep_ett tinhThep_Ett    = new TinhThep_ett();

            string Rs_str = Request["Rs"];
            string Rb_str = Request["Rb"];
            string h_str  = Request["h"];
            string a_str  = Request["a"];
            string b_str  = Request["b"];
            string bf_str = Request["bf"];
            string hf_str = Request["hf"];
            string M_str  = Request["M"];
            //string C_str = Request["C"]; //???
            string Rsc_str = Request["Rsc"];

            string Un_str   = Request["Un"];
            string fi1n_str = Request["fi1n"];
            string Vn_str   = Request["Vn"];
            string fi2n_str = Request["fi2n"];
            string Uk_str   = Request["Uk"];
            string fi1k_str = Request["fi1k"];
            string Vk_str   = Request["Vk"];
            string fi2k_str = Request["fi2k"];
            string Rbt_str  = Request["Rbt"];
            string Q_str    = Request["Q"];
            string Rsw_str  = Request["Rsw"];
            string n_str    = Request["n"];
            string fi3_str  = Request["fi3"];

            double Un   = float.Parse(Un_str);
            double fi1n = float.Parse(fi1n_str);
            double Vn   = float.Parse(Vn_str);
            double fi2n = float.Parse(fi2n_str);



            double Uk   = float.Parse(Uk_str);
            double fi1k = float.Parse(fi1k_str);
            double Vk   = float.Parse(Vk_str);
            double fi2k = float.Parse(fi2k_str);
            double Rbt  = float.Parse(Rbt_str);
            double Q    = float.Parse(Q_str);
            double Rsw  = float.Parse(Rsw_str);
            double n    = float.Parse(n_str);
            double fi3  = float.Parse(fi3_str);



            int    Rs = int.Parse(Rs_str);
            double Rb = float.Parse(Rb_str);
            int    h  = int.Parse(h_str);
            int    a  = int.Parse(a_str);
            int    b  = int.Parse(b_str);
            //int bf = int.Parse(bf_str);
            double M = double.Parse(M_str) * Math.Pow(10, 7);
            //int C = int.Parse(C_str);
            double C   = 0;
            int    Rsc = int.Parse(Rsc_str);

            int    Osc = (Rs <= 400) ? Rs : 400;
            double w   = 0.85 - 0.008 * Rb;
            int    h0  = h - a;
            double Cr  = w / (1 + (Rs / Osc) * (1 - (w / 1.1)));
            double Ar  = Cr * (1 - 0.5 * Cr);

            double As  = 0;
            double As1 = 0;


            int bs = b - 60;
            int bf = int.Parse(bf_str);
            int hf = int.Parse(hf_str);
            int Cs = 1; // để mặc định bằng 1.

            double Am = 0;
            double Mf = Rb * bf * hf * (h0 - 0.5 * hf);
            int    Sc = 0;

            if (M <= Mf)
            {
                Am = M / (Rb * bf * h0);
                C  = 1 - Math.Sqrt(1 - 2 * Am);
                if (Am <= Ar)
                {
                    As = M / (Rs * C * h0);
                    tinhThep_Ett.SSAmAr  = "≤";
                    tinhThep_Ett.Comment = "Chỉ cần đặt cốt đơn";
                }
                else
                {
                    if (Am <= 0.5)
                    {
                        As1 = (M - Ar * Rb * bf * h0 * h0) / (Rsc * (h0 - a));
                        As  = ((Cr * Rb * bf * h0) / Rs) + ((Rsc / Rs) * As1);
                        tinhThep_Ett.Comment = "Cần đặt cốt kép";
                    }
                    else
                    {
                        tinhThep_Ett.Comment = "Tiết diện không hợp lý.";
                    }
                    tinhThep_Ett.SSAmAr = ">";
                }
            }
            else
            {
                Am = (M - Rb * (bf - b) * hf * (h0 - 0.5 * hf)) / (Rb * b * h0 * h0);
                if (Am <= Ar)
                {
                    As = (Rb / Rs) * (Cs * bs * h0 + (b - bs) * bf);
                    tinhThep_Ett.SSAmAr  = "≤";
                    tinhThep_Ett.Comment = "Chỉ cần đặt cốt đơn";
                }
                else
                {
                    if (Am <= 0.5)
                    {
                        double a1 = hf / 2;
                        As1 = ((M - Ar * Rb * bf * h0 * h0) - Rb * (bf - b) * hf * (h0 - 0.5 * hf)) / (Rsc * (h0 - a1)) / 100;
                        As  = ((Cr * Rb * bf * h0) / Rs) + (Rsc / Rs) * As1;
                        tinhThep_Ett.Comment = "Cần đặt cốt kép";
                    }
                    else
                    {
                        tinhThep_Ett.Comment = "Tiết diện không hợp lý.";
                    }
                    tinhThep_Ett.SSAmAr = ">";
                }
            }

            tinhThep_Ett.Am   = Am;
            tinhThep_Ett.As   = As / 100;
            tinhThep_Ett.Ar   = Ar;
            tinhThep_Ett.As1  = As1;
            tinhThep_Ett.Anbt = (Un * 3.14 * Math.Pow((fi1n / 2), 2) + Vn * 3.14 * Math.Pow((fi2n / 2), 2)) / 100;
            tinhThep_Ett.Akbt = (Uk * 3.14 * Math.Pow((fi1k / 2), 2) + Vk * 3.14 * Math.Pow((fi2k / 2), 2)) / 100;
            if ((fi1n <= b / 10) && (fi2n <= b / 10) && (fi1n - fi2n <= 6))
            {
                tinhThep_Ett.ChiuNen = "Bố trí thép chịu nén hợp lý";
            }
            else
            {
                tinhThep_Ett.ChiuNen = "Bố trí thép chịu nén chưa hợp lý";
            }
            if ((fi1k <= b / 10) && (fi2k <= b / 10) && (fi1k - fi2k <= 6))
            {
                tinhThep_Ett.ChiuKeo = "Bố trí thép chịu kéo hợp lý";
            }
            else
            {
                tinhThep_Ett.ChiuKeo = "Bố trí thép chịu kéo chưa hợp lý";
            }

            //Tính cốt đai
            double Sw  = (Rbt * b * Math.Pow(h, 2)) / (Q * Math.Pow(10, 4));
            double qsw = (Rsw * (n * Math.PI * Math.Pow((fi3 / 2), 2) / 4)) / Sw;
            double Qsw = 0.75 * qsw * 2 * h0;
            double Qb  = 0;

            if (qsw > 0.25 * Rbt * b)
            {
                Qb = (1.5 * Rbt * b * Math.Pow(h0, 2)) / (2 * h0);
            }
            else
            {
                Qb = (4 * 1.5 * Math.Pow(h0, 2) * qsw) / (2 * h0);
            }

            double Qnc = Qb + Qsw;

            tinhThep_Ett.Qnc = Qnc / 100;
            tinhThep_Ett.Q   = Q;
            if (Qnc >= Q)
            {
                tinhThep_Ett.CuongDo = "dầm đủ khả năng chịu ứng suất nén chính";
                tinhThep_Ett.SSQnc   = "≥";
            }
            else
            {
                tinhThep_Ett.CuongDo = "dầm không đủ khả năng chịu ứng suất nén chính";
                tinhThep_Ett.SSQnc   = "<";
            }

            double Stt = (Rsw * (n * Math.PI * Math.Pow(fi3, 2)) / 4) * qsw / 100;

            tinhThep_Ett.Stt = Stt;

            double Sct = (h0 / 2) < 300 ? (h0 / 2) : 300;

            tinhThep_Ett.Sct = Sct;

            double Smax = (Rbt * b * h0) / Q / 100;

            tinhThep_Ett.Smax = Smax;

            double s = Stt < Sct ? Stt : (Sct < Smax ? Sct : Smax);

            tinhThep_Ett.S = s;

            double Ad = (n * Math.PI * Math.Pow(fi3, 2)) / 4 / 100;

            tinhThep_Ett.Ad = Ad;

            rs.ErrCode = EnumErrCode.Success;
            rs.Data    = tinhThep_Ett;
            return(JsonConvert.SerializeObject(rs));
        }