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; } } }
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); }