def pavement(self): bridge_w = self.bridge_inf['bridge'][1] - self.bridge_inf['bridge'][0] pave_w = bridge_w - sum(self.barrier[0]) barrier_f = sum(self.barrier[1]) * 26 pave_f = bridge_w * self.pave_thickness[ 0] * 26 + pave_w * self.pave_thickness[1] * 24 fz = -barrier_f - pave_f midas1.start_stld('PAVEMENT', self.mct_l) midas1.start_beam_load(self.mct_l) i_elems = self.elem[self.elem['what'] == 'beam'].index midas1.beam_load(i_elems, fz, mct_list=self.mct_l, group='pavement')
def tem(self): i_elems = self.elem.index midas1.start_stld('TEM_U', self.mct_l) midas1.start_tem_load(self.mct_l) for i in i_elems: midas1.tem_load(i, self.temp[0], mct_list=self.mct_l, group='tem_u') midas1.start_stld('TEM_D', self.mct_l) midas1.start_tem_load(self.mct_l) for i in i_elems: midas1.tem_load(i, self.temp[1], mct_list=self.mct_l, group='tem_d')
def brake_force(self, side=2): midas1.start_stld('BRAKE_FORCE', self.mct_l) midas1.start_beam_load(self.mct_l) bridge_w = self.bridge_inf['bridge'][1] - self.bridge_inf['bridge'][0] lane_num = kny_tool.get_lanes_from_w(bridge_w, side=side) if side == 2: brake_f = lane_num / 2 * 165 else: brake_f = lane_num * 165 brake_f *= 1 / 30 brake_elem = self.elem[self.elem['what'] == 'beam'].index midas1.beam_load(brake_elem, brake_f, side='X', offset_side='Z', offset_dis=1.2, mct_list=self.mct_l, group='brake_force')
def wind(self, h=5): bridge_w = self.bridge_inf['bridge'][1] - self.bridge_inf['bridge'][0] wind_beam = wind.BeamWind(0, [bridge_w, 1.6, 14], h, 30) beam_f = wind_beam.Fg / 1000 elem_wind = self.elem[self.elem['what'] == 'beam'].index midas1.start_stld('WIND_1', self.mct_l) midas1.start_beam_load(self.mct_l) midas1.beam_load(elem_wind, beam_f, mct_list=self.mct_l, group='wind_1', side='Y') midas1.start_stld('WIND_2', self.mct_l) midas1.start_beam_load(self.mct_l) midas1.beam_load(elem_wind, -beam_f, mct_list=self.mct_l, group='wind_2', side='Y')
def add_tendon(self, cap_sec, secs): # 钢束线型 midas1.tendon_prop(['T1'], [140 * self.tendon_per_n / 1e6], 2, self.mct_l) # 钢束线型 tendon_loc, tendon_type = kny_tool.tendon_loc_type(self.bridge_inf) midas1.start_tendon_type(self.mct_l) tendon_z = [] tendon_r = [] for i, j in enumerate(tendon_type): if j == 0: i_sec = cap_sec[0] if i == 0 else cap_sec[-1] i_cz = -secs.secs[self.sec_dic[i_sec] - 1].prop['c'][2] i_z = i_cz + self.tendon_inf['tendon_to_top'][0] - \ np.average(self.tendon_inf['tendon_to_top'][0], weights=self.tendon_inf['tendon_ni']) tendon_z.append(i_z) tendon_r.append(0) else: tendon_z.append(self.tendon_inf['tendon_to_top'][j - 1]) tendon_r.append(self.tendon_curve_r) origin_pt = (0, 0, -self.beam_height - self.support_height) tendon_elem = self.elem[(self.elem['what'] == 'cap') & (self.elem['x'] == 0)].index y_pt = [(min(tendon_loc), 0, 0), (max(tendon_loc), 0, 0)] for i, j in enumerate(self.tendon_inf['tendon_ni']): i_pt_z = [m[i] for m in tendon_z] z_pt = np.array([tendon_loc, i_pt_z, tendon_r]).T midas1.tendon_type(f't-{i+1}', 'T1', tendon_elem, self.tendon_inf['tendon_ni'][i], origin_pt, 'Y', y_pt, z_pt, self.mct_l) # 张拉预应力 midas1.start_stld('TENDON', self.mct_l) midas1.start_tendon_f(self.mct_l) for i, j in enumerate(self.tendon_inf['tendon_ni']): midas1.tendon_f(f't-{i + 1}', mct_list=self.mct_l)
def self_weight(self): midas1.start_stld('DEAD', mct_list=self.mct_l) midas1.add_self_weight(1, mct_list=self.mct_l, group='dead')