Exemplo n.º 1
0
def results():
    # add section data and loads of the dialog
    E = float(ui.editE.text())
    I = float(ui.editI.text())
    A = float(ui.editA.text())
    ss = SystemElements()
    frame = FreeCAD.ActiveDocument.getObjectsByLabel(
        ui.comboBox.currentText())[0]
    sk = frame.Base
    for l in sk.Geometry:
        sp = [i * 1e-3 for i in list(l.StartPoint)[:2]]
        ep = [i * 1e-3 for i in list(l.EndPoint)[:2]]
        ss.add_element([sp, ep], EA=E * A, EI=E * I)
    for i in list(range(len(sk.Geometry))):
        if ui.table.item(i, 1):
            item = ui.table.item(i, 1)
            try:
                load = float(item.text())
                ss.q_load(element_id=(i + 1), q=load)
            except:
                pass
    for i in list(range(ss.id_last_node)):
        if ui.table_2.item(i, 1):
            if ui.table_2.item(i, 1).text() == 'fix':
                ss.add_support_fixed(node_id=i + 1)
            elif ui.table_2.item(i, 1).text() == 'hinge':
                ss.add_support_hinged(node_id=i + 1)
            elif ui.table_2.item(i, 1).text() == 'roll':
                ss.add_support_roll(node_id=i + 1)
    ss.solve()
    ss.show_results()
Exemplo n.º 2
0
def test_timoshenko_discrete():
    system = SystemElements()
    system.add_element(location=[[0.25, 0]],
                       EA=1.4e8,
                       EI=1.167e5,
                       GA=0.8333 * 8.75e6)
    system.add_element(location=[[0.5, 0]],
                       EA=1.4e8,
                       EI=1.167e5,
                       GA=0.8333 * 8.75e6)
    system.add_element(location=[[0.75, 0]],
                       EA=1.4e8,
                       EI=1.167e5,
                       GA=0.8333 * 8.75e6)
    system.add_element(location=[[1, 0]],
                       EA=1.4e8,
                       EI=1.167e5,
                       GA=0.8333 * 8.75e6)
    system.q_load(element_id=1, q=5000, direction="y")
    system.q_load(element_id=2, q=5000, direction="y")
    system.q_load(element_id=3, q=5000, direction="y")
    system.q_load(element_id=4, q=5000, direction="y")

    system.add_support_hinged(node_id=1)
    system.add_support_roll(node_id=5)

    system.solve()

    assert np.isclose(abs(system.system_displacement_vector[7]),
                      6.44e-4,
                      rtol=1e-2)
Exemplo n.º 3
0
def redraw():
    frame = FreeCAD.ActiveDocument.getObjectsByLabel(
        ui.comboBox.currentText())[0]
    print(frame.Label)
    sk = frame.Base
    print('\tBase: ' + sk.Label)
    A = frame.Profile.Shape.Area * 1e-6
    I = frame.Profile.Shape.MatrixOfInertia.multiply(X).dot(X) * 1e-12
    ss = SystemElements()
    for l in sk.Geometry:
        sp = [i * 1e-3 for i in list(l.StartPoint)[:2]]
        ep = [i * 1e-3 for i in list(l.EndPoint)[:2]]
        ss.add_element([sp, ep], EA=E * A, EI=E * I)
    print('\tNodes: %i\n\tElements: %i\n\n' %
          (ss.id_last_node, ss.id_last_element))
    ss.show_structure()
    ui.editE.setText(str(E))
    ui.editA.setText(str(A))
    ui.editI.setText(str(I))
    n = len(sk.Geometry)
    ui.table.setRowCount(n)
    for i in list(range(n)):
        item = QtGui.QTableWidgetItem('%.1f m' %
                                      (sk.Geometry[i].length() / 1000))
        ui.table.setItem(i, 0, item)
    ui.table.setItem(3, 1, QtGui.QTableWidgetItem('-2000'))  #for test
    ui.table.setItem(4, 1, QtGui.QTableWidgetItem('-1000'))  #for test
    ui.table_2.setRowCount(ss.id_last_node)
    for i in list(range(ss.id_last_node)):
        ui.table_2.setItem(
            i, 0,
            QtGui.QTableWidgetItem('%.2f, %.2f' % ss.nodes_range('both')[i]))
    ui.table_2.setItem(0, 1, QtGui.QTableWidgetItem('fix'))  #for test
    ui.table_2.setItem(3, 1, QtGui.QTableWidgetItem('roll'))  #for test
    ui.table_2.setItem(5, 1, QtGui.QTableWidgetItem('hinge'))  #for test
Exemplo n.º 4
0
 def solve(self):
     from anastruct import SystemElements
     ss = SystemElements()
     ss.solve()
     ss.show_structure()
     ss.show_reaction_force()
     ss.show_bending_moment()
Exemplo n.º 5
0
 def __init__(self, main_window, main_window_functions):
     self.mw = main_window
     self.fn = main_window_functions
     self.ss = SystemElements()
     self.ss.color_scheme = "dark"
     self.was_solved = False
     self.states = []
Exemplo n.º 6
0
def makestructure(nodes,
                  segs,
                  fixednodes,
                  loadnodes,
                  thicknesses,
                  tensile=tensilePLA,
                  totalload=100):

    ss = SystemElements()
    #loop through segments and create them
    for s, thickness in zip(segs, thicknesses):
        ss.add_truss_element(location=[nodes[s[0]], nodes[s[1]]],
                             EA=tensile * thickness * strutwidth,
                             g=0,
                             spring={
                                 1: 0.0001,
                                 2: 0.0001
                             })

    #

    for f, supporttype in fixednodes:
        if supporttype == 'hinged':
            ss.add_support_hinged(node_id=f + 1)
        elif supporttype == 'roll':
            ss.add_support_roll(node_id=f + 1, direction='x')
        elif supporttype == 'fixed':
            ss.add_support_fixed(node_id=f + 1)
    #add in other types of supports here
    for l in loadnodes:
        ss.point_load(l + 1, Fx=0, Fy=-totalload / len(loadnodes))

    return ss
Exemplo n.º 7
0
def generate_truss_by_grid(grid, enabled):
    """
	enabled is a list of booleans indicating which members in the grid are enabled. Length must match the total possible members in the grid
	"""
    enabled = np.array(enabled)
    width = MIN_WIDTH / 2
    height = MAX_HEIGHT
    all_possible_members = grid
    # print(f"number of possible members: {len(all_possible_members)}")
    assert len(all_possible_members) == len(enabled)
    members = all_possible_members[enabled]
    print(f"members selected: {len(members)}")
    # mirror the members to the right side
    members_mirror = np.copy(members)
    for member in members_mirror:
        for point in member:
            point[0] *= -1
            point[0] += width * 2
    members = np.append(members, members_mirror, axis=0)
    truss = SystemElements(EA=MODULUS_OF_ELASTICITY * BRASS_CROSS_SECTION_AREA,
                           EI=MODULUS_OF_ELASTICITY * MOMENT_OF_INERTIA)
    for member in members:
        truss.add_truss_element(member)
    try:
        truss.add_support_hinged(node_id=truss.find_node_id(vertex=[0, 0]))
        truss.add_support_hinged(node_id=truss.find_node_id(
            vertex=[width * 2, 0]))
        return truss
    except:
        return None
Exemplo n.º 8
0
 def redraw(self):
     for l in self.labNodes + self.labEl:
         l.removeLabel()
     if self.form.comboBox.currentText():
         frame = FreeCAD.ActiveDocument.getObjectsByLabel(
             self.form.comboBox.currentText())[0]
         sk = frame.Base
         A = frame.Profile.Shape.Area
         I = frame.Profile.Shape.MatrixOfInertia.multiply(X).dot(X)
         ss = SystemElements()
         i = 1
         for l in sk.Geometry:
             sp = [i * 1e-3 for i in list(l.StartPoint)[:2]]
             ep = [i * 1e-3 for i in list(l.EndPoint)[:2]]
             ss.add_element([sp, ep], EA=E * A * 1e-3, EI=E * I * 1e-9)
             p2 = FreeCAD.Placement()
             p2.Base = sk.Placement.multVec((l.StartPoint + l.EndPoint) / 2)
             self.labNodes.append(
                 label3D(pl=p2, color=(0, 0.8, 0),
                         text='____beam' + str(i)))
             i += 1
         nodes = ss.nodes_range('both')
         coords = [
             FreeCAD.Vector(n[0] * 1000, n[1] * 1000, 0) for n in nodes
         ]
         globalCoords = [sk.Placement.multVec(c) for c in coords]
         i = 1
         for gc in globalCoords:
             self.labNodes.append(
                 label3D(pl=FreeCAD.Placement(gc, FreeCAD.Rotation()),
                         text='____node' + str(i)))
             i += 1
         self.form.editE.setText(str(E))
         self.form.editA.setText(str(A))
         self.form.editI.setText(str(I))
         n = len(sk.Geometry)
         self.form.tableDistrib.setRowCount(n)
         self.combotypes.clear()
         for i in list(range(n)):
             item = QTableWidgetItem('%.1f m' %
                                     (sk.Geometry[i].length() / 1000))
             self.form.tableDistrib.setItem(i, 0, item)
             self.combotypes.append(QComboBox())
             self.combotypes[-1].addItems(['beam', 'brace'])
             self.form.tableDistrib.setCellWidget(i, 1, self.combotypes[-1])
         #self.form. tableDistrib.setItem(0,1,QTableWidgetItem('1000')) #for test
         self.form.table_2.setRowCount(ss.id_last_node)
         self.form.tableConc.setRowCount(ss.id_last_node)
         self.combos.clear()
         for i in list(range(ss.id_last_node)):
             self.form.table_2.setItem(
                 i, 0,
                 QTableWidgetItem('%.2f, %.2f' % ss.nodes_range('both')[i]))
             self.combos.append(QComboBox())
             self.combos[-1].addItems(['-', 'fix', 'hinge', 'roll'])
             self.form.table_2.setCellWidget(i, 1, self.combos[-1])
             self.form.tableConc.setItem(
                 i, 0,
                 QTableWidgetItem('%.2f, %.2f' % ss.nodes_range('both')[i]))
Exemplo n.º 9
0
 def element(self):
     x1 = float(self.x1value.text())
     x2 = float(self.x2value.text())
     y1 = float(self.y1value.text())
     y2 = float(self.y2value.text())
     from anastruct import SystemElements
     ss = SystemElements()
     ss.add_element(location=[[x1, y1], [x2, y2]])
     ss.show_structure()
Exemplo n.º 10
0
 def reset_struct_elems(self):
     self.ss = SystemElements()
     self.ss.color_scheme = "dark"
     self.states.clear()
     self.mw.MplWidget.plot(has_grid=self.mw.gridBox.isChecked())
     self.mw.MplWidget.set_background_alpha()
     self.mw.MplWidget.set_subplot_alpha()
     self.fn.figurefix()
     self.was_solved = False
     self.fn.disable_buttons()
Exemplo n.º 11
0
def test_parallel_q_load():
    system = SystemElements()
    system.add_element(location=[[0, 0], [1, 0]], EA=5e9, EI=8000)
    system.q_load(element_id=1, q=-10, direction="x")
    system.add_support_hinged(node_id=1)
    system.add_support_roll(node_id=2)

    system.solve()

    assert system.element_map[1].N_1 == -10
    assert system.element_map[1].N_2 == 0
Exemplo n.º 12
0
 def __init__(
     self,
     system_elements,
     node_order=None,
     assemble_order=None,
     target_dir="tmp",
 ):
     self.ss = system_elements
     self.branch_ss = SystemElements()
     self.assemble_order = assemble_order
     self.node_order = node_order
     self.target_dir = target_dir
Exemplo n.º 13
0
def test_linear_parallel_q_load():
    system = SystemElements()
    system.add_element(location=[[0, 0], [1, 0]], EA=5e2, EI=800)
    system.add_element(location=[[1, 0], [2, 0]], EA=5e2, EI=800)
    system.q_load(element_id=1, q=10, q2=20, direction="x")
    system.add_support_hinged(node_id=1)
    system.add_support_roll(node_id=3)

    system.solve()

    assert np.isclose(system.reaction_forces[1].Fx, -15)
    assert np.isclose(np.max(system.system_displacement_vector), 0.01666667)
Exemplo n.º 14
0
def test_bernoulli():
    system = SystemElements()
    system.add_element(location=[[0, 0], [1, 0]], EA=1.4e8, EI=1.167e5)
    system.q_load(element_id=1, q=5000, direction="y")

    system.add_support_hinged(node_id=1)
    system.add_support_roll(node_id=2)

    system.solve()

    assert np.isclose(np.max(abs(system.element_map[1].deflection)),
                      5.58e-4,
                      rtol=1e-2)
Exemplo n.º 15
0
def test_linear_q_load():
    system = SystemElements()
    system.add_element(location=[[0, 0], [1, 0]], EA=5e8, EI=800)
    system.add_element(location=[[1, 0], [2, 0]], EA=5e8, EI=800)
    system.q_load(element_id=1, q=-10, q2=-20, direction="y")
    system.add_support_hinged(node_id=1)
    system.add_support_roll(node_id=3)

    system.solve()

    assert np.isclose(np.max(abs(system.element_map[1].shear_force)), 10.87, rtol=1e-2)
    assert np.isclose(np.max(abs(system.element_map[2].shear_force)), 4.17, rtol=1e-2)
    assert np.isclose(np.max(abs(system.element_map[1].bending_moment)), 4.62, rtol=1e-2)
    assert np.isclose(np.max(abs(system.system_displacement_vector)), 3.7673e-3, rtol=1e-2)
Exemplo n.º 16
0
 def support(self):
     apoio = str(self.apoiobox.currentText())
     pos = int(self.apoiopos.text())
     from anastruct import SystemElements
     ss = SystemElements()
     if apoio == 'Fixo':
         ss.add_support_hinged(node_id=pos)
     elif apoio == 'Móvel':
         ss.add_support_roll(node_id=pos)
     elif apoio == 'Engaste':
         ss.add_support_fixed(node_id=pos)
     elif apoio == 'Mola':
         ss.add_support_spring(node_id=pos)
     ss.show_structure()
Exemplo n.º 17
0
def build_struct(nodes):
    ss = SystemElements()
    for i in range(len(nodes) - 1):
        ss.add_element(location=[nodes[i], nodes[i + 1]])

    ss.add_support_fixed(node_id=1)
    if nodes.count(end_xy) > 0:
        print("End point reached")
        ss.add_support_fixed(node_id=nodes.index(end_xy) + 1)

    ss.q_load(element_id=1, q=-1)
    ss.solve()
    ss.show_structure()
    ss.show_displacement()
Exemplo n.º 18
0
def Beam_objective_funciton_BD(depths):
    #def fn(*args):
    #beam1 = Beam(depth,breadth,Asc,Ast,15,415,415,3.14*10**2/4,spacing);
    #beam1.moment_capcity()
    #beam1.min_spacing()
    #beam1.max_spacing()
    FS = SystemElements()

    # Add beams to the system.
    FS.add_element(location=[0, 5], EA=15000, EI=5000)
    FS.add_element(location=[[0, 5], [5, 5]], EA=15000, EI=5000)
    FS.add_element(location=[[5, 5], [5, 0]], EA=15000, EI=5000)

    # Add a fixed support at node 1.
    FS.add_support_fixed(node_id=1)

    # Add a rotational spring support at node 4.
    FS.add_support_spring(node_id=4, translation=3, k=4000)

    # Add loads.
    FS.point_load(Fx=30, node_id=2)
    FS.q_load(q=-10, element_id=2)
    FS.q_load(q=-10, element_id=1)
    #ss.q_load(q=-10, element_id=4)
    #print(ss.node_ranges())

    # Solve
    FS.solve()
    FS.get_element_results(element_id=1)['length']
    FS.get_element_results(element_id=1)['Mmin']
    deno = FS.get_element_results(element_id=1)['Mmax']

    #breadth = randgen(300,600)
    #Asc = 0
    #Ast = 0
    #spacing = 150
    #beam = Beam(depth,breadth,Asc,Ast,15,415,415,3.14*10**2/4,spacing)
    #Asc = beam.p_min()
    #Ast = beam.p_min()
    #beam1 = Beam(depth,breadth,Asc,Ast,15,415,415,3.14*10**2/4,spacing)
    #beam1.moment_capcity()
    #beam1.min_spacing()
    #beam1.max_spacing()

    #print(beam1.moment_capcity()*10**(-3))
    #print(FS.get_element_results(element_id=1)['Mmax'])
    res, depth_f = Beam_gene(depths, deno)
    C_D = res / deno
    #print()
    return C_D
Exemplo n.º 19
0
def test_timoshenko_continuous():
    system = SystemElements()
    system.add_element(location=[[0, 0], [1, 0]],
                       EA=1.4e8,
                       EI=1.167e5,
                       GA=0.8333 * 8.75e6)
    system.q_load(element_id=1, q=5000, direction="y")

    system.add_support_hinged(node_id=1)
    system.add_support_roll(node_id=2)

    system.solve()

    assert np.isclose(np.max(abs(system.element_map[1].deflection)),
                      6.44e-4,
                      rtol=1e-2)
Exemplo n.º 20
0
 def pressed(self):
     x1 = int(self.x1value.text())
     x2 = int(self.x2value.text())
     y1 = int(self.y1value.text())
     y2 = int(self.y2value.text())
     movel = (int(self.movelvalue.text()))
     fixo = (int(self.fixovalue.text()))
     from anastruct import SystemElements
     ss = SystemElements()
     ss.add_element(location=[[x1, y1], [x2, y2]])
     ss.add_support_hinged(node_id=movel)
     ss.add_support_fixed(node_id=fixo)
     ss.q_load(element_id=1, q=-10)
     ss.solve()
     ss.show_structure()
     ss.show_reaction_force()
Exemplo n.º 21
0
def test_moment_q_load():
    system = SystemElements()
    start=0
    step = 0.1
    for i in range(20):
        system.add_element(location=[[start, 0], [start+step, 0]], EA=5e2, EI=800)
        start+=step
        system.q_moment(element_id=1+i, Ty=10)


    system.add_support_hinged(node_id=1)
    system.add_support_roll(node_id=21)

    system.solve()

    assert np.isclose(system.reaction_forces[1].Fz, 10)
Exemplo n.º 22
0
def test_example():
    system = SystemElements()
    system.add_element(location=[[0, 0], [3, 4]], EA=5e9, EI=8000)
    system.add_element(location=[[3, 4], [8, 4]], EA=5e9, EI=4000)
    system.q_load(element_id=2, q=-10)
    system.add_support_hinged(node_id=1)
    system.add_support_fixed(node_id=3)

    sol = np.fromstring(
        """0.00000000e+00   0.00000000e+00   1.30206878e-03   1.99999732e-08
       5.24999402e-08  -2.60416607e-03   0.00000000e+00   0.00000000e+00
       0.00000000e+00""",
        float,
        sep=" ",
    )
    system.solve
    assert np.allclose(system.solve(), sol)
Exemplo n.º 23
0
def Beam_objective_funciton(breadth):
    depth = randgen(300,600)
    Asc = 0 
    Ast = 0
    spacing = 150
    beam = Beam(depth,breadth,Asc,Ast,15,415,415,3.14*10**2/4,spacing);
    Asc = beam.p_min 
    Ast = beam.p_min
    beam1 = Beam(depth,breadth,Asc,Ast,15,415,415,3.14*10**2/4,spacing);
    beam1.moment_capcity()
    beam1.min_spacing()
    beam1.max_spacing()


    FS = SystemElements()

    # Add beams to the system.
    FS.add_element(location=[0, 5],EA=15000, EI=5000)
    FS.add_element(location=[[0, 5], [5, 5]],EA=15000, EI=5000)
    FS.add_element(location=[[5, 5], [5, 0]],EA=15000, EI=5000)
    
    # Add a fixed support at node 1.
    FS.add_support_fixed(node_id=1)
    
    # Add a rotational spring support at node 4.
    FS.add_support_spring(node_id=4, translation=3, k=4000)
    
    # Add loads.
    FS.point_load(Fx=30, node_id=2)
    FS.q_load(q=-10, element_id=2)
    FS.q_load(q=-10, element_id=1)
    #ss.q_load(q=-10, element_id=4)
    #print(ss.node_ranges())
    
    # Solve
    FS.solve()

    FS.get_element_results(element_id=1)['length']
    FS.get_element_results(element_id=1)['Mmin']
    FS.get_element_results(element_id=1)['Mmax']


    print(beam1.moment_capcity()*10**(-3))
    print(FS.get_element_results(element_id=1)['Mmax'])
Exemplo n.º 24
0
def test_moment_load_benchmark():
    system = SystemElements()
    system.add_element(location=[[3.75, 0]], EA=5e12, EI=5e12)
    system.add_element(location=[[7.5,0]], EA=5e12, EI=5e12)

    system.q_moment(element_id=1, Ty=1.91)
    system.q_moment(element_id=2, Ty=1.91)
    system.q_load(element_id=1, q=3.62, direction="y")
    system.q_load(element_id=2, q=3.62, direction="y")

    system.add_support_spring(1, 2, 5)
    system.add_support_spring(2, 2, 2.5)
    system.add_support_spring(3, 2, 2.5)


    system.solve()
    assert np.isclose(np.max(abs(system.element_map[1].bending_moment)), 13.89,rtol=1e-2)

    assert np.isclose(system.reaction_forces[1].Fz, 11.93,rtol=1e-2)
Exemplo n.º 25
0
def test_solve_modal_analysis():
    system = SystemElements()
    l = 10
    n = 50
    subd = l / n
    for i in range(n):
        system.add_element(location=[[subd * i, 0], [subd * (i + 1), 0]], EA=5e8, EI=800, linear_density=10)

    system.add_support_hinged(node_id=1)
    system.add_support_roll(node_id=n + 1)

    natural_frequencies = system.solve_modal_analysis()

    def analytical_natural_frequencies(linear_density, l, EI, n):
        # See Rao, Singiresu S. - Vibration of continuous Systems - John Wiley & Sons (2019) - Section 11.5.1
        return (n ** 2) * (np.pi ** 2) * np.sqrt(EI / (linear_density * l ** 4))

    # retrieve fist four eigenvalues, as error incr6eases for higher eigenvalues
    for i in range(4):
        assert np.isclose(natural_frequencies[i], analytical_natural_frequencies(10, 10, 800, i + 1), rtol=1e-2)
    def __init__(self,
                 x,
                 y,
                 connections,
                 loads,
                 supports,
                 density=880,
                 unit='m',
                 width=0.95 / 100,
                 thick=1.8 / 1000,
                 pop_compressive_strength=18100,
                 pop_tensile_strength=70000):
        pop_cross_area = width * thick
        pop_mpl = pop_cross_area * density
        g = pop_mpl * 9.81 / 1000
        unit_conv = 1
        if (unit == 'cm'):
            unit_conv = (1 / 100)
        nodes = [[x[i] * unit_conv, y[i] * unit_conv] for i in range(len(x))]
        ss = SystemElements(EA=pop_cross_area * 8600000)
        for node1, node2 in connections:
            ss.add_element([nodes[node1], nodes[node2]],
                           element_type='truss',
                           g=g)

        for node in supports:
            id = ss.find_node_id(nodes[node])
            ss.add_support_fixed(id)
        for node, load in loads:
            id = ss.find_node_id(nodes[node])
            ss.point_load(id, Fy=-9.81 * load / 1000)
        ss.solve()
        self.ss = ss
        self.nodes = nodes
        self.connections = connections
        self.loads = loads
        self.supports = supports
        self.pop_mpl = pop_mpl
        self.cross_area = pop_cross_area
        self.compress = pop_compressive_strength
        self.tensile = pop_tensile_strength
Exemplo n.º 27
0
def test_moment_load_benchmark_2():
    system = SystemElements()
    system.add_element(location=[[3.125, 0]], EA=5e12, EI=5e12)
    system.add_element(location=[[5.625+3.125,0]], EA=5e12, EI=5e12)

    system.q_moment(element_id=1, Ty=1.836)
    system.q_moment(element_id=2, Ty=1.836)
    system.q_load(element_id=1, q=4.08, direction="y")
    system.q_load(element_id=2, q=4.08, direction="y")

    system.add_support_spring(1, 2, 3.75)
    system.add_support_spring(2, 2, 2.5)
    system.add_support_spring(3, 2, 2.5)

    #system.add_support_hinged(1)
    #system.add_support_hinged(2)
    #system.add_support_hinged(3)

    system.solve()
    assert np.isclose(np.max(abs(system.element_map[2].bending_moment)), 24.87,rtol=1e-2)
    assert np.isclose(np.max(abs(system.element_map[1].shear_force)), 13.2,rtol=1e-2)
Exemplo n.º 28
0
def test_struct1():
    ss = SystemElements()
    ss.add_element([[-2, 2], [-1, 0]])
    ss.add_element([[-2, 3], [-2, 2]])
    ss.add_element([[-1, 4], [-2, 3]])
    # ss.add_element([[-1, 4], [0, 5]])
    # ss.add_element([[0, 5], [1, 5]])
    # ss.add_element([[1, 5], [2, 5]])
    # ss.add_element([[2, 5], [3, 5]])
    # ss.add_element([[3, 5], [5, 2]])
    ss.add_element([[-3, 4], [-2, 3]])
    ss.add_element([[-4, 4], [-3, 4]])
    ss.add_element([[-3, 5], [-3, 4]])
    ss.add_element([[-2, 0], [-1, 0]])
    ss.add_element([[-2, 1], [-2, 0]])
    ss.add_element([[-2, -1], [-2, 0]])
    ss.add_element([[-3, 0], [-2, 0]])
    ss.add_element([[-4, 1], [-3, 0]])
    ss.add_element([[-5, 2], [-4, 1]])
    ss.add_element([[-4, -1], [-3, 0]])
    ss.add_element([[-5, -2], [-4, -1]])
    ss.add_element([[-1, 0], [0, 0]])
    ss.add_element([[0, 0], [1, 0]])
    ss.add_element([[2, 0], [3, 0]])
    ss.add_element([[1, 0], [2, 0]])
    ss.add_element([[2, 0], [3, 1]])
    ss.point_load(10, 5)
    ss.moment_load(1, 15)
    # ss.add_element([[3, 1], [4, 1]])
    # ss.add_element([[3, 1], [3, 2]])
    # ss.add_element([[4, 1], [5, 2]])
    # ss.add_element([[4, 1], [6, 2]])
    ss.add_element([[1, 0], [-1, 1]])
    ss.show_structure()
    ass = Assembler(ss)
    ass.assemble_structure(main_path=(15, 20))
    # ass.assemble_structure(main_path=(7, 13))
    # ass.plot_solve_order(ass.plot_order, show=True, save_figure=False, plotting_start_node=15)
    [[print(f"section {index + 1}-{sub_index + 1}: {sympify(sub_string, evaluate=False)}") for sub_index, sub_string in
      enumerate(string)] for index, string in enumerate(ass.sections_strings)]
Exemplo n.º 29
0
def test_struct():
    ss = SystemElements()
    ss.add_element([[0, 0], [1, 0]])
    ss.add_element([[1, 0], [1, 1]])
    ss.add_element([[1, 0], [2, 0]])
    ss.add_element([[2, 0], [3, 0]])
    ss.add_element([[3, 0], [4, 1]])
    ss.add_element([[4, 1], [5, 1]])
    ss.point_load(2, Fy=10)
    ss.point_load(3, Fy=-20, Fx=5)
    ss.point_load(4, Fy=-30)
    ss.point_load(5, Fx=-40)
    ss.moment_load(2, Ty=-9)
    ss.moment_load(1, 7)
    ss.moment_load(3, 3)
    ss.q_load(element_id=3, q=(-10, -20))
    ss.q_load(element_id=5, q=(-10, -20))
    ss.add_support_roll(4)
    ss.add_support_hinged(5)
    # ss.add_support_fixed(3)

    mn = Manager(ss)
    mn.generate_pdf(pdf_path=r"C:\testfolder")
Exemplo n.º 30
0
def test_struct2():
    ss = SystemElements()
    ss.add_element([[0, 0], [1, 0]])
    ss.add_element([[1, 0], [1, 1]])
    ss.add_element([[1, 0], [2, 0]])
    ss.add_element([[2, 0], [3, 0]])
    ss.add_element([[3, 0], [4, 1]])
    ss.add_element([[4, 1], [5, 1]])
    ss.point_load(2, Fy=10)
    ss.point_load(3, Fy=-20)
    ss.point_load(4, Fy=-30)
    ss.point_load(5, Fx=-40)
    ss.moment_load(2, Ty=-9)
    ss.moment_load(1, 7)
    ss.moment_load(3, 3)
    ss.q_load(element_id=3, q=(-10, -20))
    ss.add_support_roll(4)
    ss.add_support_hinged(5)
    # ss.show_structure()
    ss.solve()
    ss.show_reaction_force(show=False)
    ass = Assembler(ss)
    ass.assemble_structure(main_path=Setting.longest)
    [print(element.id, values) for element, values in ass.internal_stresses_dict.items()]