def linear_2_stages(): g1 = SpurGear(10, 0.5, 0, 8) g2 = SpurGear(50, 0.5, 0, 8) g3 = SpurGear(13, 0.5, 0, 12) g4 = SpurGear(78, 0.5, 0, 12) a = Actuator(components=[GearPair(g1, g2, 0, 0), GearPair(g3, g4, 10, 0)]) return a
def test_basic_gear_operations(): pinion = SpurGear(25, 1., 0., 10) gear = SpurGear(80, 1., 0., 10) gp = GearPair(pinion, gear) assert abs(gear.alpha_p - np.pi / 9) < 1e-5 assert abs(gp.contact_ratio - 1.719) < 1e-3 assert gp.interference == 0 excepted_volume = (25e-3 / 2)**2 * np.pi * 10e-3 + (80e-3 / 2)**2 * np.pi * 10e-3 assert abs(gp.volume - excepted_volume) / excepted_volume < 1e-5 gs = gp.specific_speed assert abs(gs[0] + 2.238193) < 1e-5 assert abs(gs[1] + 0.884045) < 1e-5 op = OperatingCondition(1000, 0.318, 12, 0.3) # Because dynamic factors are set to 1. # speed should not change stress assert gp.sigma_h(1000, 0.318) == gp.sigma_h(100, 0.318) sigF0, sigF = gp.sigma_f(1000, 0.318) assert abs(sigF0[0] - 7.16e6) / 7.16e6 < 0.06 assert abs(sigF0[1] - 7.03e6) / 7.03e6 < 0.06 assert sigF0[0] > sigF0[1] assert sigF[0] / sigF0[0] == 1.25 sigH0, sigH = gp.sigma_h(1000, 0.318) assert abs(sigH0 - 150.9e6) / 150.9e6 < 0.01 assert abs(sigH[0] - 177.62e6) / 177.62e6 < 0.01 assert abs(sigH[1] - 168.71e6) / 168.71e6 < 0.01 gp.security_h(op) gp.security_f(op)
def broken_motored_2_stages(): s = Stepper('A', motor_data['A']) g1 = SpurGear(10, 0.8, 0, 8) g2 = SpurGear(50, 0.8, 0, 8) g3 = SpurGear(13, 0.5, 0, 12) g4 = SpurGear(80, 0.5, 0, 12) comp = [s, GearPair(g1, g2, 10, 0), GearPair(g3, g4, -3, -2.3)] return Actuator(components=comp)
def impossible_motored_2_stages(): s = Stepper('B', motor_data['B']) g1 = SpurGear(10, 0.8, 0, 8) g2 = SpurGear(35, 0.8, 0, 8) g3 = SpurGear(25, 0.5, 0, 12) g4 = SpurGear(80, 0.5, 0, 12) comp = [s, GearPair(g1, g2, 10, 0), GearPair(g3, g4, -30, -2.3)] a = Actuator(components=comp) return a
def good_motored_2_stages(): s = Stepper('A', motor_data['A']) g1 = SpurGear(17, 0.5, 0.15, 8) g2 = SpurGear(60, 0.5, -0.15, 8) g3 = SpurGear(17, 0.5, 0.15, 12) g4 = SpurGear(78, 0.5, -0.15, 12) comp = [s, GearPair(g1, g2, 10, 0), GearPair(g3, g4, 10, -2.3)] a = Actuator(components=comp) return a
def test_gear_mesh_small_stretch(): g1 = SpurGear(25, 0.5, 0, 10) g2 = SpurGear(80, 0.5, 0, 10) gp = GearPair(g1, g2, GearPair.stretch_margin / 2, 0) actuator = Actuator(components=[gp]) meshes, _, space = actuator.mesh assert np.allclose(space.bounds[:, 2], [gp.disp, gp.disp + 5.]) assert np.allclose(meshes[0].bounds[:, 2], [gp.disp, gp.disp + 5.]) assert np.allclose(meshes[1].bounds[:, 2], [gp.disp, gp.disp + 5.])
def test_gear_mesh_minus_stretch(): g1 = SpurGear(25, 0.5, 0, 10) g2 = SpurGear(80, 0.5, 0, 10) gp = GearPair(g1, g2, -10, 0) actuator = Actuator(components=[gp]) meshes, _, space = actuator.mesh assert np.allclose(space.bounds[:, 2], [-15., -gp.stretch_margin]) assert np.allclose(meshes[0].bounds[:, 2], [-15., -gp.stretch_margin]) assert np.allclose(meshes[1].bounds[:, 2], [-15., -10.])