Esempio n. 1
0
        public void get_parameters(ref Technical_Demand t1, ref longitudinal_lateral_connection t2, ref CrossSection t3)
        {
            //计算横梁的数量
            t2.lateral_end_beam_nums = 2;
            if (Constants.spanOfBridge == 20)
            {
                t2.intermediate_beam_nums = 3;
            }
            if (Constants.spanOfBridge > 20 && Constants.spanOfBridge <= 30)
            {
                t2.intermediate_beam_nums = 5;
            }
            if (Constants.spanOfBridge > 30)
            {
                t2.intermediate_beam_nums = 6;
            }
            double lateral_beam_gap = Constants.spanOfBridge * 1.0 / (t2.intermediate_beam_nums + 1);

            t2.lateral_beam_gap = lateral_beam_gap;
            //这里可以供用户选择是实腹式还是桁架式的横梁

            //实腹式横梁的计算(跨间)
            double tmp_height = t3.girder_web_height - 0.3;

            if (tmp_height <= t3.girder_web_height * 0.5)
            {
                lateral_web_height = 0.5 * t3.girder_web_height;
            }
            else
            {
                lateral_web_height = tmp_height;
            }

            stiffener_Z = 0;
            while (stiffener_Z == 0)
            {
                double tmp = 0.0;
                //试算Z的值首先令腹板宽度为300mm厚度取纵梁腹板厚度
                lateral_flange_width              = 0.3 + tmp;
                lateral_flange_thickness          = t3.girder_web_thickness;
                lateral_web_thickness             = t3.girder_web_thickness;
                axis_moment_inertial_lateral_beam = 1 / 12.0 * (lateral_flange_width * (lateral_web_height + 2.0 *
                                                                                        lateral_flange_thickness) * (lateral_web_height + 2.0 * lateral_flange_thickness)
                                                                * (lateral_web_height + 2.0 * lateral_flange_thickness)) - 1 / 12.0 * ((lateral_flange_width -
                                                                                                                                        lateral_web_thickness) * lateral_web_height * lateral_web_height * lateral_web_height);

                double equal_inertial = 0.0;

                if (t2.intermediate_beam_nums == 1 || t2.intermediate_beam_nums == 2)
                {
                    equal_inertial = 1.0 * axis_moment_inertial_lateral_beam;
                }
                if (t2.intermediate_beam_nums == 3 || t2.intermediate_beam_nums == 4)
                {
                    equal_inertial = 1.6 * axis_moment_inertial_lateral_beam;
                }
                if (t2.intermediate_beam_nums == 5 || t2.intermediate_beam_nums == 6)
                {
                    equal_inertial = 2.6 * axis_moment_inertial_lateral_beam;
                }
                stiffener_Z = (Constants.spanOfBridge * Constants.spanOfBridge * Constants.spanOfBridge) * equal_inertial / (t3.axis_moment_inertial_girder * (2.0 * t2.lateral_beam_gap)
                                                                                                                             * (2.0 * t2.lateral_beam_gap) * (2.0 * t2.lateral_beam_gap));

                //if (stiffener_Z > 10)
                //{
                //    cout << "Z=" << stiffener_Z << ">10" << endl;
                //    cout << "横梁格子刚度满足要求,横向传力均匀" << endl;
                //}
                if (stiffener_Z <= 10)
                {
                    stiffener_Z = 0;
                    tmp        += 0.05;
                }
            }
        }
Esempio n. 2
0
        public void calculate_girder_parament(ref Technical_Demand t)
        {
            //计算girder_gap,假定width_flange长度在1.0-1.5之间
            //根据经验girder_gap一般在2.5m-3.5m之间
            //计算主梁根数
            double tmp_girder_nums = 0.5 * ((t.Get_WidthOfBridge() - 1.0 * 2) / 2.5 + (t.Get_WidthOfBridge() - 1.0 * 2) / 3.5);

            if (tmp_girder_nums - Math.Floor(tmp_girder_nums) > 0)
            {
                girder_nums = Convert.ToInt32(Math.Floor(tmp_girder_nums) + 2);
            }
            else
            {
                girder_nums = Convert.ToInt32(Math.Floor(tmp_girder_nums) + 1);
            }
            //计算主梁间距
            girder_gap = Math.Floor((t.Get_WidthOfBridge() - 1 * 2) / (girder_nums - 1) * 10) / 10.0;
            //计算挑臂长度
            width_flange = 0.5 * (t.Get_WidthOfBridge() - girder_gap * (girder_nums - 1));
            //计算主梁高度
            double tmp_web_height = 0.5 * Constants.spanOfBridge * (1.0 / 12.0 + 1.0 / 25.0);

            if (tmp_web_height * 10.0 > Math.Floor(tmp_web_height * 10))
            {
                //cout<<tmp_web_height<<endl;
                girder_web_height = Math.Floor(tmp_web_height * 10) / 10.0 + 0.1;
                //cout<<girder_web_height<<endl;
            }
            else
            {
                girder_web_height = tmp_web_height * 10 / 10.0;
            }
            //计算主梁腹板厚度,单位:m
            double parameter_hw_tw = (Math.Floor(girder_web_height * 1000 / 310) + 1) / 1000.0;

            if (parameter_hw_tw <= 10)
            {
                girder_web_thickness = 0.01;
            }
            else
            {
                girder_web_thickness = 0.012;
            }
            //计算主梁翼缘板尺寸

            /*根据规范7.2.1:焊接板梁受压翼缘的伸出肢宽不宜大于40cm,也不应大于其厚度的12倍,
             * 受拉翼缘的伸出肢宽不应大于其厚度的16倍。翼缘板的面外惯矩宜满足下式要求:
             * 0<=Iyc/Iyt<=10; */
            //根据经验翼板宽度在300mm-650mm之间(跨径小于40m),考虑焊接影响,翼板b=0.3-0.45h<600mm
            //翼板厚度一般不超过32mm
            //Q345最大弯拉设计应力为210MPa,最大弯压设计应力为189MPa
            double tmp_yc = Constants.TH_CA * 1.0 / (Constants.TH_CA + Constants.TH_TA) * girder_web_height;
            double tmp_yt = Constants.TH_TA * 1.0 / (Constants.TH_CA + Constants.TH_TA) * girder_web_height;

            calculated_Moment = 0.5 * Constants.spanOfBridge * Constants.spanOfBridge * Constants.STEEL_INTENSITY;
            double Area_c = calculated_Moment * 1.0 / (1.0 * Constants.PARAMETER_REDUCE * girder_web_height * Constants.TH_CA) - 1.0 * girder_web_height * girder_web_thickness / 6.0 * (2.0 * Constants.TH_CA - Constants.TH_TA) / Constants.TH_CA;
            double Area_t = calculated_Moment * 1.0 / (1.0 * Constants.PARAMETER_REDUCE * girder_web_height * Constants.TH_TA) - 1.0 * girder_web_height * girder_web_thickness / 6.0 * (2.0 * Constants.TH_TA - Constants.TH_CA) / Constants.TH_TA;

            //翼缘板宽度映射宽度在300-650mm之间
            //上翼缘板尺寸计算
            if (Constants.spanOfBridge <= 30)
            {
                girder_upper_flange_width = 0.4;
            }
            else
            {
                int tmp_girder_upper_flange_width = Convert.ToInt32(Math.Floor(Constants.spanOfBridge * 10 + 100));
                if (tmp_girder_upper_flange_width % 5 > 0)
                {
                    girder_upper_flange_width = Math.Floor(tmp_girder_upper_flange_width / 5.0 + 1) * 5 / 1000.0;
                }
                else
                {
                    girder_upper_flange_width = tmp_girder_upper_flange_width / 1000.0;
                }
            }
            int tmp_girder_upper_flange_thickness = Convert.ToInt32(Math.Floor(girder_upper_flange_width / 2.0 * 1000.0 / 12.0));

            if (tmp_girder_upper_flange_thickness % 5 != 0)
            {
                girder_upper_flange_thickness = (tmp_girder_upper_flange_thickness / 5 + 1) * 5 / 1000.0;
            }
            else
            {
                girder_upper_flange_thickness = tmp_girder_upper_flange_thickness / 1000.0;
            }
            girder_upper_flange_thickness += 0.005;
            if (girder_upper_flange_width >= 0.6 || girder_upper_flange_width >= 24 * girder_upper_flange_thickness)
            {
                girder_upper_flange_width = Math.Min(0.6, 24 * girder_upper_flange_thickness);
            }

            //下翼缘板尺寸计算
            if (Constants.spanOfBridge <= 40)
            {
                girder_lower_flange_width = 0.55;
            }
            else
            {
                int tmp_girder_lower_flange_width = Convert.ToInt32(Math.Floor(Constants.spanOfBridge * 10 * 4 / 3.0));
                if (tmp_girder_lower_flange_width % 5 > 0)
                {
                    girder_lower_flange_width = Math.Floor(tmp_girder_lower_flange_width / 5.0 + 1) * 5 / 1000.0;
                }
                else
                {
                    girder_lower_flange_width = tmp_girder_lower_flange_width / 1000.0;
                }
            }

            int tmp_girder_lower_flange_thickness = Convert.ToInt32(Math.Floor(girder_lower_flange_width / 2.0 * 1000.0 / 16.0));

            if (tmp_girder_lower_flange_thickness % 5 != 0)
            {
                girder_lower_flange_thickness = (tmp_girder_lower_flange_thickness / 5 + 1) * 5 / 1000.0;
            }
            else
            {
                girder_lower_flange_thickness = tmp_girder_lower_flange_thickness / 1000.0;
            }
            girder_lower_flange_thickness += 0.01;
            if (girder_lower_flange_width >= 0.6 || girder_lower_flange_width >= 32 * girder_lower_flange_thickness)
            {
                girder_lower_flange_width = Math.Min(0.6, 32 * girder_lower_flange_thickness);
            }
            //计算纵梁的惯性矩
            double Area = girder_upper_flange_thickness * girder_upper_flange_width +
                          girder_lower_flange_width * girder_lower_flange_thickness +
                          girder_web_thickness * girder_web_height;
            double yc = (1.0 / Area) * (0.5 * girder_upper_flange_width * girder_upper_flange_thickness * girder_upper_flange_thickness
                                        + girder_web_thickness * girder_web_height * (0.5 * girder_web_height + girder_upper_flange_thickness)
                                        + girder_lower_flange_width * girder_lower_flange_thickness * (0.5 * girder_lower_flange_thickness
                                                                                                       + girder_upper_flange_thickness + girder_web_height));

            //只计算腹板的惯性矩
            axis_moment_inertial_girder = 1 / 3.0 * (girder_web_thickness * yc * yc * yc) + 1 / 3.0 * (girder_web_thickness * (girder_web_height - yc)
                                                                                                       * (girder_web_height - yc) * (girder_web_height - yc)) + girder_upper_flange_thickness * girder_upper_flange_width * yc * yc +
                                          girder_lower_flange_width * girder_lower_flange_thickness * (girder_web_height - yc) * (girder_web_height - yc);
            //计算各个结构定位线的偏移距离
            lateral_offset_dis = new double[girder_nums];
            //结构定位线数量为奇数的时候
            if (girder_nums % 2 == 1)
            {
                int tmp_num = -girder_nums / 2;
                for (int i = 0; i < lateral_offset_dis.Length; i++)
                {
                    lateral_offset_dis[i] = tmp_num * girder_gap;
                    tmp_num++;
                }
            }
            //为偶数的时候
            else
            {
                double tmp_off_para = -girder_nums / 2 + 0.5;
                for (int i = 0; i < lateral_offset_dis.Length; i++)
                {
                    lateral_offset_dis[i] = tmp_off_para * girder_gap;
                    tmp_off_para++;
                }
            }

            //计算垂直偏移距离
            //桥面板厚度t的计算采用经验公式t=k*(30b+110)单位是mm
            //k取1.2,铺装层厚度取70mm,加腋高度取80mm,斜率为1:3

            double th_plate = 1.2 * (30 * girder_gap + 110);

            vertical_offset_dis = Convert.ToInt32(Math.Ceiling(th_plate / 10.0) * 10);
        }