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"])
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)
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)
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)
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'])
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'])
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'])
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'])
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"])
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"])
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"])
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)
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"])
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"])
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"])
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]))
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]))