# No. 259 (Brown 1868): "A V-grooved pulley having its groove notched to increase the adhesion of the band."
#
# Model (cm, gravity on, front view, shafts level): No. 258's two pulleys, each V-groove (20 deg either side of the radial plane)
# notched across both flanks: 24 notches round the larger, 16 round the smaller, each 0.5 wide at the rim and sunk 0.35 below the flanks.
# The round band (0.8 thick) lies wedged on the lands between the notches, its centre 1.170 above the V's bottom, and its links settle into
# the cuts as they pass. The larger (pitch radius 7.4) is on the driving shaft, turned at 40 rpm (the one driven joint); the smaller (4.9),
# 26 away, carries a load (a damper). The band, a cord of links on real contact, drives the smaller by friction on the lands and by the notches'
# edges, at the ratio of the pitch radii (1.5102). Each notched slab is collided as its frustum sunk by the notch depth plus one convex
# sector per land. Generator: opencode-runs/batch11/gen259.py.
number: 259
slug: notched-v-grooved-pulley
name: A V-grooved pulley with its groove notched
brown: "A V-grooved pulley having its groove notched to increase the adhesion of the band."
units: cm
sim: {timestep: 0.0001, integrator: implicitfast, iterations: 50, duration_s: 6, floor: false}
bodies:
  - {id: p_a, shape: pulley, radius: 7.9, width: 2.4, profile: [[-1.2, 7.9], [-0.6077, 7.9], [0.0, 6.2305], [0.6077, 7.9], [1.2, 7.9]], notches: {count: 24, depth: 0.35, width: 0.5, y: [-0.6077, 0.6077]}, flange: 0, pos: [0, 0, 0], mass: 2.0, spokes: 6, hub: 2.2}
  - {id: p_b, shape: pulley, radius: 5.4, width: 2.4, profile: [[-1.2, 5.4], [-0.6077, 5.4], [0.0, 3.7305], [0.6077, 5.4], [1.2, 5.4]], notches: {count: 16, depth: 0.35, width: 0.5, y: [-0.6077, 0.6077]}, flange: 0, pos: [26, 0, 0], mass: 1.2, spokes: 4, hub: 1.6, color: "#e6dcc4"}
shafts:
  - {id: s_a, body: p_a, from: [0, -3, 0], to: [0, 5, 0], radius: 0.8}
  - {id: s_b, body: p_b, from: [0, -3, 0], to: [0, 5, 0], radius: 0.7}
joints:
  - {id: j_a, type: hinge, body: p_a, axis: [0, 1, 0], damping: 0.002}   # the one driven joint
  - {id: j_b, type: hinge, body: p_b, axis: [0, 1, 0], damping: 0.03}   # the load
belts:
  - id: band
    around: [p_a, p_b]
    station: 0
    section: round
    links: 110
    thickness: 0.8
    width: 0.8
    density: 950
    stiffness: 30000
    damping: 2
    pretension: 25
    friction: 0.6
contact: {solref: [0.002, 1], solimp: [0.9, 0.95, 0.001], margin: 0}
driver: {joint: j_a, kind: velocity, rpm: 40, kv: 2, max_torque: 5}
checks:
  - {type: ratio, out: j_b, in: j_a, expect: 1.5102, tol: 0.03, settle_s: 1, window_s: 4.5}   # the ratio of the pitch radii, less creep
  - {type: belt_on, belt: band, max_radial_dev: 1.0, max_lateral: 0.4, duration_s: 2}
  - {type: penetration, max: 0.0025, settle_s: 1}
camera: {target: [13, 0, 1], position: [23, -62, 48], fov: 30}
display:
  output: j_b
  labels: {j_a: "Large pulley (driver)", j_b: "Small pulley"}
  expect: {default: 1.5102}

