Esempio n. 1
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)
Esempio n. 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"])
Esempio n. 3
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)
Esempio n. 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)
Esempio n. 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)
Esempio n. 6
0
 def test_ex_11(self):
     from anastruct.fem.examples.ex_11 import ss
     ss.solve()
     el = ss.element_map[1]
     self.assertAlmostEqual(el.N_1, 27.8833333333, places=3)
     self.assertAlmostEqual(el.N_2, 17.8833333333, places=3)
     self.assertAlmostEqual(ss.get_element_results(1)['length'], 5.3851647, places=5)
Esempio n. 7
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"])
Esempio n. 8
0
 def test_ex_19_nummerical_displacements_averaging(self):
     from anastruct.fem.examples.ex_19_num_displacements import ss
     ss.solve()
     self.assertTrue(
         np.allclose(
             [el.deflection.max() for el in ss.element_map.values()],
             [0.10318963656044, 0.10318963656044]))
Esempio n. 9
0
 def test_ex_16(self):
     from anastruct.fem.examples.ex_16 import ss
     ss.solve()
     if sys.version_info[1] >= 6:
         sol = [-4.4408920985006262e-15, 5.6568542494923886, -1.2434497875801753e-14, 7.9936057773011271e-15,
                5.6568542494923797]
         sssol = [a[1] for a in ss.get_node_results_system()]
         self.assertTrue(all([np.isclose(a, b) for a, b in zip(sol, sssol)]))
Esempio n. 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'])
Esempio n. 11
0
 def test_ex_16(self):
     from anastruct.fem.examples.ex_16 import ss
     ss.solve()
     if sys.version_info[1] >= 6:
         sol = [-4.4408920985006262e-15, 5.6568542494923886, -1.2434497875801753e-14, 7.9936057773011271e-15,
                5.6568542494923797]
         sssol = [a[1] for a in ss.get_node_results_system()]
         self.assertTrue(all([np.isclose(a, b) for a, b in zip(sol, sssol)]))
Esempio n. 12
0
 def test_deflection_averaging(self):
     from anastruct.fem.examples.ex_26_deflection import ss
     ss.solve()
     self.assertTrue(
         np.allclose(
             [el.deflection.max() for el in ss.element_map.values()],
             [0.012466198717546239, 6.1000892498263e-07],
         ))
Esempio n. 13
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'])
Esempio n. 14
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'])
Esempio n. 15
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"])
Esempio n. 16
0
    def test_ex_13(self):
        """
        System nodes Fx equal to 0
        """
        from anastruct.fem.examples.ex_13 import ss
        ss.solve()

        sol = [6.6666666666666661, 1.7763568394002505e-15, -8.8817841970012523e-16, -6.666666666666667]
        sssol = [a[1] for a in ss.get_node_results_system()]
        self.assertTrue(all([np.isclose(a, b) for a, b in zip(sol, sssol)]))
Esempio n. 17
0
    def test_ex_12(self):
        """
        System nodes Ty equal to 0
        """
        from anastruct.fem.examples.ex_12 import ss
        ss.solve()

        sol = [6.6666666666666679, 3.5527136788005009e-15, -3.5527136788005009e-15, -6.6666666666666679]
        sssol = [a[3] for a in ss.get_node_results_system()]
        self.assertTrue(all([np.isclose(a, b) for a, b in zip(sol, sssol)]))
Esempio n. 18
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"])
Esempio n. 19
0
    def test_ex_12(self):
        """
        System nodes Ty equal to 0
        """
        from anastruct.fem.examples.ex_12 import ss
        ss.solve()

        sol = [6.6666666666666679, 3.5527136788005009e-15, -3.5527136788005009e-15, -6.6666666666666679]
        sssol = [a[3] for a in ss.get_node_results_system()]
        self.assertTrue(all([np.isclose(a, b) for a, b in zip(sol, sssol)]))
Esempio n. 20
0
    def test_ex_13(self):
        """
        System nodes Fx equal to 0
        """
        from anastruct.fem.examples.ex_13 import ss
        ss.solve()

        sol = [6.6666666666666661, 1.7763568394002505e-15, -8.8817841970012523e-16, -6.666666666666667]
        sssol = [a[1] for a in ss.get_node_results_system()]
        self.assertTrue(all([np.isclose(a, b) for a, b in zip(sol, sssol)]))
Esempio n. 21
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'])
Esempio n. 22
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"])
Esempio n. 23
0
    def test_ex_14(self):
        """
        Tests dead load and parallel load on axis.
        """
        from anastruct.fem.examples.ex_14 import ss
        ss.solve()

        sol = [-5.1854495715665756, -2.6645352591003757e-15, -7.9936057773011271e-15, 1.2434497875801753e-14,
               5.1854495715665738]
        sssol = [a[1] for a in ss.get_node_results_system()]
        self.assertTrue(all([np.isclose(a, b) for a, b in zip(sol, sssol)]))
Esempio n. 24
0
    def test_ex_14(self):
        """
        Tests dead load and parallel load on axis.
        """
        from anastruct.fem.examples.ex_14 import ss
        ss.solve()

        sol = [-5.1854495715665756, -2.6645352591003757e-15, -7.9936057773011271e-15, 1.2434497875801753e-14,
               5.1854495715665738]
        sssol = [a[1] for a in ss.get_node_results_system()]
        self.assertTrue(all([np.isclose(a, b) for a, b in zip(sol, sssol)]))
Esempio n. 25
0
    def test_ex_15(self):
        """
        Tests dead load and parallel load on axis.
        """
        from anastruct.fem.examples.ex_15 import ss
        ss.solve()

        sol = [-9.4139433815692541, -8.8817841970012523e-15, 1.7763568394002505e-15, 3.5527136788005009e-15,
               9.4139433815692577]
        sssol = [a[1] for a in ss.get_node_results_system()]
        self.assertTrue(all([np.isclose(a, b) for a, b in zip(sol, sssol)]))
Esempio n. 26
0
    def test_ex_15(self):
        """
        Tests dead load and parallel load on axis.
        """
        from anastruct.fem.examples.ex_15 import ss
        ss.solve()

        sol = [-9.4139433815692541, -8.8817841970012523e-15, 1.7763568394002505e-15, 3.5527136788005009e-15,
               9.4139433815692577]
        sssol = [a[1] for a in ss.get_node_results_system()]
        self.assertTrue(all([np.isclose(a, b) for a, b in zip(sol, sssol)]))
Esempio n. 27
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)
Esempio n. 28
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"])
Esempio n. 29
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"])
Esempio n. 30
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)
Esempio n. 31
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"])
Esempio n. 32
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'])
Esempio n. 33
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'])
Esempio n. 34
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'])
Esempio n. 35
0
 def test_internal_hinge_symmetry(self):
     ss = se.SystemElements()
     ss.add_element(location=[[0, 0], [5, 0]], spring={2: 0})
     ss.add_element(location=[[5, 0], [10, 0]])
     ss.q_load(element_id=1, q=-9)
     ss.q_load(element_id=2, q=-9)
     ss.add_support_fixed(node_id=1)
     ss.add_support_fixed(node_id=3)
     ss.solve()
     self.assertAlmostEqual(
         ss.get_node_results_system(1)["Fy"],
         ss.get_node_results_system(3)["Fy"])
     self.assertAlmostEqual(
         ss.get_element_results(1)["Mmax"],
         ss.get_element_results(2)["Mmax"])
Esempio n. 36
0
 def test_ex_7_rotational_spring(self):
     """
     Test the rotational springs
     """
     from anastruct.fem.examples.ex_7_rotational_spring import ss
     sol = np.fromstring("""0.          0.          0.          0.          0.23558645 -0.09665875
     0.          0.          0.06433688""", float, sep=" ")
     self.assertTrue(np.allclose(ss.solve(), sol))
Esempio n. 37
0
 def test_ex_7_rotational_spring(self):
     """
     Test the rotational springs
     """
     from anastruct.fem.examples.ex_7_rotational_spring import ss
     sol = np.fromstring("""0.          0.          0.          0.          0.23558645 -0.09665875
     0.          0.          0.06433688""", float, sep=" ")
     self.assertTrue(np.allclose(ss.solve(), sol))
Esempio n. 38
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]))
Esempio n. 39
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]))
Esempio n. 40
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"])
Esempio n. 41
0
 def test_ex_11(self):
     from anastruct.fem.examples.ex_11 import ss
     ss.solve()
     el = ss.element_map[1]
     self.assertAlmostEqual(el.N_1, 27.8833333333, places=3)
     self.assertAlmostEqual(el.N_2, 17.8833333333, places=3)
Esempio n. 42
0
 def test_ex_18_buckling_factor(self):
     from anastruct.fem.examples.ex_18_discretize import ss
     ss.solve(geometrical_non_linear=True)
     self.assertNotAlmostEqual(493.48022005446785, ss.buckling_factor)
Esempio n. 43
0
 def test_ex_19_nummerical_displacements_averaging(self):
     from anastruct.fem.examples.ex_19_num_displacements import ss
     ss.solve()
     self.assertTrue(np.allclose([el.deflection.max() for el in ss.element_map.values()], [0.10318963656044,
                                                                                           0.10318963656044]))
Esempio n. 44
0
    def test_ex_18_buckling_factor(self):
        from anastruct.fem.examples.ex_18_discretize import ss

        ss.solve(geometrical_non_linear=True)
        self.assertNotAlmostEqual(493.48022005446785, ss.buckling_factor)
Esempio n. 45
0
 def test_ex_11(self):
     from anastruct.fem.examples.ex_11 import ss
     ss.solve()
     el = ss.element_map[1]
     self.assertAlmostEqual(el.N_1, 27.8833333333, places=3)
     self.assertAlmostEqual(el.N_2, 17.8833333333, places=3)