コード例 #1
0
    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)
コード例 #2
0
    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])
コード例 #3
0
    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])
コード例 #4
0
    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])