# No. 459 (Brown 1868): Reciprocating lift for wells, worked by a horizontal wind-wheel.
#
# Model (cm, gravity on, front view). The air blows along +x at 12 m/s (MuJoCo's fluid model: every body feels the air's drag
# moving through it; only the wind-wheel's 6 sails are loaded, as plates, by the ellipsoid model). Each sail is a plate hung from a
# hinge along its arm, with a stop: going downwind the wind presses it plumb against the stop and pushes it; coming back upwind the
# wind lifts it on its hinge and it trails nearly flat, so the wheel turns one way. Its upright shaft carries, through a Hooke's coupling (the "small vibration"), the worm: a
# single left-hand thread (lead 3.456) between two pin worm-wheels (8 pins, pitch radius 4.4) whose pulleys (radius 4.5) are behind them. One
# rope over both pulleys, fastened to each, carries a bucket at each end. The worm's lower end runs in a step on the upper arm of the
# Y-shaped tappet, which rests by its own weight against one stop or the other: the worm then leans against one wheel or the other and
# drives only that one, raising its bucket while the other bucket goes down. A lug on the rising bucket's outer side meets a fixed pin, which tips
# it to pour into its trough; then its bail strikes the tappet's arm, the tappet goes over centre, the worm crosses to the other wheel, and
# the full bucket below is raised in turn. The water (the vessels model, src/fluid/vessels.c): the well, each bucket (carried, its water
# weighing on it) and the two troughs; a bucket fills while its mouth is under the well's surface and pours while tipped.
# Nothing is driven: the wind is the only input. Generator: opencode-runs/water/gen459.py.
number: 459
slug: wind-wheel-well-lift
name: Lift for wells
brown: "Reciprocating lift for wells. Top part represents horizontal wind-wheel on a shaft which carries spiral thread. Coupling of latter allows small vibration, that it may act on one worm-wheel at a time. Behind worm-wheels are pulleys over which passes rope which carries bucket at each extremity. In center is vibrating tappet, against which bucket strikes in its ascent, and which, by means of arm in step wherein spiral and shaft are supported, traverses spiral from one wheel to other so that the bucket which has delivered water is lowered and other one raised."
units: cm
sim:
  timestep: 0.0002
  integrator: implicitfast
  iterations: 100
  solver: CG
  multiccd: true
  duration_s: 18.0
  floor: false
  air: {density: 1.2, viscosity: 0.000018, wind: [12.0, 0, 0]}
bodies:
  - id: wwheel
    shape: part
    pos: [0, 0, 26.0]
    density: 700
    color: "#b49a70"
    pieces:
      - {kind: rod, from: [0, 0, 14.8], to: [0, 0, 27.0], radius: 0.45, collide: 0}   # the upright shaft
      - {kind: disc, center: [0, 26.0], radius: 1.4, y: [-1.4, 1.4], collide: 0}   # the hub
      - {kind: rod, from: [1.2, 0.0, 26.0], to: [14.0, 0.0, 26.0], radius: 0.25, collide: 0}
      - {kind: rod, from: [0.6, 1.0392, 26.0], to: [7.0, 12.1244, 26.0], radius: 0.25, collide: 0}
      - {kind: rod, from: [-0.6, 1.0392, 26.0], to: [-7.0, 12.1244, 26.0], radius: 0.25, collide: 0}
      - {kind: rod, from: [-1.2, 0.0, 26.0], to: [-14.0, 0.0, 26.0], radius: 0.25, collide: 0}
      - {kind: rod, from: [-0.6, -1.0392, 26.0], to: [-7.0, -12.1244, 26.0], radius: 0.25, collide: 0}
      - {kind: rod, from: [0.6, -1.0392, 26.0], to: [7.0, -12.1244, 26.0], radius: 0.25, collide: 0}
  - id: sail0
    shape: part
    pos: [4.5, 0.0, 26.0]
    mount: wwheel
    density: 500
    color: "#d8cdb2"
    sails: [{pos: [9.25, 0.0, 22.3], size: [9.5, 0.24, 7.0], quat: [1.0, 0, 0, 0.0]}]
    pieces:
      - {kind: loft, a: [[4.5, -0.12, 18.8], [4.5, 0.12, 18.8], [4.5, 0.12, 25.8], [4.5, -0.12, 25.8]], b: [[14.0, -0.12, 18.8], [14.0, 0.12, 18.8], [14.0, 0.12, 25.8], [14.0, -0.12, 25.8]], collide: 0}
      - {kind: rod, from: [4.5, 0.0, 26.0], to: [14.0, 0.0, 26.0], radius: 0.15, collide: 0}
  - id: sail1
    shape: part
    pos: [2.25, 3.8971, 26.0]
    mount: wwheel
    density: 500
    color: "#d8cdb2"
    sails: [{pos: [4.625, 8.0107, 22.3], size: [9.5, 0.24, 7.0], quat: [0.866, 0, 0, 0.5]}]
    pieces:
      - {kind: loft, a: [[2.3539, 3.8371, 18.8], [2.1461, 3.9571, 18.8], [2.1461, 3.9571, 25.8], [2.3539, 3.8371, 25.8]], b: [[7.1039, 12.0644, 18.8], [6.8961, 12.1844, 18.8], [6.8961, 12.1844, 25.8], [7.1039, 12.0644, 25.8]], collide: 0}
      - {kind: rod, from: [2.25, 3.8971, 26.0], to: [7.0, 12.1244, 26.0], radius: 0.15, collide: 0}
  - id: sail2
    shape: part
    pos: [-2.25, 3.8971, 26.0]
    mount: wwheel
    density: 500
    color: "#d8cdb2"
    sails: [{pos: [-4.625, 8.0107, 22.3], size: [9.5, 0.24, 7.0], quat: [0.5, 0, 0, 0.866]}]
    pieces:
      - {kind: loft, a: [[-2.1461, 3.9571, 18.8], [-2.3539, 3.8371, 18.8], [-2.3539, 3.8371, 25.8], [-2.1461, 3.9571, 25.8]], b: [[-6.8961, 12.1844, 18.8], [-7.1039, 12.0644, 18.8], [-7.1039, 12.0644, 25.8], [-6.8961, 12.1844, 25.8]], collide: 0}
      - {kind: rod, from: [-2.25, 3.8971, 26.0], to: [-7.0, 12.1244, 26.0], radius: 0.15, collide: 0}
  - id: sail3
    shape: part
    pos: [-4.5, 0.0, 26.0]
    mount: wwheel
    density: 500
    color: "#d8cdb2"
    sails: [{pos: [-9.25, 0.0, 22.3], size: [9.5, 0.24, 7.0], quat: [0.0, 0, 0, 1.0]}]
    pieces:
      - {kind: loft, a: [[-4.5, 0.12, 18.8], [-4.5, -0.12, 18.8], [-4.5, -0.12, 25.8], [-4.5, 0.12, 25.8]], b: [[-14.0, 0.12, 18.8], [-14.0, -0.12, 18.8], [-14.0, -0.12, 25.8], [-14.0, 0.12, 25.8]], collide: 0}
      - {kind: rod, from: [-4.5, 0.0, 26.0], to: [-14.0, 0.0, 26.0], radius: 0.15, collide: 0}
  - id: sail4
    shape: part
    pos: [-2.25, -3.8971, 26.0]
    mount: wwheel
    density: 500
    color: "#d8cdb2"
    sails: [{pos: [-4.625, -8.0107, 22.3], size: [9.5, 0.24, 7.0], quat: [-0.5, 0, 0, 0.866]}]
    pieces:
      - {kind: loft, a: [[-2.3539, -3.8371, 18.8], [-2.1461, -3.9571, 18.8], [-2.1461, -3.9571, 25.8], [-2.3539, -3.8371, 25.8]], b: [[-7.1039, -12.0644, 18.8], [-6.8961, -12.1844, 18.8], [-6.8961, -12.1844, 25.8], [-7.1039, -12.0644, 25.8]], collide: 0}
      - {kind: rod, from: [-2.25, -3.8971, 26.0], to: [-7.0, -12.1244, 26.0], radius: 0.15, collide: 0}
  - id: sail5
    shape: part
    pos: [2.25, -3.8971, 26.0]
    mount: wwheel
    density: 500
    color: "#d8cdb2"
    sails: [{pos: [4.625, -8.0107, 22.3], size: [9.5, 0.24, 7.0], quat: [-0.866, 0, 0, 0.5]}]
    pieces:
      - {kind: loft, a: [[2.1461, -3.9571, 18.8], [2.3539, -3.8371, 18.8], [2.3539, -3.8371, 25.8], [2.1461, -3.9571, 25.8]], b: [[6.8961, -12.1844, 18.8], [7.1039, -12.0644, 18.8], [7.1039, -12.0644, 25.8], [6.8961, -12.1844, 25.8]], collide: 0}
      - {kind: rod, from: [2.25, -3.8971, 26.0], to: [7.0, -12.1244, 26.0], radius: 0.15, collide: 0}
  - id: cross
    shape: part
    pos: [0, 0, 14.0]
    mount: wwheel
    density: 7800
    color: "#8f8a80"
    pieces:
      - {kind: rod, from: [-0.7, 0, 14.0], to: [0.7, 0, 14.0], radius: 0.18, collide: 0}
      - {kind: rod, from: [0, -0.7, 14.0], to: [0, 0.7, 14.0], radius: 0.18, collide: 0}
  - id: worm
    shape: part
    pos: [0, 0, 14.0]
    mount: cross
    density: 7800
    friction: 0.12
    color: "#e4d9bf"
    pieces:
      - {kind: rod, from: [-1.2304, 0, -8.9671], to: [-0.0321, 0, 13.4009], radius: 0.4, collide: 0}   # the lower shaft
      - {kind: rod, from: [-1.0583, 0, -5.7553], to: [-0.4395, 0, 5.7954], radius: 0.8, collide: 0}   # the worm's core
      - {kind: rod, from: [-1.2464, 0, -9.2666], to: [-1.1662, 0, -7.7688], radius: 0.35, capsule: true, collide: 1}   # its foot in the step
      - {kind: loft, a: [[-0.2437, -0.0, -4.5693], [0.6051, -0.0, -4.6148], [0.7228, -0.0, -2.4179], [-0.126, -0.0, -2.3725]], b: [[-0.2892, -0.287, -4.3506], [0.495, -0.6123, -4.3926], [0.6127, -0.6123, -2.1957], [-0.1715, -0.287, -2.1537]], collide: 2}
      - {kind: loft, a: [[-0.2892, -0.287, -4.3506], [0.495, -0.6123, -4.3926], [0.6127, -0.6123, -2.1957], [-0.1715, -0.287, -2.1537]], b: [[-0.44, -0.5303, -4.1262], [0.1602, -1.1314, -4.1584], [0.2779, -1.1314, -1.9615], [-0.3223, -0.5303, -1.9294]], collide: 2}
      - {kind: loft, a: [[-0.44, -0.5303, -4.1262], [0.1602, -1.1314, -4.1584], [0.2779, -1.1314, -1.9615], [-0.3223, -0.5303, -1.9294]], b: [[-0.6714, -0.6929, -3.8975], [-0.3466, -1.4782, -3.9149], [-0.2289, -1.4782, -1.7181], [-0.5537, -0.6929, -1.7007]], collide: 2}
      - {kind: loft, a: [[-0.6714, -0.6929, -3.8975], [-0.3466, -1.4782, -3.9149], [-0.2289, -1.4782, -1.7181], [-0.5537, -0.6929, -1.7007]], b: [[-0.9464, -0.75, -3.6665], [-0.9464, -1.6, -3.6665], [-0.8287, -1.6, -1.4696], [-0.8287, -0.75, -1.4696]], collide: 2}
      - {kind: loft, a: [[-0.9464, -0.75, -3.6665], [-0.9464, -1.6, -3.6665], [-0.8287, -1.6, -1.4696], [-0.8287, -0.75, -1.4696]], b: [[-1.2215, -0.6929, -3.4355], [-1.5463, -1.4782, -3.4181], [-1.4286, -1.4782, -1.2212], [-1.1038, -0.6929, -1.2386]], collide: 2}
      - {kind: loft, a: [[-1.2215, -0.6929, -3.4355], [-1.5463, -1.4782, -3.4181], [-1.4286, -1.4782, -1.2212], [-1.1038, -0.6929, -1.2386]], b: [[-1.4529, -0.5303, -3.2068], [-2.0531, -1.1314, -3.1746], [-1.9354, -1.1314, -0.9778], [-1.3352, -0.5303, -1.0099]], collide: 2}
      - {kind: loft, a: [[-1.4529, -0.5303, -3.2068], [-2.0531, -1.1314, -3.1746], [-1.9354, -1.1314, -0.9778], [-1.3352, -0.5303, -1.0099]], b: [[-1.6037, -0.287, -2.9824], [-2.3878, -0.6123, -2.9404], [-2.2702, -0.6123, -0.7435], [-1.486, -0.287, -0.7855]], collide: 2}
      - {kind: loft, a: [[-1.6037, -0.287, -2.9824], [-2.3878, -0.6123, -2.9404], [-2.2702, -0.6123, -0.7435], [-1.486, -0.287, -0.7855]], b: [[-1.6491, -0.0, -2.7637], [-2.4979, -0.0, -2.7182], [-2.3802, -0.0, -0.5213], [-1.5314, -0.0, -0.5668]], collide: 2}
      - {kind: loft, a: [[-1.6491, -0.0, -2.7637], [-2.4979, -0.0, -2.7182], [-2.3802, -0.0, -0.5213], [-1.5314, -0.0, -0.5668]], b: [[-1.5806, 0.287, -2.551], [-2.3647, 0.6123, -2.509], [-2.2471, 0.6123, -0.3122], [-1.4629, 0.287, -0.3542]], collide: 2}
      - {kind: loft, a: [[-1.5806, 0.287, -2.551], [-2.3647, 0.6123, -2.509], [-2.2471, 0.6123, -0.3122], [-1.4629, 0.287, -0.3542]], b: [[-1.4067, 0.5303, -2.3441], [-2.0068, 1.1314, -2.3119], [-1.8892, 1.1314, -0.1151], [-1.289, 0.5303, -0.1472]], collide: 2}
      - {kind: loft, a: [[-1.4067, 0.5303, -2.3441], [-2.0068, 1.1314, -2.3119], [-1.8892, 1.1314, -0.1151], [-1.289, 0.5303, -0.1472]], b: [[-1.1521, 0.6929, -2.1414], [-1.477, 1.4782, -2.124], [-1.3593, 1.4782, 0.0728], [-1.0345, 0.6929, 0.0554]], collide: 2}
      - {kind: loft, a: [[-1.1521, 0.6929, -2.1414], [-1.477, 1.4782, -2.124], [-1.3593, 1.4782, 0.0728], [-1.0345, 0.6929, 0.0554]], b: [[-0.854, 0.75, -1.9411], [-0.854, 1.6, -1.9411], [-0.7363, 1.6, 0.2558], [-0.7363, 0.75, 0.2558]], collide: 2}
      - {kind: loft, a: [[-0.854, 0.75, -1.9411], [-0.854, 1.6, -1.9411], [-0.7363, 1.6, 0.2558], [-0.7363, 0.75, 0.2558]], b: [[-0.5558, 0.6929, -1.7408], [-0.231, 1.4782, -1.7582], [-0.1133, 1.4782, 0.4387], [-0.4381, 0.6929, 0.4561]], collide: 2}
      - {kind: loft, a: [[-0.5558, 0.6929, -1.7408], [-0.231, 1.4782, -1.7582], [-0.1133, 1.4782, 0.4387], [-0.4381, 0.6929, 0.4561]], b: [[-0.3013, 0.5303, -1.5381], [0.2989, 1.1314, -1.5703], [0.4166, 1.1314, 0.6266], [-0.1836, 0.5303, 0.6588]], collide: 2}
      - {kind: loft, a: [[-0.3013, 0.5303, -1.5381], [0.2989, 1.1314, -1.5703], [0.4166, 1.1314, 0.6266], [-0.1836, 0.5303, 0.6588]], b: [[-0.1274, 0.287, -1.3311], [0.6568, 0.6123, -1.3731], [0.7745, 0.6123, 0.8237], [-0.0097, 0.287, 0.8657]], collide: 2}
      - {kind: loft, a: [[-0.1274, 0.287, -1.3311], [0.6568, 0.6123, -1.3731], [0.7745, 0.6123, 0.8237], [-0.0097, 0.287, 0.8657]], b: [[-0.0588, 0.0, -1.1185], [0.7899, 0.0, -1.164], [0.9076, 0.0, 1.0329], [0.0588, 0.0, 1.0784]], collide: 2}
      - {kind: loft, a: [[-0.0588, 0.0, -1.1185], [0.7899, 0.0, -1.164], [0.9076, 0.0, 1.0329], [0.0588, 0.0, 1.0784]], b: [[-0.1043, -0.287, -0.8998], [0.6799, -0.6123, -0.9418], [0.7976, -0.6123, 1.2551], [0.0134, -0.287, 1.2971]], collide: 2}
      - {kind: loft, a: [[-0.1043, -0.287, -0.8998], [0.6799, -0.6123, -0.9418], [0.7976, -0.6123, 1.2551], [0.0134, -0.287, 1.2971]], b: [[-0.2551, -0.5303, -0.6754], [0.3451, -1.1314, -0.7076], [0.4628, -1.1314, 1.4893], [-0.1374, -0.5303, 1.5215]], collide: 2}
      - {kind: loft, a: [[-0.2551, -0.5303, -0.6754], [0.3451, -1.1314, -0.7076], [0.4628, -1.1314, 1.4893], [-0.1374, -0.5303, 1.5215]], b: [[-0.4865, -0.6929, -0.4467], [-0.1617, -1.4782, -0.4641], [-0.044, -1.4782, 1.7327], [-0.3688, -0.6929, 1.7501]], collide: 2}
      - {kind: loft, a: [[-0.4865, -0.6929, -0.4467], [-0.1617, -1.4782, -0.4641], [-0.044, -1.4782, 1.7327], [-0.3688, -0.6929, 1.7501]], b: [[-0.7616, -0.75, -0.2157], [-0.7616, -1.6, -0.2157], [-0.6439, -1.6, 1.9812], [-0.6439, -0.75, 1.9812]], collide: 2}
      - {kind: loft, a: [[-0.7616, -0.75, -0.2157], [-0.7616, -1.6, -0.2157], [-0.6439, -1.6, 1.9812], [-0.6439, -0.75, 1.9812]], b: [[-1.0366, -0.6929, 0.0154], [-1.3614, -1.4782, 0.0328], [-1.2437, -1.4782, 2.2296], [-0.9189, -0.6929, 2.2122]], collide: 2}
      - {kind: loft, a: [[-1.0366, -0.6929, 0.0154], [-1.3614, -1.4782, 0.0328], [-1.2437, -1.4782, 2.2296], [-0.9189, -0.6929, 2.2122]], b: [[-1.268, -0.5303, 0.244], [-1.8682, -1.1314, 0.2762], [-1.7505, -1.1314, 2.473], [-1.1503, -0.5303, 2.4409]], collide: 2}
      - {kind: loft, a: [[-1.268, -0.5303, 0.244], [-1.8682, -1.1314, 0.2762], [-1.7505, -1.1314, 2.473], [-1.1503, -0.5303, 2.4409]], b: [[-1.4188, -0.287, 0.4684], [-2.203, -0.6123, 0.5104], [-2.0853, -0.6123, 2.7073], [-1.3011, -0.287, 2.6653]], collide: 2}
      - {kind: loft, a: [[-1.4188, -0.287, 0.4684], [-2.203, -0.6123, 0.5104], [-2.0853, -0.6123, 2.7073], [-1.3011, -0.287, 2.6653]], b: [[-1.4643, -0.0, 0.6871], [-2.313, -0.0, 0.7326], [-2.1954, -0.0, 2.9295], [-1.3466, -0.0, 2.884]], collide: 2}
      - {kind: loft, a: [[-1.4643, -0.0, 0.6871], [-2.313, -0.0, 0.7326], [-2.1954, -0.0, 2.9295], [-1.3466, -0.0, 2.884]], b: [[-1.3957, 0.287, 0.8998], [-2.1799, 0.6123, 0.9418], [-2.0622, 0.6123, 3.1386], [-1.278, 0.287, 3.0966]], collide: 2}
      - {kind: loft, a: [[-1.3957, 0.287, 0.8998], [-2.1799, 0.6123, 0.9418], [-2.0622, 0.6123, 3.1386], [-1.278, 0.287, 3.0966]], b: [[-1.2218, 0.5303, 1.1067], [-1.822, 1.1314, 1.1389], [-1.7043, 1.1314, 3.3357], [-1.1041, 0.5303, 3.3036]], collide: 2}
      - {kind: loft, a: [[-1.2218, 0.5303, 1.1067], [-1.822, 1.1314, 1.1389], [-1.7043, 1.1314, 3.3357], [-1.1041, 0.5303, 3.3036]], b: [[-0.9673, 0.6929, 1.3094], [-1.2921, 1.4782, 1.3268], [-1.1744, 1.4782, 3.5237], [-0.8496, 0.6929, 3.5063]], collide: 2}
      - {kind: loft, a: [[-0.9673, 0.6929, 1.3094], [-1.2921, 1.4782, 1.3268], [-1.1744, 1.4782, 3.5237], [-0.8496, 0.6929, 3.5063]], b: [[-0.6691, 0.75, 1.5097], [-0.6691, 1.6, 1.5097], [-0.5514, 1.6, 3.7066], [-0.5514, 0.75, 3.7066]], collide: 2}
      - {kind: loft, a: [[-0.6691, 0.75, 1.5097], [-0.6691, 1.6, 1.5097], [-0.5514, 1.6, 3.7066], [-0.5514, 0.75, 3.7066]], b: [[-0.371, 0.6929, 1.71], [-0.0462, 1.4782, 1.6926], [0.0715, 1.4782, 3.8895], [-0.2533, 0.6929, 3.9069]], collide: 2}
      - {kind: loft, a: [[-0.371, 0.6929, 1.71], [-0.0462, 1.4782, 1.6926], [0.0715, 1.4782, 3.8895], [-0.2533, 0.6929, 3.9069]], b: [[-0.1164, 0.5303, 1.9127], [0.4837, 1.1314, 1.8806], [0.6014, 1.1314, 4.0774], [0.0012, 0.5303, 4.1096]], collide: 2}
      - {kind: loft, a: [[-0.1164, 0.5303, 1.9127], [0.4837, 1.1314, 1.8806], [0.6014, 1.1314, 4.0774], [0.0012, 0.5303, 4.1096]], b: [[0.0575, 0.287, 2.1197], [0.8416, 0.6123, 2.0777], [0.9593, 0.6123, 4.2745], [0.1751, 0.287, 4.3165]], collide: 2}
      - {kind: loft, a: [[0.0575, 0.287, 2.1197], [0.8416, 0.6123, 2.0777], [0.9593, 0.6123, 4.2745], [0.1751, 0.287, 4.3165]], b: [[0.126, 0.0, 2.3323], [0.9748, 0.0, 2.2868], [1.0925, 0.0, 4.4837], [0.2437, 0.0, 4.5292]], collide: 2}
      - {kind: loft, a: [[0.126, 0.0, 2.3323], [0.9748, 0.0, 2.2868], [1.0925, 0.0, 4.4837], [0.2437, 0.0, 4.5292]], b: [[0.0806, -0.287, 2.551], [0.8647, -0.6123, 2.509], [0.9824, -0.6123, 4.7059], [0.1983, -0.287, 4.7479]], collide: 2}
      - {kind: loft, a: [[0.0806, -0.287, 2.551], [0.8647, -0.6123, 2.509], [0.9824, -0.6123, 4.7059], [0.1983, -0.287, 4.7479]], b: [[-0.0702, -0.5303, 2.7754], [0.53, -1.1314, 2.7433], [0.6476, -1.1314, 4.9401], [0.0475, -0.5303, 4.9723]], collide: 2}
      - {kind: loft, a: [[-0.0702, -0.5303, 2.7754], [0.53, -1.1314, 2.7433], [0.6476, -1.1314, 4.9401], [0.0475, -0.5303, 4.9723]], b: [[-0.3016, -0.6929, 3.0041], [0.0232, -1.4782, 2.9867], [0.1409, -1.4782, 5.1835], [-0.184, -0.6929, 5.2009]], collide: 2}
      - {kind: loft, a: [[-0.3016, -0.6929, 3.0041], [0.0232, -1.4782, 2.9867], [0.1409, -1.4782, 5.1835], [-0.184, -0.6929, 5.2009]], b: [[-0.5767, -0.75, 3.2351], [-0.5767, -1.6, 3.2351], [-0.459, -1.6, 5.432], [-0.459, -0.75, 5.432]], collide: 2}
      - {kind: loft, a: [[-0.5767, -0.75, 3.2351], [-0.5767, -1.6, 3.2351], [-0.459, -1.6, 5.432], [-0.459, -0.75, 5.432]], b: [[-0.8517, -0.6929, 3.4662], [-1.1766, -1.4782, 3.4836], [-1.0589, -1.4782, 5.6804], [-0.734, -0.6929, 5.663]], collide: 2}
      - {kind: loft, a: [[-0.8517, -0.6929, 3.4662], [-1.1766, -1.4782, 3.4836], [-1.0589, -1.4782, 5.6804], [-0.734, -0.6929, 5.663]], b: [[-1.0832, -0.5303, 3.6948], [-1.6833, -1.1314, 3.727], [-1.5656, -1.1314, 5.9238], [-0.9655, -0.5303, 5.8917]], collide: 2}
      - {kind: loft, a: [[-1.0832, -0.5303, 3.6948], [-1.6833, -1.1314, 3.727], [-1.5656, -1.1314, 5.9238], [-0.9655, -0.5303, 5.8917]], b: [[-1.2339, -0.287, 3.9192], [-2.0181, -0.6123, 3.9612], [-1.9004, -0.6123, 6.1581], [-1.1163, -0.287, 6.1161]], collide: 2}
      - {kind: loft, a: [[-1.2339, -0.287, 3.9192], [-2.0181, -0.6123, 3.9612], [-1.9004, -0.6123, 6.1581], [-1.1163, -0.287, 6.1161]], b: [[-1.2794, -0.0, 4.1379], [-2.1282, -0.0, 4.1834], [-2.0105, -0.0, 6.3803], [-1.1617, -0.0, 6.3348]], collide: 2}
      - {kind: loft, a: [[-1.2794, -0.0, 4.1379], [-2.1282, -0.0, 4.1834], [-2.0105, -0.0, 6.3803], [-1.1617, -0.0, 6.3348]], b: [[-1.2108, 0.287, 4.3506], [-1.995, 0.6123, 4.3926], [-1.8773, 0.6123, 6.5894], [-1.0931, 0.287, 6.5474]], collide: 2}
      - {kind: loft, a: [[-1.2108, 0.287, 4.3506], [-1.995, 0.6123, 4.3926], [-1.8773, 0.6123, 6.5894], [-1.0931, 0.287, 6.5474]], b: [[-1.0369, 0.5303, 4.5575], [-1.6371, 1.1314, 4.5897], [-1.5194, 1.1314, 6.7865], [-0.9192, 0.5303, 6.7544]], collide: 2}
      - {kind: loft, a: [[-1.0369, 0.5303, 4.5575], [-1.6371, 1.1314, 4.5897], [-1.5194, 1.1314, 6.7865], [-0.9192, 0.5303, 6.7544]], b: [[-0.7824, 0.6929, 4.7602], [-1.1072, 1.4782, 4.7776], [-0.9895, 1.4782, 6.9745], [-0.6647, 0.6929, 6.9571]], collide: 2}
      - {kind: loft, a: [[-0.7824, 0.6929, 4.7602], [-1.1072, 1.4782, 4.7776], [-0.9895, 1.4782, 6.9745], [-0.6647, 0.6929, 6.9571]], b: [[-0.4843, 0.75, 4.9605], [-0.4843, 1.6, 4.9605], [-0.3666, 1.6, 7.1574], [-0.3666, 0.75, 7.1574]], collide: 2}
      - {kind: loft, a: [[-0.4843, 0.75, 4.9605], [-0.4843, 1.6, 4.9605], [-0.3666, 1.6, 7.1574], [-0.3666, 0.75, 7.1574]], b: [[-0.1861, 0.6929, 5.1608], [0.1387, 1.4782, 5.1434], [0.2564, 1.4782, 7.3403], [-0.0684, 0.6929, 7.3577]], collide: 2}
      - {kind: loft, a: [[-0.1861, 0.6929, 5.1608], [0.1387, 1.4782, 5.1434], [0.2564, 1.4782, 7.3403], [-0.0684, 0.6929, 7.3577]], b: [[0.0684, 0.5303, 5.3635], [0.6686, 1.1314, 5.3314], [0.7863, 1.1314, 7.5282], [0.1861, 0.5303, 7.5604]], collide: 2}
      - {kind: loft, a: [[0.0684, 0.5303, 5.3635], [0.6686, 1.1314, 5.3314], [0.7863, 1.1314, 7.5282], [0.1861, 0.5303, 7.5604]], b: [[0.2423, 0.287, 5.5705], [1.0265, 0.6123, 5.5285], [1.1442, 0.6123, 7.7253], [0.36, 0.287, 7.7673]], collide: 2}
      - {kind: loft, a: [[0.2423, 0.287, 5.5705], [1.0265, 0.6123, 5.5285], [1.1442, 0.6123, 7.7253], [0.36, 0.287, 7.7673]], b: [[0.3109, 0.0, 5.7831], [1.1597, 0.0, 5.7376], [1.2774, 0.0, 7.9345], [0.4286, 0.0, 7.98]], collide: 2}
  - id: wheelL
    shape: part
    pos: [-6.45, 0, 0]
    density: 2000
    friction: 0.12
    color: "#c9b48a"
    pieces:
      - {kind: disc, center: [-6.45, 0], radius: 3.0, inner: 0.5, y: [-0.4, 0.4], collide: 0}
      - {kind: disc, center: [-6.45, 0], radius: 5.0, y: [1.0000000000000002, 1.3000000000000003], collide: 0, color: "#8f7a58"}
      - {kind: disc, center: [-6.45, 0], radius: 4.5, y: [1.3000000000000003, 3.1], collide: 0, color: "#8f7a58"}   # the pulley
      - {kind: disc, center: [-6.45, 0], radius: 5.0, y: [3.1, 3.4000000000000004], collide: 0, color: "#8f7a58"}
      - {kind: rod, from: [-6.45, -0.4, 0], to: [-6.45, 1.3000000000000003, 0], radius: 0.6, collide: 0}
      - {kind: rod, from: [-3.55, 0, 0.0], to: [-1.95, 0, 0.0], radius: 0.25, capsule: true, collide: 1}
      - {kind: rod, from: [-4.3994, 0, 2.0506], to: [-3.268, 0, 3.182], radius: 0.25, capsule: true, collide: 1}
      - {kind: rod, from: [-6.45, 0, 2.9], to: [-6.45, 0, 4.5], radius: 0.25, capsule: true, collide: 1}
      - {kind: rod, from: [-8.5006, 0, 2.0506], to: [-9.632, 0, 3.182], radius: 0.25, capsule: true, collide: 1}
      - {kind: rod, from: [-9.35, 0, 0.0], to: [-10.95, 0, 0.0], radius: 0.25, capsule: true, collide: 1}
      - {kind: rod, from: [-8.5006, 0, -2.0506], to: [-9.632, 0, -3.182], radius: 0.25, capsule: true, collide: 1}
      - {kind: rod, from: [-6.45, 0, -2.9], to: [-6.45, 0, -4.5], radius: 0.25, capsule: true, collide: 1}
      - {kind: rod, from: [-4.3994, 0, -2.0506], to: [-3.268, 0, -3.182], radius: 0.25, capsule: true, collide: 1}
  - id: wheelR
    shape: part
    pos: [6.45, 0, 0]
    density: 2000
    friction: 0.12
    color: "#c9b48a"
    pieces:
      - {kind: disc, center: [6.45, 0], radius: 3.0, inner: 0.5, y: [-0.4, 0.4], collide: 0}
      - {kind: disc, center: [6.45, 0], radius: 5.0, y: [1.0000000000000002, 1.3000000000000003], collide: 0, color: "#8f7a58"}
      - {kind: disc, center: [6.45, 0], radius: 4.5, y: [1.3000000000000003, 3.1], collide: 0, color: "#8f7a58"}   # the pulley
      - {kind: disc, center: [6.45, 0], radius: 5.0, y: [3.1, 3.4000000000000004], collide: 0, color: "#8f7a58"}
      - {kind: rod, from: [6.45, -0.4, 0], to: [6.45, 1.3000000000000003, 0], radius: 0.6, collide: 0}
      - {kind: rod, from: [9.1293, 0, 1.1098], to: [10.6075, 0, 1.7221], radius: 0.25, capsule: true, collide: 1}
      - {kind: rod, from: [7.5598, 0, 2.6793], to: [8.1721, 0, 4.1575], radius: 0.25, capsule: true, collide: 1}
      - {kind: rod, from: [5.3402, 0, 2.6793], to: [4.7279, 0, 4.1575], radius: 0.25, capsule: true, collide: 1}
      - {kind: rod, from: [3.7707, 0, 1.1098], to: [2.2925, 0, 1.7221], radius: 0.25, capsule: true, collide: 1}
      - {kind: rod, from: [3.7707, 0, -1.1098], to: [2.2925, 0, -1.7221], radius: 0.25, capsule: true, collide: 1}
      - {kind: rod, from: [5.3402, 0, -2.6793], to: [4.7279, 0, -4.1575], radius: 0.25, capsule: true, collide: 1}
      - {kind: rod, from: [7.5598, 0, -2.6793], to: [8.1721, 0, -4.1575], radius: 0.25, capsule: true, collide: 1}
      - {kind: rod, from: [9.1293, 0, -1.1098], to: [10.6075, 0, -1.7221], radius: 0.25, capsule: true, collide: 1}
  - id: tappet
    shape: part
    pos: [0, 0, -14.0]
    density: 2500
    friction: 0.1
    color: "#a08a68"
    pieces:
      - {kind: poly, points: [[-0.0643, -14.3441], [-11.2382, -12.257], [-11.1097, -11.5689], [0.0643, -13.6559]], y: [-0.8, 0.0], collide: 2}
      - {kind: poly, points: [[-0.2168, -13.7252], [8.708, -6.6853], [9.1416, -7.2349], [0.2168, -14.2748]], y: [-0.8, 0.0], collide: 2}
      - {kind: poly, points: [[-12.508, -11.9327], [-10.9544, -11.5499], [-10.7869, -12.2296], [-12.3405, -12.6124]], y: [-0.8, 0.0], collide: 2}
      - {kind: poly, points: [[8.5617, -6.7406], [10.1152, -6.3577], [10.2827, -7.0374], [8.7292, -7.4202]], y: [-0.8, 0.0], collide: 2}
      - {kind: poly, points: [[-0.3884, -14.0957], [-1.4412, -9.8235], [-0.6644, -9.6321], [0.3884, -13.9043]], y: [-0.8, 0.0], collide: 0}
      - {kind: poly, points: [[-2.4374, -10.378], [-2.9878, -8.1448], [-2.4052, -8.0012], [-1.8549, -10.2344]], y: [-1.5, 1.5], collide: 2}
      - {kind: poly, points: [[-0.1072, -9.8037], [-0.6575, -7.5706], [-0.0749, -7.427], [0.4754, -9.6602]], y: [-1.5, 1.5], collide: 2}
      - {kind: poly, points: [[-2.5092, -10.0867], [0.4036, -9.3689], [0.5472, -9.9515], [-2.3657, -10.6693]], y: [-1.5, 1.5], collide: 0}
      - {kind: poly, points: [[-2.5092, -10.0867], [0.4036, -9.3689], [-0.0749, -7.427], [-2.9878, -8.1448]], y: [-1.5, -0.8999999999999999], collide: 2}
      - {kind: poly, points: [[-2.5092, -10.0867], [0.4036, -9.3689], [-0.0749, -7.427], [-2.9878, -8.1448]], y: [0.8999999999999999, 1.5], collide: 2}
      - {kind: disc, center: [-0.7178, -11.0871], radius: 2.6, y: [-1.6, 0.8], collide: 0, density: 7800, color: "#6f6a60"}   # its weight
  - id: bailL
    shape: part
    pos: [-10.95, 0, -30.8]
    density: 7800
    friction: 0.2
    color: "#6f6a60"
    pieces:
      - {kind: rod, from: [-10.95, -0.5499999999999998, -30.8], to: [-10.95, 4.95, -30.8], radius: 0.25, capsule: true, collide: 1}   # the bail's bar: strikes the tappet
      - {kind: rod, from: [-10.95, -0.5499999999999998, -30.8], to: [-10.95, -0.5499999999999998, -32.2], radius: 0.15, collide: 0}
      - {kind: rod, from: [-10.95, 4.95, -30.8], to: [-10.95, 4.95, -32.2], radius: 0.15, collide: 0}
  - id: bucketL
    shape: part
    pos: [-10.95, 0, -32.2]
    mount: bailL
    density: 700
    friction: 0.2
    color: "#8a7d68"
    pieces:
      - {kind: poly, points: [[-13.45, -37.3], [-8.45, -37.3], [-8.45, -37.05], [-13.45, -37.05]], y: [-0.2999999999999998, 4.7], collide: 0}
      - {kind: poly, points: [[-13.45, -37.3], [-13.2, -37.3], [-13.2, -31.8], [-13.45, -31.8]], y: [-0.2999999999999998, 4.7], collide: 1}
      - {kind: poly, points: [[-8.7, -37.3], [-8.45, -37.3], [-8.45, -31.8], [-8.7, -31.8]], y: [-0.2999999999999998, 4.7], collide: 0}
      - {kind: poly, points: [[-13.45, -37.3], [-8.45, -37.3], [-8.45, -31.8], [-13.45, -31.8]], y: [-0.2999999999999998, -0.04999999999999982], collide: 0}
      - {kind: poly, points: [[-13.45, -37.3], [-8.45, -37.3], [-8.45, -31.8], [-13.45, -31.8]], y: [4.45, 4.7], collide: 0}
      - {kind: rod, from: [-13.45, 0.30000000000000016, -32.1], to: [-17.95, 0.30000000000000016, -32.1], radius: 0.3, capsule: true, collide: 1}   # the ear: meets the tipping pin
  - id: bailR
    shape: part
    pos: [10.95, 0, -17.8]
    density: 7800
    friction: 0.2
    color: "#6f6a60"
    pieces:
      - {kind: rod, from: [10.95, -0.5499999999999998, -17.8], to: [10.95, 4.95, -17.8], radius: 0.25, capsule: true, collide: 1}   # the bail's bar: strikes the tappet
      - {kind: rod, from: [10.95, -0.5499999999999998, -17.8], to: [10.95, -0.5499999999999998, -19.2], radius: 0.15, collide: 0}
      - {kind: rod, from: [10.95, 4.95, -17.8], to: [10.95, 4.95, -19.2], radius: 0.15, collide: 0}
  - id: bucketR
    shape: part
    pos: [10.95, 0, -19.2]
    mount: bailR
    density: 700
    friction: 0.2
    color: "#8a7d68"
    pieces:
      - {kind: poly, points: [[8.45, -24.3], [13.45, -24.3], [13.45, -24.05], [8.45, -24.05]], y: [-0.2999999999999998, 4.7], collide: 0}
      - {kind: poly, points: [[8.45, -24.3], [8.7, -24.3], [8.7, -18.8], [8.45, -18.8]], y: [-0.2999999999999998, 4.7], collide: 0}
      - {kind: poly, points: [[13.2, -24.3], [13.45, -24.3], [13.45, -18.8], [13.2, -18.8]], y: [-0.2999999999999998, 4.7], collide: 1}
      - {kind: poly, points: [[8.45, -24.3], [13.45, -24.3], [13.45, -18.8], [8.45, -18.8]], y: [-0.2999999999999998, -0.04999999999999982], collide: 0}
      - {kind: poly, points: [[8.45, -24.3], [13.45, -24.3], [13.45, -18.8], [8.45, -18.8]], y: [4.45, 4.7], collide: 0}
      - {kind: rod, from: [13.45, 0.30000000000000016, -19.1], to: [17.95, 0.30000000000000016, -19.1], radius: 0.3, capsule: true, collide: 1}   # the ear: meets the tipping pin
  - id: frame
    shape: part
    pos: [0, 0, 0]
    fixed: true
    friction: 0.1
    color: "#8f8a80"
    pieces:
      - {kind: rod, from: [0, 0, 27.0], to: [0, 0, 28.2], radius: 0.8, collide: 0}   # the wind-wheel's top bearing
      - {kind: rod, from: [-16, 0, 28.2], to: [16, 0, 28.2], radius: 0.5, collide: 0}
      - {kind: rod, from: [-16, 0, -20.0], to: [-16, 0, 28.2], radius: 0.6, collide: 0}
      - {kind: rod, from: [16, 0, -20.0], to: [16, 0, 28.2], radius: 0.6, collide: 0}
      - {kind: rod, from: [-16, 0, 16.5], to: [16, 0, 16.5], radius: 0.4, collide: 0}
      - {kind: rod, from: [0, 0, 15.5], to: [0, 0, 17.0], radius: 0.8, collide: 0}   # its lower bearing
      - {kind: rod, from: [-16, 3.8000000000000003, 0], to: [16, 3.8000000000000003, 0], radius: 0.5, collide: 0}   # the wheels' studs' bar, behind
      - {kind: rod, from: [-6.45, 3.4000000000000004, 0], to: [-6.45, 3.8000000000000003, 0], radius: 0.6, collide: 0}
      - {kind: rod, from: [6.45, 3.4000000000000004, 0], to: [6.45, 3.8000000000000003, 0], radius: 0.6, collide: 0}
      - {kind: rod, from: [0, -1.2, -14.0], to: [0, 0.2, -14.0], radius: 0.35, collide: 0}   # the tappet's pin
      - {kind: rod, from: [0, 0.2, -14.0], to: [0, 0.2, -20.0], radius: 0.45, collide: 0}
      - {kind: poly, points: [[-22, -21.0], [-14.45, -21.0], [-14.45, -20.0], [-22, -20.0]], y: [-4, 7], collide: 0, color: "#8a7f6a"}
      - {kind: poly, points: [[14.45, -21.0], [22, -21.0], [22, -20.0], [14.45, -20.0]], y: [-4, 7], collide: 0, color: "#8a7f6a"}
      - {kind: poly, points: [[-7.449999999999999, -21.0], [7.449999999999999, -21.0], [7.449999999999999, -20.0], [-7.449999999999999, -20.0]], y: [-4, 7], collide: 0, color: "#8a7f6a"}
      - {kind: rod, from: [-14.45, -0.49999999999999983, -15.3], to: [-14.45, 0.9000000000000001, -15.3], radius: 0.3, capsule: true, collide: 2, color: "#6f6a60"}   # the tipping pin
      - {kind: rod, from: [-14.45, -1.7999999999999998, -15.3], to: [-14.45, -0.49999999999999983, -15.3], radius: 0.3, collide: 0, color: "#6f6a60"}
      - {kind: rod, from: [-14.45, -1.7999999999999998, -15.3], to: [-14.45, -1.7999999999999998, -20.0], radius: 0.3, collide: 0, color: "#6f6a60"}
      - {kind: poly, points: [[-21.5, -20.0], [-14.649999999999999, -20.0], [-14.649999999999999, -19.7], [-21.5, -19.7]], y: [-3, 6], collide: 0, color: "#8a6f4a"}
      - {kind: poly, points: [[-21.5, -20.0], [-21.2, -20.0], [-21.2, -16.0], [-21.5, -16.0]], y: [-3, 6], collide: 0, color: "#8a6f4a"}
      - {kind: poly, points: [[-14.95, -20.0], [-14.649999999999999, -20.0], [-14.649999999999999, -16.0], [-14.95, -16.0]], y: [-3, 6], collide: 0, color: "#8a6f4a"}
      - {kind: rod, from: [14.45, -0.49999999999999983, -15.3], to: [14.45, 0.9000000000000001, -15.3], radius: 0.3, capsule: true, collide: 2, color: "#6f6a60"}   # the tipping pin
      - {kind: rod, from: [14.45, -1.7999999999999998, -15.3], to: [14.45, -0.49999999999999983, -15.3], radius: 0.3, collide: 0, color: "#6f6a60"}
      - {kind: rod, from: [14.45, -1.7999999999999998, -15.3], to: [14.45, -1.7999999999999998, -20.0], radius: 0.3, collide: 0, color: "#6f6a60"}
      - {kind: poly, points: [[14.649999999999999, -20.0], [21.5, -20.0], [21.5, -19.7], [14.649999999999999, -19.7]], y: [-3, 6], collide: 0, color: "#8a6f4a"}
      - {kind: poly, points: [[14.649999999999999, -20.0], [14.95, -20.0], [14.95, -16.0], [14.649999999999999, -16.0]], y: [-3, 6], collide: 0, color: "#8a6f4a"}
      - {kind: poly, points: [[21.2, -20.0], [21.5, -20.0], [21.5, -16.0], [21.2, -16.0]], y: [-3, 6], collide: 0, color: "#8a6f4a"}
      - {kind: poly, points: [[-14.45, -39.8], [-13.95, -39.8], [-13.95, -21.0], [-14.45, -21.0]], y: [-4, 7], collide: 0, color: "#7d7468"}
      - {kind: poly, points: [[13.95, -39.8], [14.45, -39.8], [14.45, -21.0], [13.95, -21.0]], y: [-4, 7], collide: 0, color: "#7d7468"}
      - {kind: poly, points: [[-14.45, -40.3], [14.45, -40.3], [14.45, -39.8], [-14.45, -39.8]], y: [-4, 7], collide: 0, color: "#7d7468"}
      - {kind: poly, points: [[-13.95, -39.8], [13.95, -39.8], [13.95, -21.0], [-13.95, -21.0]], y: [7, 7.5], collide: 0, color: "#7d7468"}
joints:
  - {id: j_wind, type: hinge, body: wwheel, axis: [0, 0, 1], damping: 0.0005}   # - : clockwise seen from above
  - {id: j_s0, type: hinge, body: sail0, axis: [1.0, 0.0, 0], damping: 5e-05, range: [0, 1.4]}   # its stop at 0: hanging plumb, it may swing up only backwards
  - {id: j_s1, type: hinge, body: sail1, axis: [0.5, 0.866, 0], damping: 5e-05, range: [0, 1.4]}   # its stop at 0: hanging plumb, it may swing up only backwards
  - {id: j_s2, type: hinge, body: sail2, axis: [-0.5, 0.866, 0], damping: 5e-05, range: [0, 1.4]}   # its stop at 0: hanging plumb, it may swing up only backwards
  - {id: j_s3, type: hinge, body: sail3, axis: [-1.0, 0.0, 0], damping: 5e-05, range: [0, 1.4]}   # its stop at 0: hanging plumb, it may swing up only backwards
  - {id: j_s4, type: hinge, body: sail4, axis: [-0.5, -0.866, 0], damping: 5e-05, range: [0, 1.4]}   # its stop at 0: hanging plumb, it may swing up only backwards
  - {id: j_s5, type: hinge, body: sail5, axis: [0.5, -0.866, 0], damping: 5e-05, range: [0, 1.4]}   # its stop at 0: hanging plumb, it may swing up only backwards
  - {id: j_cx, type: hinge, body: cross, axis: [1, 0, 0], damping: 0.0002}
  - {id: j_worm, type: hinge, body: worm, axis: [0, 1, 0], damping: 0.0002}
  - {id: j_wL, type: hinge, body: wheelL, axis: [0, 1, 0], damping: 0.002}   # + : clockwise as drawn (raises the left bucket)
  - {id: j_wR, type: hinge, body: wheelR, axis: [0, 1, 0], damping: 0.002}   # - : anticlockwise (raises the right bucket)
  - {id: j_tap, type: hinge, body: tappet, axis: [0, 1, 0], damping: 0.002, range: [-0.02, 0.5032]}   # its two stops
  - {id: j_bL, type: slide, body: bailL, axis: [0, 0, 1], damping: 0.05, range: [-12, 25.0]}
  - {id: j_bR, type: slide, body: bailR, axis: [0, 0, 1], damping: 0.05, range: [-25.0, 12]}
  - {id: j_tL, type: hinge, body: bucketL, axis: [0, 1, 0], damping: 0.002, range: [-1.9, 0.05]}   # - : tipped outward (left)
  - {id: j_tR, type: hinge, body: bucketR, axis: [0, 1, 0], damping: 0.002, range: [-0.05, 1.9]}
windings:
  - {id: ropeL, drums: [{joint: j_wL, radius: 4.5, sense: 1}], ends: [{joint: j_bL, sense: -1}], draw: {from: {body: bailL, at: [-10.95, 2.2, -30.8]}, over: {center: [-6.45, 2.2, 0], radius: 4.5, axis: y}, to: [0, 2.2, 4.7]}, width: 0.3, thickness: 0.3}
  - {id: ropeM, drums: [{joint: j_wL, radius: 4.5, sense: -1}, {joint: j_wR, radius: 4.5, sense: 1}]}
  - {id: ropeR, drums: [{joint: j_wR, radius: 4.5, sense: -1}], ends: [{joint: j_bR, sense: -1}], draw: {from: {body: bailR, at: [10.95, 2.2, -17.8]}, over: {center: [6.45, 2.2, 0], radius: 4.5, axis: y}, to: [0, 2.2, 4.7]}, width: 0.3, thickness: 0.3}
vessels:
  substeps: 2
  nodes:
    - {id: well, kind: tank, area: 292.95, z: -39.8, level: 6.0, draw: {section: [[-13.95, -39.8], [13.95, -39.8], [13.95, -21.0], [-13.95, -21.0]], y: [-3.5, 7]}}
    - {id: bucketL, kind: tank, area: 20.25, z: -37.05, level: 3.5, max: 5.2, body: bucketL, pos: [-10.95, 2.2, -35.05], draw: {section: [[-13.2, -37.05], [-8.7, -37.05], [-8.7, -31.8], [-13.2, -31.8]], y: [-0.04999999999999982, 4.45]}}
    - {id: bucketR, kind: tank, area: 20.25, z: -37.05, level: 0, max: 5.2, body: bucketR, pos: [10.95, 2.2, -22.05], draw: {section: [[8.7, -24.05], [13.2, -24.05], [13.2, -18.8], [8.7, -18.8]], y: [-0.04999999999999982, 4.45]}}
    - {id: troughL, kind: tank, area: 56.25, z: -19.7, level: 0.2, max: 3.6, draw: {section: [[-21.2, -19.7], [-14.95, -19.7], [-14.95, -16.0], [-21.2, -16.0]], y: [-2.7, 5.7]}}
    - {id: troughR, kind: tank, area: 56.25, z: -19.7, level: 0.2, max: 3.6, draw: {section: [[14.95, -19.7], [21.2, -19.7], [21.2, -16.0], [14.95, -16.0]], y: [-2.7, 5.7]}}
  links:
    - {id: fill_l, from: well, to: bucketL, area: 4, z: -37.05, open: {joint: j_bL, q: [1.0, 2.5], frac: [1, 0]}}
    - {id: fill_r, from: well, to: bucketR, area: 4, z: -37.05, open: {joint: j_bR, q: [-12.0, -10.5], frac: [1, 0]}}
    - {id: pour_l, from: bucketL, to: troughL, area: 3, z: -37.05, zTo: -16.0, open: {joint: j_tL, q: [-0.7, -0.25], frac: [1, 0]},
       draw: {from: [-13.45, 2.2, -31.8], fromBody: bucketL, to: [-16.45, 2.2, -19.0], width: 1.4, flow: 0.05}}
    - {id: pour_r, from: bucketR, to: troughR, area: 3, z: -37.05, zTo: -16.0, open: {joint: j_tR, q: [0.25, 0.7], frac: [0, 1]},
       draw: {from: [13.45, 2.2, -18.8], fromBody: bucketR, to: [16.45, 2.2, -19.0], width: 1.4, flow: 0.05}}
contact: {solref: [0.002, 1.0], solimp: [0.98, 0.99, 0.0002], margin: 0}
driver: {joint: j_wind, kind: torque, torque: 0, max_torque: 0.0001}   # no hand on anything: the wind is the only input
checks:
  - {type: turning, joint: j_wind, direction: -1, min_mean: 3, min_fraction: 0.9, settle_s: 2.0, window_s: 15.5}
  - {type: penetration, max: 0.003}
camera: {target: [9.0, 0, -9.0], position: [9.0, -170.0, -1.0], fov: 31.0}
display:
  caption: right
  output: j_bL
  labels: {j_wind: "Wind-wheel", j_tap: "Tappet", j_bL: "Left bucket", j_bR: "Right bucket", j_wL: "Left worm-wheel", j_wR: "Right worm-wheel"}
  proof: {label: "Threads out of contact", sub: "the wind turns the wheel and worm, and the buckets stand"}

