Пример #1
0
 def test_truss_single_hinge(self):
     ss = se.SystemElements(EA=68300, EI=128, mesh=50)
     ss.add_element(
         location=[[0.0, 0.0], [2.5, 0.0]],
         g=0,
         spring={1: 0, 2: 0},
     )
     ss.add_element(
         location=[[0.0, 0.0], [2.5, 2.0]],
         g=0,
         spring={1: 0, 2: 0},
     )
     ss.add_element(
         location=[[2.5, 0.0], [5.0, 0.0]],
         g=0,
         spring={1: 0, 2: 0},
     )
     ss.add_element(
         location=[[2.5, 2.0], [2.5, 0.0]],
         g=0,
         spring={1: 0, 2: 0},
     )
     ss.add_element(
         location=[[2.5, 2.0], [5.0, 0.0]],
         g=0,
         spring={1: 0, 2: 0},
     )
     ss.add_support_hinged(node_id=1)
     ss.add_support_hinged(node_id=4)
     ss.point_load(Fx=0, Fy=-20.0, node_id=3)
     ss.solve()
     self.assertAlmostEqual(-12.5, ss.get_node_results_system(1)["Fx"])
     self.assertAlmostEqual(-10, ss.get_node_results_system(1)["Fy"])
     self.assertAlmostEqual(0, ss.get_node_results_system(1)["Ty"])
     self.assertAlmostEqual(0, ss.get_node_results_system(3)["Ty"])
Пример #2
0
 def test_multiple_elements_spacing(self):
     ss = se.SystemElements(EI=5e3, EA=1e5)
     ss.add_multiple_elements([[0, 0], [10, 0]], 100)
     ss.add_support_fixed(1)
     ss.point_load(ss.id_last_node, Fy=-10)
     ss.solve()
     self.assertAlmostEqual(2 / 3, ss.get_node_results_system(-1)["uy"])
Пример #3
0
 def test_circle_section_deflection(self):
     ss = se.SystemElements()
     ss.add_multiple_elements([[0, 0], [2, 0]], n=2, d=0.07, E=210e9, sw=False)
     ss.add_support_hinged(1)
     ss.add_support_hinged(3)
     ss.point_load(2, Fy=-1000)
     ss.solve()
     self.assertAlmostEqual(-0.00067339, ss.get_node_displacements(2)['uy'])
Пример #4
0
 def test_rectangle_section_deflection(self):
     ss = se.SystemElements()
     ss.add_multiple_elements([[0, 0], [2, 0]], n=2, h=0.05, b=0.16, E=210e9, sw=False, orient='y')
     ss.add_support_hinged(1)
     ss.add_support_hinged(3)
     ss.point_load(2, Fy=-1000)
     ss.solve()
     self.assertAlmostEqual(-0.00047619, ss.get_node_displacements(2)['uy'])
Пример #5
0
 def test_sectionbase_steel_section_deflection(self):
     ss = se.SystemElements()
     ss.add_multiple_elements([[0, 0], [6, 0]], n=2, steelsection='IPE 300', E=210e9, sw=False, orient='y')
     ss.add_support_hinged(1)
     ss.add_support_hinged(3)
     ss.point_load(2, Fy=-10000)
     ss.solve()
     self.assertAlmostEqual(-0.00256442, ss.get_node_displacements(2)['uy'])
Пример #6
0
 def test_inclined_roll_force(self):
     ss = se.SystemElements()
     x = [0, 1, 2]
     y = [0, 0, 0]
     ss.add_element_grid(x, y)
     ss.add_support_hinged(1)
     ss.add_support_roll(3, angle=45)
     ss.point_load(2, Fy=-100)
     ss.solve()
     self.assertAlmostEqual(50, ss.get_node_results_system(3)["Fx"])
Пример #7
0
 def test_inclined_roll_force(self):
     ss = se.SystemElements()
     x = [0, 1, 2]
     y = [0, 0, 0]
     ss.add_element_grid(x, y)
     ss.add_support_hinged(1)
     ss.add_support_roll(3, angle=45)
     ss.point_load(2, Fy=-100)
     ss.solve()
     self.assertAlmostEqual(50, ss.get_node_results_system(3)['Fx'])
Пример #8
0
 def test_rotational_support(self):
     ss = se.SystemElements()
     ss.add_element(location=[(0, 0), (1, 0)])
     ss.add_support_fixed(node_id=1)
     ss.add_support_rotational(node_id=2)
     ss.q_load(q=-1000, element_id=1, direction="y")
     ss.point_load(node_id=2, Fx=-100)
     ss.solve()
     self.assertAlmostEqual(0.0066667, ss.get_node_results_system(2)["ux"])
     self.assertAlmostEqual(0.0083333, ss.get_node_results_system(2)["uy"])
     self.assertAlmostEqual(0.0, ss.get_node_results_system(2)["phi_y"])
     self.assertAlmostEqual(-166.6667083, ss.get_node_results_system(2)["Ty"])
Пример #9
0
 def test_circle_section_deflection(self):
     ss = se.SystemElements()
     ss.add_multiple_elements([[0, 0], [2, 0]],
                              n=2,
                              d=0.07,
                              E=210e9,
                              sw=False)
     ss.add_support_hinged(1)
     ss.add_support_hinged(3)
     ss.point_load(2, Fy=-1000)
     ss.solve()
     self.assertAlmostEqual(-0.00067339, ss.get_node_displacements(2)['uy'])
Пример #10
0
 def test_sectionbase_steel_section_deflection(self):
     ss = se.SystemElements()
     ss.add_multiple_elements([[0, 0], [6, 0]],
                              n=2,
                              steelsection='IPE 300',
                              E=210e9,
                              sw=False,
                              orient='y')
     ss.add_support_hinged(1)
     ss.add_support_hinged(3)
     ss.point_load(2, Fy=-10000)
     ss.solve()
     self.assertAlmostEqual(-0.00256442, ss.get_node_displacements(2)['uy'])
Пример #11
0
 def test_rectangle_section_deflection(self):
     ss = se.SystemElements()
     ss.add_multiple_elements([[0, 0], [2, 0]],
                              n=2,
                              h=0.05,
                              b=0.16,
                              E=210e9,
                              sw=False,
                              orient='y')
     ss.add_support_hinged(1)
     ss.add_support_hinged(3)
     ss.point_load(2, Fy=-1000)
     ss.solve()
     self.assertAlmostEqual(-0.00047619, ss.get_node_displacements(2)['uy'])
Пример #12
0
 def test_inclined_roll_equal_to_horizontal_roll(self):
     ss = se.SystemElements()
     x = [0, 1, 2]
     y = [0, 1, 0]
     ss.add_element_grid(x, y)
     ss.add_support_hinged(1)
     ss.add_support_roll(3, "x")
     ss.point_load(2, Fy=-100)
     ss.solve()
     u1 = ss.get_node_results_system(3)
     ss = se.SystemElements()
     ss.add_element_grid(x, y)
     ss.add_support_hinged(1)
     ss.add_support_roll(3, angle=0)
     ss.point_load(2, Fy=-100)
     ss.solve()
     u2 = ss.get_node_results_system(3)
     for k in u1:
         self.assertTrue(np.isclose(u1[k], u2[k]))
Пример #13
0
 def test_perpendicular_trapezoidal_load(self):
     ss = se.SystemElements()
     ss.add_element(location=[(0, 0), (1, 0)])
     ss.add_element(location=[(1, 0), (2, 1.5)])
     ss.add_support_fixed(node_id=1)
     ss.add_support_fixed(node_id=2)
     ss.q_load(q=(0.1, 1), element_id=2, direction="element")
     ss.point_load(node_id=1, Fx=15)
     ss.point_load(node_id=2, Fy=-5)
     ss.moment_load(node_id=3, Ty=-7)
     ss.solve()
     self.assertAlmostEqual(-0.1, ss.get_element_results(2)["q"][0])
     self.assertAlmostEqual(-1, ss.get_element_results(2)["q"][1])
     self.assertAlmostEqual(0, ss.get_node_results_system(1)["Fy"])
     self.assertAlmostEqual(15, ss.get_node_results_system(1)["Fx"])
     self.assertAlmostEqual(-4.45, ss.get_node_results_system(2)["Fy"])
     self.assertAlmostEqual(-0.825, ss.get_node_results_system(2)["Fx"])
     self.assertAlmostEqual(0, ss.get_node_results_system(1)["Ty"])
     self.assertAlmostEqual(-5.8625, ss.get_node_results_system(2)["Ty"])
Пример #14
0
 def test_inclined_roll_equal_to_horizontal_roll(self):
     ss = se.SystemElements()
     x = [0, 1, 2]
     y = [0, 1, 0]
     ss.add_element_grid(x, y)
     ss.add_support_hinged(1)
     ss.add_support_roll(3, 'x')
     ss.point_load(2, Fy=-100)
     ss.solve()
     u1 = ss.get_node_results_system(3)
     ss = se.SystemElements()
     ss.add_element_grid(x, y)
     ss.add_support_hinged(1)
     ss.add_support_roll(3, angle=0)
     ss.point_load(2, Fy=-100)
     ss.solve()
     u2 = ss.get_node_results_system(3)
     for k in u1:
         self.assertTrue(np.isclose(u1[k], u2[k]))