# No. 473 (Brown 1868): "Air-pump of simple construction. Smaller tub inverted in larger one. The latter contains water to upper dotted line, and the pipe from shaft or space to be exhausted passes through it to a few inches above water, terminating with valve opening upward. Upper tub has short pipe and upwardly-opening valve at top, and is suspended by ropes from levers. When upper tub descends, great part of air within is expelled through upper valve, so that, when afterward raised, rarefaction within causes gas or air to ascend through the lower valve. This pump was successfully used for drawing off carbonic acid from a large and deep shaft."
# Model (cm, gravity on, the tubs cut away in half section, seen from in front). The smaller tub (the bell, 28 cm inside,
# 4 kg) hangs inverted in the larger, which holds water; it is hung by a rope, over a small guide, from one end of a straight lever, which a man works
# (swung +-0.15 rad at 0.5 Hz, the only drive). The pipe from the shaft (a space of 20 litres of air whose fresh air comes in at its mouth) rises through the
# water to 6 cm over it and ends in a valve opening upward; the bell's crown has a short pipe and a valve opening upward. The
# bell's inside is one lumped chamber (src/fluid/vessels.c): its water, under its air, joined to the large tub's water (an open chamber)
# under the bell's rim, so the water inside stands lower or higher than outside by the air's pressure. As the bell falls by its
# weight its air is pressed out through the crown's valve; raised, its air is rarefied and draws air up from the shaft through
# the lower valve, and the shaft's air thins stroke by stroke. Both waters are drawn from their vessels' levels; the valves are
# check links (drawn closed). Generator: opencode-runs/water/gen473.py.
number: 473
slug: air-pump-simple-construction
name: Air-pump of simple construction
brown: "Air-pump of simple construction. Smaller tub inverted in larger one. The latter contains water to upper dotted line, and the pipe from shaft or space to be exhausted passes through it to a few inches above water, terminating with valve opening upward. Upper tub has short pipe and upwardly-opening valve at top, and is suspended by ropes from levers. When upper tub descends, great part of air within is expelled through upper valve, so that, when afterward raised, rarefaction within causes gas or air to ascend through the lower valve. This pump was successfully used for drawing off carbonic acid from a large and deep shaft."
units: cm
sim:
  timestep: 0.0005
  integrator: implicitfast
  iterations: 60
  duration_s: 16
  floor: false
bodies:
  - id: bell
    shape: part
    pos: [0, 0, 37]
    mass: 4
    color: "#8a6a45"
    pieces:
      - {kind: loft, a: [[14, 0, 37], [13.3148, 4.3262, 37], [13.8854, 4.5116, 37], [14.6, 0, 37]], b: [[14, 0, 10], [13.3148, 4.3262, 10], [13.8854, 4.5116, 10], [14.6, 0, 10]], collide: 0, color: "#8a6a45"}
      - {kind: loft, a: [[13.3148, 4.3262, 37], [11.3262, 8.229, 37], [11.8116, 8.5817, 37], [13.8854, 4.5116, 37]], b: [[13.3148, 4.3262, 10], [11.3262, 8.229, 10], [11.8116, 8.5817, 10], [13.8854, 4.5116, 10]], collide: 0, color: "#8a6a45"}
      - {kind: loft, a: [[11.3262, 8.229, 37], [8.229, 11.3262, 37], [8.5817, 11.8116, 37], [11.8116, 8.5817, 37]], b: [[11.3262, 8.229, 10], [8.229, 11.3262, 10], [8.5817, 11.8116, 10], [11.8116, 8.5817, 10]], collide: 0, color: "#8a6a45"}
      - {kind: loft, a: [[8.229, 11.3262, 37], [4.3262, 13.3148, 37], [4.5116, 13.8854, 37], [8.5817, 11.8116, 37]], b: [[8.229, 11.3262, 10], [4.3262, 13.3148, 10], [4.5116, 13.8854, 10], [8.5817, 11.8116, 10]], collide: 0, color: "#8a6a45"}
      - {kind: loft, a: [[4.3262, 13.3148, 37], [0, 14, 37], [0, 14.6, 37], [4.5116, 13.8854, 37]], b: [[4.3262, 13.3148, 10], [0, 14, 10], [0, 14.6, 10], [4.5116, 13.8854, 10]], collide: 0, color: "#8a6a45"}
      - {kind: loft, a: [[0, 14, 37], [-4.3262, 13.3148, 37], [-4.5116, 13.8854, 37], [0, 14.6, 37]], b: [[0, 14, 10], [-4.3262, 13.3148, 10], [-4.5116, 13.8854, 10], [0, 14.6, 10]], collide: 0, color: "#8a6a45"}
      - {kind: loft, a: [[-4.3262, 13.3148, 37], [-8.229, 11.3262, 37], [-8.5817, 11.8116, 37], [-4.5116, 13.8854, 37]], b: [[-4.3262, 13.3148, 10], [-8.229, 11.3262, 10], [-8.5817, 11.8116, 10], [-4.5116, 13.8854, 10]], collide: 0, color: "#8a6a45"}
      - {kind: loft, a: [[-8.229, 11.3262, 37], [-11.3262, 8.229, 37], [-11.8116, 8.5817, 37], [-8.5817, 11.8116, 37]], b: [[-8.229, 11.3262, 10], [-11.3262, 8.229, 10], [-11.8116, 8.5817, 10], [-8.5817, 11.8116, 10]], collide: 0, color: "#8a6a45"}
      - {kind: loft, a: [[-11.3262, 8.229, 37], [-13.3148, 4.3262, 37], [-13.8854, 4.5116, 37], [-11.8116, 8.5817, 37]], b: [[-11.3262, 8.229, 10], [-13.3148, 4.3262, 10], [-13.8854, 4.5116, 10], [-11.8116, 8.5817, 10]], collide: 0, color: "#8a6a45"}
      - {kind: loft, a: [[-13.3148, 4.3262, 37], [-14, 0, 37], [-14.6, 0, 37], [-13.8854, 4.5116, 37]], b: [[-13.3148, 4.3262, 10], [-14, 0, 10], [-14.6, 0, 10], [-13.8854, 4.5116, 10]], collide: 0, color: "#8a6a45"}
      - {kind: loft, a: [[-14.6, 0, 37.8], [14.6, 0, 37.8], [14.6, 14.6, 37.8], [-14.6, 14.6, 37.8]], b: [[-14.6, 0, 37], [14.6, 0, 37], [14.6, 14.6, 37], [-14.6, 14.6, 37]], collide: 0, color: "#8a6a45"}
      - {kind: rod, from: [6, 0.8, 37.8], to: [6, 0.8, 40.8], radius: 0.8, collide: 0, color: "#5f5a52"}
      - {kind: loft, a: [[4.7, 0, 41.2], [7.3, 0, 41.2], [7.3, 1.6, 41.2], [4.7, 1.6, 41.2]], b: [[4.7, 0, 40.8], [7.3, 0, 40.8], [7.3, 1.6, 40.8], [4.7, 1.6, 40.8]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[-0.5, -0.5, 39.4], [0.5, -0.5, 39.4], [0.5, 0.5, 39.4], [-0.5, 0.5, 39.4]], b: [[-0.5, -0.5, 37.8], [0.5, -0.5, 37.8], [0.5, 0.5, 37.8], [-0.5, 0.5, 37.8]], collide: 0, color: "#6d675c"}
      - {kind: rod, from: [0, -0.6, 39.4], to: [0, 0.6, 39.4], radius: 0.4, collide: 0, color: "#6d675c"}
  - id: lever
    shape: part
    pos: [30, 0, 54]
    mass: 5
    color: "#8a6a45"
    pieces:
      - {kind: rod, from: [30, 0, 54], to: [0, 0, 54], radius: 1, capsule: true, collide: 0}
      - {kind: rod, from: [30, 0, 54], to: [64, 0, 54], radius: 0.9, capsule: true, collide: 0}
      - {kind: rod, from: [64, -3, 54], to: [64, 0.6, 54], radius: 0.6, capsule: true, collide: 0}
      - {kind: loft, a: [[58, -2, 56], [62, -2, 56], [62, 2, 56], [58, 2, 56]], b: [[58, -2, 52], [62, -2, 52], [62, 2, 52], [58, 2, 52]], collide: 0, color: "#6d675c"}
      - {kind: rod, from: [0, -0.7, 53.1], to: [0, 0.7, 53.1], radius: 0.35, capsule: true, collide: 0}
  - id: frame
    shape: part
    pos: [0, 0, 0]
    fixed: true
    color: "#d6cdb8"
    pieces:
      - {kind: loft, a: [[-30, -6, 0], [72, -6, 0], [72, 24, 0], [-30, 24, 0]], b: [[-30, -6, -1.5], [72, -6, -1.5], [72, 24, -1.5], [-30, 24, -1.5]], collide: 0, color: "#8b7d66"}
      - {kind: loft, a: [[20, 0, 33], [19.0211, 6.1803, 33], [19.782, 6.4276, 33], [20.8, 0, 33]], b: [[20, 0, 0], [19.0211, 6.1803, 0], [19.782, 6.4276, 0], [20.8, 0, 0]], collide: 0, color: "#8a6a45"}
      - {kind: loft, a: [[19.0211, 6.1803, 33], [16.1803, 11.7557, 33], [16.8276, 12.2259, 33], [19.782, 6.4276, 33]], b: [[19.0211, 6.1803, 0], [16.1803, 11.7557, 0], [16.8276, 12.2259, 0], [19.782, 6.4276, 0]], collide: 0, color: "#8a6a45"}
      - {kind: loft, a: [[16.1803, 11.7557, 33], [11.7557, 16.1803, 33], [12.2259, 16.8276, 33], [16.8276, 12.2259, 33]], b: [[16.1803, 11.7557, 0], [11.7557, 16.1803, 0], [12.2259, 16.8276, 0], [16.8276, 12.2259, 0]], collide: 0, color: "#8a6a45"}
      - {kind: loft, a: [[11.7557, 16.1803, 33], [6.1803, 19.0211, 33], [6.4276, 19.782, 33], [12.2259, 16.8276, 33]], b: [[11.7557, 16.1803, 0], [6.1803, 19.0211, 0], [6.4276, 19.782, 0], [12.2259, 16.8276, 0]], collide: 0, color: "#8a6a45"}
      - {kind: loft, a: [[6.1803, 19.0211, 33], [0, 20, 33], [0, 20.8, 33], [6.4276, 19.782, 33]], b: [[6.1803, 19.0211, 0], [0, 20, 0], [0, 20.8, 0], [6.4276, 19.782, 0]], collide: 0, color: "#8a6a45"}
      - {kind: loft, a: [[0, 20, 33], [-6.1803, 19.0211, 33], [-6.4276, 19.782, 33], [0, 20.8, 33]], b: [[0, 20, 0], [-6.1803, 19.0211, 0], [-6.4276, 19.782, 0], [0, 20.8, 0]], collide: 0, color: "#8a6a45"}
      - {kind: loft, a: [[-6.1803, 19.0211, 33], [-11.7557, 16.1803, 33], [-12.2259, 16.8276, 33], [-6.4276, 19.782, 33]], b: [[-6.1803, 19.0211, 0], [-11.7557, 16.1803, 0], [-12.2259, 16.8276, 0], [-6.4276, 19.782, 0]], collide: 0, color: "#8a6a45"}
      - {kind: loft, a: [[-11.7557, 16.1803, 33], [-16.1803, 11.7557, 33], [-16.8276, 12.2259, 33], [-12.2259, 16.8276, 33]], b: [[-11.7557, 16.1803, 0], [-16.1803, 11.7557, 0], [-16.8276, 12.2259, 0], [-12.2259, 16.8276, 0]], collide: 0, color: "#8a6a45"}
      - {kind: loft, a: [[-16.1803, 11.7557, 33], [-19.0211, 6.1803, 33], [-19.782, 6.4276, 33], [-16.8276, 12.2259, 33]], b: [[-16.1803, 11.7557, 0], [-19.0211, 6.1803, 0], [-19.782, 6.4276, 0], [-16.8276, 12.2259, 0]], collide: 0, color: "#8a6a45"}
      - {kind: loft, a: [[-19.0211, 6.1803, 33], [-20, 0, 33], [-20.8, 0, 33], [-19.782, 6.4276, 33]], b: [[-19.0211, 6.1803, 0], [-20, 0, 0], [-20.8, 0, 0], [-19.782, 6.4276, 0]], collide: 0, color: "#8a6a45"}
      - {kind: loft, a: [[-20.8, 0, 2], [20.8, 0, 2], [20.8, 20.8, 2], [-20.8, 20.8, 2]], b: [[-20.8, 0, 0], [20.8, 0, 0], [20.8, 20.8, 0], [-20.8, 20.8, 0]], collide: 0, color: "#8a6a45"}
      - {kind: loft, a: [[20.8, 0, 6.8], [19.782, 6.4276, 6.8], [20.0197, 6.5048, 6.8], [21.05, 0, 6.8]], b: [[20.8, 0, 6], [19.782, 6.4276, 6], [20.0197, 6.5048, 6], [21.05, 0, 6]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[19.782, 6.4276, 6.8], [16.8276, 12.2259, 6.8], [17.0298, 12.3729, 6.8], [20.0197, 6.5048, 6.8]], b: [[19.782, 6.4276, 6], [16.8276, 12.2259, 6], [17.0298, 12.3729, 6], [20.0197, 6.5048, 6]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[16.8276, 12.2259, 6.8], [12.2259, 16.8276, 6.8], [12.3729, 17.0298, 6.8], [17.0298, 12.3729, 6.8]], b: [[16.8276, 12.2259, 6], [12.2259, 16.8276, 6], [12.3729, 17.0298, 6], [17.0298, 12.3729, 6]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[12.2259, 16.8276, 6.8], [6.4276, 19.782, 6.8], [6.5048, 20.0197, 6.8], [12.3729, 17.0298, 6.8]], b: [[12.2259, 16.8276, 6], [6.4276, 19.782, 6], [6.5048, 20.0197, 6], [12.3729, 17.0298, 6]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[6.4276, 19.782, 6.8], [0, 20.8, 6.8], [0, 21.05, 6.8], [6.5048, 20.0197, 6.8]], b: [[6.4276, 19.782, 6], [0, 20.8, 6], [0, 21.05, 6], [6.5048, 20.0197, 6]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[0, 20.8, 6.8], [-6.4276, 19.782, 6.8], [-6.5048, 20.0197, 6.8], [0, 21.05, 6.8]], b: [[0, 20.8, 6], [-6.4276, 19.782, 6], [-6.5048, 20.0197, 6], [0, 21.05, 6]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[-6.4276, 19.782, 6.8], [-12.2259, 16.8276, 6.8], [-12.3729, 17.0298, 6.8], [-6.5048, 20.0197, 6.8]], b: [[-6.4276, 19.782, 6], [-12.2259, 16.8276, 6], [-12.3729, 17.0298, 6], [-6.5048, 20.0197, 6]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[-12.2259, 16.8276, 6.8], [-16.8276, 12.2259, 6.8], [-17.0298, 12.3729, 6.8], [-12.3729, 17.0298, 6.8]], b: [[-12.2259, 16.8276, 6], [-16.8276, 12.2259, 6], [-17.0298, 12.3729, 6], [-12.3729, 17.0298, 6]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[-16.8276, 12.2259, 6.8], [-19.782, 6.4276, 6.8], [-20.0197, 6.5048, 6.8], [-17.0298, 12.3729, 6.8]], b: [[-16.8276, 12.2259, 6], [-19.782, 6.4276, 6], [-20.0197, 6.5048, 6], [-17.0298, 12.3729, 6]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[-19.782, 6.4276, 6.8], [-20.8, 0, 6.8], [-21.05, 0, 6.8], [-20.0197, 6.5048, 6.8]], b: [[-19.782, 6.4276, 6], [-20.8, 0, 6], [-21.05, 0, 6], [-20.0197, 6.5048, 6]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[20.8, 0, 18.8], [19.782, 6.4276, 18.8], [20.0197, 6.5048, 18.8], [21.05, 0, 18.8]], b: [[20.8, 0, 18], [19.782, 6.4276, 18], [20.0197, 6.5048, 18], [21.05, 0, 18]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[19.782, 6.4276, 18.8], [16.8276, 12.2259, 18.8], [17.0298, 12.3729, 18.8], [20.0197, 6.5048, 18.8]], b: [[19.782, 6.4276, 18], [16.8276, 12.2259, 18], [17.0298, 12.3729, 18], [20.0197, 6.5048, 18]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[16.8276, 12.2259, 18.8], [12.2259, 16.8276, 18.8], [12.3729, 17.0298, 18.8], [17.0298, 12.3729, 18.8]], b: [[16.8276, 12.2259, 18], [12.2259, 16.8276, 18], [12.3729, 17.0298, 18], [17.0298, 12.3729, 18]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[12.2259, 16.8276, 18.8], [6.4276, 19.782, 18.8], [6.5048, 20.0197, 18.8], [12.3729, 17.0298, 18.8]], b: [[12.2259, 16.8276, 18], [6.4276, 19.782, 18], [6.5048, 20.0197, 18], [12.3729, 17.0298, 18]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[6.4276, 19.782, 18.8], [0, 20.8, 18.8], [0, 21.05, 18.8], [6.5048, 20.0197, 18.8]], b: [[6.4276, 19.782, 18], [0, 20.8, 18], [0, 21.05, 18], [6.5048, 20.0197, 18]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[0, 20.8, 18.8], [-6.4276, 19.782, 18.8], [-6.5048, 20.0197, 18.8], [0, 21.05, 18.8]], b: [[0, 20.8, 18], [-6.4276, 19.782, 18], [-6.5048, 20.0197, 18], [0, 21.05, 18]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[-6.4276, 19.782, 18.8], [-12.2259, 16.8276, 18.8], [-12.3729, 17.0298, 18.8], [-6.5048, 20.0197, 18.8]], b: [[-6.4276, 19.782, 18], [-12.2259, 16.8276, 18], [-12.3729, 17.0298, 18], [-6.5048, 20.0197, 18]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[-12.2259, 16.8276, 18.8], [-16.8276, 12.2259, 18.8], [-17.0298, 12.3729, 18.8], [-12.3729, 17.0298, 18.8]], b: [[-12.2259, 16.8276, 18], [-16.8276, 12.2259, 18], [-17.0298, 12.3729, 18], [-12.3729, 17.0298, 18]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[-16.8276, 12.2259, 18.8], [-19.782, 6.4276, 18.8], [-20.0197, 6.5048, 18.8], [-17.0298, 12.3729, 18.8]], b: [[-16.8276, 12.2259, 18], [-19.782, 6.4276, 18], [-20.0197, 6.5048, 18], [-17.0298, 12.3729, 18]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[-19.782, 6.4276, 18.8], [-20.8, 0, 18.8], [-21.05, 0, 18.8], [-20.0197, 6.5048, 18.8]], b: [[-19.782, 6.4276, 18], [-20.8, 0, 18], [-21.05, 0, 18], [-20.0197, 6.5048, 18]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[20.8, 0, 30.8], [19.782, 6.4276, 30.8], [20.0197, 6.5048, 30.8], [21.05, 0, 30.8]], b: [[20.8, 0, 30], [19.782, 6.4276, 30], [20.0197, 6.5048, 30], [21.05, 0, 30]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[19.782, 6.4276, 30.8], [16.8276, 12.2259, 30.8], [17.0298, 12.3729, 30.8], [20.0197, 6.5048, 30.8]], b: [[19.782, 6.4276, 30], [16.8276, 12.2259, 30], [17.0298, 12.3729, 30], [20.0197, 6.5048, 30]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[16.8276, 12.2259, 30.8], [12.2259, 16.8276, 30.8], [12.3729, 17.0298, 30.8], [17.0298, 12.3729, 30.8]], b: [[16.8276, 12.2259, 30], [12.2259, 16.8276, 30], [12.3729, 17.0298, 30], [17.0298, 12.3729, 30]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[12.2259, 16.8276, 30.8], [6.4276, 19.782, 30.8], [6.5048, 20.0197, 30.8], [12.3729, 17.0298, 30.8]], b: [[12.2259, 16.8276, 30], [6.4276, 19.782, 30], [6.5048, 20.0197, 30], [12.3729, 17.0298, 30]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[6.4276, 19.782, 30.8], [0, 20.8, 30.8], [0, 21.05, 30.8], [6.5048, 20.0197, 30.8]], b: [[6.4276, 19.782, 30], [0, 20.8, 30], [0, 21.05, 30], [6.5048, 20.0197, 30]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[0, 20.8, 30.8], [-6.4276, 19.782, 30.8], [-6.5048, 20.0197, 30.8], [0, 21.05, 30.8]], b: [[0, 20.8, 30], [-6.4276, 19.782, 30], [-6.5048, 20.0197, 30], [0, 21.05, 30]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[-6.4276, 19.782, 30.8], [-12.2259, 16.8276, 30.8], [-12.3729, 17.0298, 30.8], [-6.5048, 20.0197, 30.8]], b: [[-6.4276, 19.782, 30], [-12.2259, 16.8276, 30], [-12.3729, 17.0298, 30], [-6.5048, 20.0197, 30]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[-12.2259, 16.8276, 30.8], [-16.8276, 12.2259, 30.8], [-17.0298, 12.3729, 30.8], [-12.3729, 17.0298, 30.8]], b: [[-12.2259, 16.8276, 30], [-16.8276, 12.2259, 30], [-17.0298, 12.3729, 30], [-12.3729, 17.0298, 30]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[-16.8276, 12.2259, 30.8], [-19.782, 6.4276, 30.8], [-20.0197, 6.5048, 30.8], [-17.0298, 12.3729, 30.8]], b: [[-16.8276, 12.2259, 30], [-19.782, 6.4276, 30], [-20.0197, 6.5048, 30], [-17.0298, 12.3729, 30]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[-19.782, 6.4276, 30.8], [-20.8, 0, 30.8], [-21.05, 0, 30.8], [-20.0197, 6.5048, 30.8]], b: [[-19.782, 6.4276, 30], [-20.8, 0, 30], [-21.05, 0, 30], [-20.0197, 6.5048, 30]], collide: 0, color: "#6d675c"}
      - {kind: rod, from: [-6, 0.9, -1.5], to: [-6, 0.9, 30], radius: 0.9, collide: 0, color: "#5f5a52"}
      - {kind: rod, from: [-6, 0.9, -1.4], to: [-30, 0.9, -1.4], radius: 0.9, collide: 0, color: "#5f5a52"}
      - {kind: loft, a: [[-7.4, 0, 30.4], [-4.6, 0, 30.4], [-4.6, 1.8, 30.4], [-7.4, 1.8, 30.4]], b: [[-7.4, 0, 30], [-4.6, 0, 30], [-4.6, 1.8, 30], [-7.4, 1.8, 30]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[28.5, 6, 54], [31.5, 6, 54], [31.5, 9, 54], [28.5, 9, 54]], b: [[28.5, 6, 0], [31.5, 6, 0], [31.5, 9, 0], [28.5, 9, 0]], collide: 0, color: "#8a6a45"}
      - {kind: rod, from: [30, 0.5, 54], to: [30, 9, 54], radius: 0.6, collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[-1.2, 6.2, 46.9], [28.5, 6.2, 46.9], [28.5, 8.8, 46.9], [-1.2, 8.8, 46.9]], b: [[-1.2, 6.2, 45.3], [28.5, 6.2, 45.3], [28.5, 8.8, 45.3], [-1.2, 8.8, 45.3]], collide: 0, color: "#8a6a45"}
      - {kind: loft, a: [[-1.2, -0.6, 46.1], [0.6, -0.6, 46.1], [0.6, 6.2, 46.1], [-1.2, 6.2, 46.1]], b: [[-1.2, -0.6, 45.3], [0.6, -0.6, 45.3], [0.6, 6.2, 45.3], [-1.2, 6.2, 45.3]], collide: 0, color: "#8a6a45"}
      - {kind: rod, from: [-0.3, -0.5, 45], to: [-0.3, 0.5, 45], radius: 0.35, collide: 0, color: "#6d675c"}
joints:
  - {id: j_b, type: slide, body: bell, axis: [0, 0, 1], range: [-6.5, 7], damping: 2}   # the bell
  - {id: j_l, type: hinge, body: lever, axis: [0, 1, 0], damping: 0.01}   # the lever (the drive)
ropes:
  - {id: rope, from: {body: lever, at: [0, 0, 52.9]}, over: {center: [-0.3, 0, 45], radius: 0.25, axis: y, side: [3, 0, 45]}, to: {body: bell, at: [0, 0, 39.4]}, width: 0.6, thickness: 0.6, color: "#6b4a2a"}
vessels:
  substeps: 8
  nodes:
    - {id: air, kind: source, p: 0, gas: true}
    - {id: shaft, kind: chamber, fixed: -60, moving: top, sections: [[-60, 333.333]], volume: 20000, water: 0, p: 0}   # the shaft's air
    - {id: tub, kind: chamber, fixed: 2, moving: top, open: true, sections: [[2, 586.975]], volume: 18196.2, water: 12913.5, p: 0,
       draw: {sections: [[[-19.95, 2], [-14.7, 2], [-14.7, 33], [-19.95, 33]], [[14.7, 2], [19.95, 2], [19.95, 33], [14.7, 33]]], y: [0.1, 6]}}   # the large tub's water outside the bell (open above)
    - {id: bell, kind: chamber, fixed: 2, moving: top, sections: [[2, 615.752]], volume: 21551.3, water: 13546.5, p: 0,
       draw: {sections: [[[-13.95, 2], [13.95, 2], [13.95, 47], [-13.95, 47]]], y: [0.1, 13.8]}}   # the water and air under the bell
  links:
    - {id: mouth, from: air, to: shaft, area: 1.5, cd: 0.62, z: 0, zTo: 0}   # fresh air into the shaft (its mouth, its levels)
    - {id: rim, from: tub, to: bell, area: 40, cd: 0.62, z: 3, zTo: 3}   # the water under the bell's rim
    - {id: lower_valve, from: shaft, to: bell, area: 2, cd: 0.62, z: 0, zTo: 30, check: true}
    - {id: upper_valve, from: bell, to: air, area: 2, cd: 0.62, z: 200, check: true}
  pistons:
    - {node: bell, joint: j_b, area: 615.752, sign: 1}
driver: {joint: j_l, kind: velocity, rpm: 0, swing: {amplitude: 0.15, hz: 0.5}, kv: 10000, max_torque: 200}
checks:
  - {type: amplitude, joint: j_b, min: 0.025, max: 0.07, settle_s: 2, window_s: 13}
  - {type: penetration, max: 0.01}
camera: {target: [20, 0, 16], position: [20, -260, 20], fov: 21}
display:
  output: j_b
  labels: {j_b: "Bell (upper tub)", j_l: "Lever (driver)"}
