def pier_create(self, pier_sec, cap_height, sec_box): for i, j in enumerate(self.bridge_inf['pier']): pier_width = sec_box[pier_sec[i]][1] i_top = -self.beam_height - self.support_height - cap_height[i] i_bot = i_top + cap_height[i] - max( cap_height) - self.bridge_inf['pier_h'] i_x = -self.span_length, 0, self.span_length i_z = np.linspace(i_bot, i_top, 11) for m in i_x: for n in i_z: self.add_node(m, j, n, 'pier') i_nodes = self.node[(self.node['what'] == 'pier') & (self.node['x'] == m) & (self.node['y'] == j)].index i_pier_elem = midas1.elem_from_nodes( i_nodes, s=self.sec_dic[pier_sec[i]], m=3, num=self.num_l, what='pier') self.elem = pd.concat([self.elem, i_pier_elem]) for n in [-pier_width / 2 + 0.5, pier_width / 2 - 0.5]: self.add_node(m, j + n, i_top, 'link_pier') self.link_pier_loc.add(j + n)
def beam_create(self): beam_sec_id = self.sec_dic['B' + str(self.beam_num)] support_dis = self.beam_offset + self.beam_support_offset node_x = [self.beam_offset, support_dis] node_x += list(range(1, int(self.span_length))) node_x += [ self.span_length - support_dis, self.span_length - self.beam_offset ] node_x += [round(i - self.span_length, 5) for i in node_x] node_x.sort() node_y = sum(self.bridge_inf['bridge']) / 2 node_z = 0 for i in node_x: self.add_node(i, node_y, node_z, 'beam') for i in [ -self.span_length + support_dis, -support_dis, support_dis, self.span_length - support_dis ]: for j in self.support_loc: self.add_node(i, j, node_z - self.beam_height, 'support_beam') self.add_node(i, j, node_z - self.beam_height - self.support_height, 'support_cap') nodes = self.node[(self.node['what'] == 'beam') & (self.node['x'] < 0)].index elem1 = midas1.elem_from_nodes(nodes, s=beam_sec_id, m=1, num=self.num_l, what='beam') nodes = self.node[(self.node['what'] == 'beam') & (self.node['x'] > 0)].index elem2 = midas1.elem_from_nodes(nodes, s=beam_sec_id, m=1, num=self.num_l, what='beam') self.elem = pd.concat([self.elem, elem1, elem2])
def cap_create(self, cap_loc, cap_sec): cap_must = sorted(cap_loc + list(self.link_pier_loc) + self.bridge_inf['pier'] + self.support_loc) cap_add = [] for i, j in enumerate(cap_must): if i != 0: space = j - cap_must[i - 1] if space > self.node_space: segment = int(space // self.node_space + 1) node_add_i = np.linspace(cap_must[i - 1], j, segment + 1).tolist() cap_add += node_add_i[1:-1] cap_y = sorted(cap_must + cap_add) i_x = -self.span_length, 0, self.span_length i_z = -self.beam_height - self.support_height for i in cap_y: for j in i_x: self.add_node(j, i, i_z, 'cap') for m in i_x: for i, j in enumerate(cap_sec[:-1]): if cap_sec[i + 1] == j: i_sec = self.sec_dic[j] else: i_sec = self.sec_dic[j + '_' + cap_sec[i + 1]] cap_interval = cap_loc[i:i + 2] i_nodes = self.node[(self.node['y'] >= cap_interval[0]) & (self.node['y'] <= cap_interval[1]) & (self.node['x'] == m) & (self.node['what'] == 'cap')].index i_cap_elem = midas1.elem_from_nodes(i_nodes, s=i_sec, m=1, num=self.num_l, what='cap') self.elem = pd.concat([self.elem, i_cap_elem])
def beam_create(self): beam_sec_id = self.sec_dic['B1'] beam_h_sec_id = self.sec_dic['BH'] support_dis = self.beam_offset + self.beam_support_offset node_x = [self.beam_offset, support_dis] node_x += np.linspace(self.beam_space / 2, self.span_length - self.beam_space / 2, self.span_length // self.beam_space).tolist() node_x += [ self.span_length - support_dis, self.span_length - self.beam_offset ] node_x += [round(i - self.span_length, 5) for i in node_x] node_x.sort() node_y = self.support_loc node_z = 0 for j in node_y: for i in node_x: self.add_node(i, j, node_z, 'beam') for i in [ -self.span_length + support_dis, -support_dis, support_dis, self.span_length - support_dis ]: for j in self.support_loc: self.add_node(i, j, node_z - self.beam_height, 'support_beam') self.add_node(i, j, node_z - self.beam_height - self.support_height, 'support_cap') for i in node_y: nodes = self.node[(self.node['what'] == 'beam') & (self.node['x'] < 0) & (self.node['y'] == i)].index elem1 = midas1.elem_from_nodes(nodes, s=beam_sec_id, m=1, num=self.num_l, what='beam') nodes = self.node[(self.node['what'] == 'beam') & (self.node['x'] > 0) & (self.node['y'] == i)].index elem2 = midas1.elem_from_nodes(nodes, s=beam_sec_id, m=1, num=self.num_l, what='beam') self.elem = pd.concat([self.elem, elem1, elem2]) h_x = np.linspace(self.beam_space / 2, self.span_length - self.beam_space / 2, self.span_length // self.beam_space).tolist() h_x += np.linspace(self.beam_space / 2 - self.span_length, -self.beam_space / 2, self.span_length // self.beam_space).tolist() for i in h_x: nodes = self.node[(self.node['what'] == 'beam') & (self.node['x'] == i)].index elem1 = midas1.elem_from_nodes(nodes, s=beam_h_sec_id, m=4, num=self.num_l, what='beam_h') self.elem = pd.concat([self.elem, elem1])