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)["Nmax"]) self.assertAlmostEqual(-5, ss.get_element_results(1)["Nmin"])
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_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"])
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)
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"])