Example #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"])
Example #2
0
 def test_circle_section_self_weight_reaction(self):
     ss = se.SystemElements()
     ss.add_element([[0, 0], [2, 0]], d=0.2, E=210e9, sw=True, gamma=10000)
     ss.add_support_hinged(1)
     ss.add_support_hinged(2)
     ss.solve()
     self.assertAlmostEqual(-314.15926535, ss.reaction_forces[1].Fz)
Example #3
0
 def test_sectionbase_steel_section_self_weight_reaction(self):
     ss = se.SystemElements()
     ss.add_element([[0, 0], [20, 0]], steelsection='IPE 300', sw=True, )
     ss.add_support_hinged(1)
     ss.add_support_hinged(2)
     ss.solve()
     self.assertAlmostEqual(-4224.24, ss.reaction_forces[1].Fz)
Example #4
0
 def test_rectangle_section_self_weight_reaction(self):
     ss = se.SystemElements()
     ss.add_element([[0, 0], [2, 0]], h=0.1, b=0.1, E=210e9, sw=True, gamma=10000)
     ss.add_support_hinged(1)
     ss.add_support_hinged(2)
     ss.solve()
     self.assertAlmostEqual(-100, ss.reaction_forces[1].Fz)
Example #5
0
 def test_circle_section_self_weight_reaction(self):
     ss = se.SystemElements()
     ss.add_element([[0, 0], [2, 0]], d=0.2, E=210e9, sw=True, gamma=10000)
     ss.add_support_hinged(1)
     ss.add_support_hinged(2)
     ss.solve()
     self.assertAlmostEqual(-314.15926535, ss.reaction_forces[1].Fz)
Example #6
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'])
Example #7
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'])
Example #8
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'])
Example #9
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'])
Example #10
0
 def test_vertical_spring(self):
     ss = se.SystemElements(mesh=250)
     ss.add_element(
         location=[(0.0, 0), (10.0, 0)], EA=356000.0, EI=1332.0000000000002
     )
     ss.add_support_hinged(node_id=1)
     ss.add_support_spring(node_id=2, translation=2, k=50, roll=False)
     ss.q_load(q=-1.0, element_id=1, direction="y")
     ss.solve()
     self.assertAlmostEqual(0.1, ss.get_node_results_system(2)["uy"])
Example #11
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"])
Example #12
0
 def test_inclined_roll_and_qload(self):
     ss = se.SystemElements(EA=356000, EI=1330)
     ss.add_element(location=[[0, 0], [10, 0]])
     ss.add_support_hinged(node_id=1)
     ss.add_support_roll(node_id=-1, angle=45)
     ss.q_load(q=-1, element_id=1, direction="element")
     ss.solve()
     self.assertAlmostEqual(-5, ss.get_node_results_system(1)["Fx"])
     self.assertAlmostEqual(-5, ss.get_node_results_system(1)["Fy"])
     self.assertAlmostEqual(-5, ss.get_element_results(1)["N"])
Example #13
0
 def test_sectionbase_steel_section_self_weight_reaction(self):
     ss = se.SystemElements()
     ss.add_element(
         [[0, 0], [20, 0]],
         steelsection='IPE 300',
         sw=True,
     )
     ss.add_support_hinged(1)
     ss.add_support_hinged(2)
     ss.solve()
     self.assertAlmostEqual(-4224.24, ss.reaction_forces[1].Fz)
Example #14
0
 def test_parallel_trapezoidal_load(self):
     ss = se.SystemElements()
     ss.add_element([0, 1])
     ss.add_element([0, 2])
     ss.add_support_hinged(1)
     ss.add_support_roll(3, "y")
     ss.q_load([0, -0.5], 1, "y")
     ss.q_load([-0.5, -1], 2, "y")
     ss.solve()
     self.assertAlmostEqual(-0.75, ss.get_element_results(2)["Nmin"])
     self.assertAlmostEqual(0, ss.get_element_results(2)["Nmax"])
     self.assertAlmostEqual(-1, ss.get_node_results_system(1)["Fy"])
Example #15
0
 def test_q_and_q_perp(self):
     ss = se.SystemElements()
     ss.add_element([2, 2])
     ss.add_support_hinged(1)
     ss.add_support_hinged(2)
     ss.q_load([-2, -2], 1, "element", q_perp=[-1, -1])
     ss.solve()
     self.assertAlmostEqual(-3, ss.get_node_results_system(1)["Fy"], 6)
     self.assertAlmostEqual(1, ss.get_node_results_system(1)["Fx"], 6)
     self.assertAlmostEqual(np.sqrt(2), ss.get_element_results(1)["Nmax"])
     self.assertAlmostEqual(2 * np.sqrt(2),
                            ss.get_element_results(1)["Qmax"])
Example #16
0
 def test_rectangle_section_self_weight_reaction(self):
     ss = se.SystemElements()
     ss.add_element([[0, 0], [2, 0]],
                    h=0.1,
                    b=0.1,
                    E=210e9,
                    sw=True,
                    gamma=10000)
     ss.add_support_hinged(1)
     ss.add_support_hinged(2)
     ss.solve()
     self.assertAlmostEqual(-100, ss.reaction_forces[1].Fz)
Example #17
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'])
Example #18
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'])
Example #19
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'])
Example #20
0
 def test_load_cases(self):
     ss = se.SystemElements()
     ss.add_truss_element(location=[[0, 0], [1000, 0]])
     ss.add_truss_element(location=[[0, 0], [500, 500]])
     ss.add_truss_element(location=[[500, 500], [1000, 0]])
     ss.add_support_hinged(node_id=2)
     ss.add_support_roll(node_id=1, direction="x", angle=None)
     lc_dead = LoadCase("dead")
     lc_dead.point_load(node_id=[1], Fx=10)
     combination = LoadCombination("ULS")
     combination.add_load_case(lc_dead, factor=1.4)
     results = combination.solve(ss)
     self.assertAlmostEqual(0, results["dead"].get_node_results_system(1)["Fx"])
     self.assertAlmostEqual(14, results["dead"].get_node_results_system(2)["Fx"])
Example #21
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]))
Example #22
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]))