# No. 466 (Brown 1868): "Hydrostatic press. Water forced by the pump through the small pipe into the ram cylinder and under the solid ram,
# presses up the ram. The amount of force obtained is in proportion to the relative areas or squares of diameters of the pump-plunger
# and ram. Suppose, for instance, the pump-plunger to be one inch diameter and the ram thirty inches, the upward pressure received by the
# ram would be 900 times the downward pressure of the plunger."
# Model (cm, gravity on, cut away in half section, seen from in front). A hand lever on a standard works the pump's plunger (the lever
# swung +-0.3 rad, the only drive). The pump draws from a cistern through a flap in its head and forces the water through a second
# flap along the passage under the press's bed into the ram cylinder (here 6 cm bore against the plunger's 2, 9 times
# the area). The solid ram carries the platen and the bale on it up against the follower, which hangs under the crosshead on its
# springs (the goods' resistance: 1500 N/m, preloaded 2 cm). The water is lumped vessels (src/fluid/vessels.c): the cylinder
# under the ram with the passage, and the pump's head and barrel under the plunger, are closed chambers of water (bulk modulus 2e+07 Pa)
# that the ram and plunger sweep; the pressure under the ram is the one that drives it, the same that the plunger must overcome, so
# the force on the ram is that on the plunger times their areas' ratio. Each flap is moved only by its weight and the pressures on
# its faces, passing water as it opens (fully at 0.5 rad). There is no let-back valve, so the ram stays where the pump leaves it.
# Generator: opencode-runs/water/gen466.py.
number: 466
slug: hydrostatic-press
name: Hydrostatic press
brown: "Hydrostatic press. Water forced by the pump through the small pipe into the ram cylinder and under the solid ram, presses up the ram. The amount of force obtained is in proportion to the relative areas or squares of diameters of the pump-plunger and ram. Suppose, for instance, the pump-plunger to be one inch diameter and the ram thirty inches, the upward pressure received by the ram would be 900 times the downward pressure of the plunger."
units: cm
sim:
  timestep: 0.0001
  integrator: implicitfast
  iterations: 60
  duration_s: 14
  floor: false
bodies:
  - id: lever
    shape: part
    pos: [17, 0, 21]
    mass: 0.3
    color: "#5f5a52"
    pieces:
      - {kind: rod, from: [16, 0, 21], to: [39, 0, 21], radius: 0.45, capsule: true, collide: 0}
      - {kind: rod, from: [17, -0.7, 21], to: [17, 0.7, 21], radius: 0.6, collide: 0}
      - {kind: rod, from: [39, -0.6, 21], to: [39, 0.6, 21], radius: 0.8, capsule: true, collide: 0}
  - id: plunger
    shape: part
    pos: [22, 0, 8]
    mass: 0.08
    color: "#8a8478"
    pieces:
      - {kind: loft, a: [[22.95, 0, 11.5], [22.8777, 0.3635, 11.5], [22.6718, 0.6718, 11.5], [22.3635, 0.8777, 11.5], [22, 0.95, 11.5], [21.6365, 0.8777, 11.5], [21.3282, 0.6718, 11.5], [21.1223, 0.3635, 11.5], [21.05, 0, 11.5], [21.1223, -0.3635, 11.5], [21.3282, -0.6718, 11.5], [21.6365, -0.8777, 11.5], [22, -0.95, 11.5], [22.3635, -0.8777, 11.5], [22.6718, -0.6718, 11.5], [22.8777, -0.3635, 11.5]], b: [[22.95, 0, 8], [22.8777, 0.3635, 8], [22.6718, 0.6718, 8], [22.3635, 0.8777, 8], [22, 0.95, 8], [21.6365, 0.8777, 8], [21.3282, 0.6718, 8], [21.1223, 0.3635, 8], [21.05, 0, 8], [21.1223, -0.3635, 8], [21.3282, -0.6718, 8], [21.6365, -0.8777, 8], [22, -0.95, 8], [22.3635, -0.8777, 8], [22.6718, -0.6718, 8], [22.8777, -0.3635, 8]], collide: 0, color: "#8a8478"}
      - {kind: rod, from: [22, -0.6, 11.8], to: [22, 0.6, 11.8], radius: 0.35, collide: 0}
  - id: prod
    shape: part
    mount: plunger
    pos: [22, 0, 11.8]
    mass: 0.02
    color: "#6d675c"
    pieces:
      - {kind: rod, from: [22, 0, 11.8], to: [22, 0, 21], radius: 0.3, collide: 0}
      - {kind: rod, from: [22, -0.5, 21], to: [22, 0.5, 21], radius: 0.4, collide: 0}
  - id: ram
    shape: part
    pos: [0, 0, 4]
    mass: 2
    color: "#8a8478"
    pieces:
      - {kind: loft, a: [[2.95, 0, 17], [2.7254, 1.1289, 17], [2.086, 2.086, 17], [1.1289, 2.7254, 17], [0, 2.95, 17], [-1.1289, 2.7254, 17], [-2.086, 2.086, 17], [-2.7254, 1.1289, 17], [-2.95, 0, 17], [-2.7254, -1.1289, 17], [-2.086, -2.086, 17], [-1.1289, -2.7254, 17], [-0, -2.95, 17], [1.1289, -2.7254, 17], [2.086, -2.086, 17], [2.7254, -1.1289, 17]], b: [[2.95, 0, 4], [2.7254, 1.1289, 4], [2.086, 2.086, 4], [1.1289, 2.7254, 4], [0, 2.95, 4], [-1.1289, 2.7254, 4], [-2.086, 2.086, 4], [-2.7254, 1.1289, 4], [-2.95, 0, 4], [-2.7254, -1.1289, 4], [-2.086, -2.086, 4], [-1.1289, -2.7254, 4], [-0, -2.95, 4], [1.1289, -2.7254, 4], [2.086, -2.086, 4], [2.7254, -1.1289, 4]], collide: 0, color: "#8a8478"}
      - {kind: loft, a: [[-7.5, 0.5, 18.5], [7.5, 0.5, 18.5], [7.5, 5.5, 18.5], [-7.5, 5.5, 18.5]], b: [[-7.5, 0.5, 17], [7.5, 0.5, 17], [7.5, 5.5, 17], [-7.5, 5.5, 17]], collide: 0, color: "#5f5a52"}
      - {kind: loft, a: [[-5.5, 1, 26], [5.5, 1, 26], [5.5, 5, 26], [-5.5, 5, 26]], b: [[-5.5, 1, 18.5], [5.5, 1, 18.5], [5.5, 5, 18.5], [-5.5, 5, 18.5]], collide: 1, color: "#c9b27c"}
      - {kind: loft, a: [[-5.6, 0.9, 20.495], [5.6, 0.9, 20.495], [5.6, 5.1, 20.495], [-5.6, 5.1, 20.495]], b: [[-5.6, 0.9, 20.255], [5.6, 0.9, 20.255], [5.6, 5.1, 20.255], [-5.6, 5.1, 20.255]], collide: 0, color: "#4a4038"}
      - {kind: loft, a: [[-5.6, 0.9, 22.37], [5.6, 0.9, 22.37], [5.6, 5.1, 22.37], [-5.6, 5.1, 22.37]], b: [[-5.6, 0.9, 22.13], [5.6, 0.9, 22.13], [5.6, 5.1, 22.13], [-5.6, 5.1, 22.13]], collide: 0, color: "#4a4038"}
      - {kind: loft, a: [[-5.6, 0.9, 24.245], [5.6, 0.9, 24.245], [5.6, 5.1, 24.245], [-5.6, 5.1, 24.245]], b: [[-5.6, 0.9, 24.005], [5.6, 0.9, 24.005], [5.6, 5.1, 24.005], [-5.6, 5.1, 24.005]], collide: 0, color: "#4a4038"}
  - id: follower
    shape: part
    pos: [0, 0, 27]
    mass: 0.3
    color: "#5f5a52"
    pieces:
      - {kind: loft, a: [[-7.5, 0.5, 28.2], [7.5, 0.5, 28.2], [7.5, 5.5, 28.2], [-7.5, 5.5, 28.2]], b: [[-7.5, 0.5, 27], [7.5, 0.5, 27], [7.5, 5.5, 27], [-7.5, 5.5, 27]], collide: 2, color: "#5f5a52"}
      - {kind: rod, from: [-6, 3, 28.2], to: [-6, 3, 41], radius: 0.45, collide: 0}
      - {kind: rod, from: [6, 3, 28.2], to: [6, 3, 41], radius: 0.45, collide: 0}
  - id: vin
    shape: part
    pos: [24.6, 0, 2.6]
    mass: 0.006
    color: "#e0a030"
    pieces:
      - {kind: loft, a: [[24.4, 0.2, 2.6], [24.8, 0.2, 2.6], [24.8, 3.8, 2.6], [24.4, 3.8, 2.6]], b: [[24.4, 0.2, 0.4], [24.8, 0.2, 0.4], [24.8, 3.8, 0.4], [24.4, 3.8, 0.4]], collide: 0, color: "#c8781e"}
      - {kind: rod, from: [24.6, 0, 2.6], to: [24.6, 4, 2.6], radius: 0.18, collide: 0}
  - id: vout
    shape: part
    pos: [18.6, 0, 2.6]
    mass: 0.006
    color: "#e0a030"
    pieces:
      - {kind: loft, a: [[18.4, 0.2, 2.6], [18.8, 0.2, 2.6], [18.8, 3.8, 2.6], [18.4, 3.8, 2.6]], b: [[18.4, 0.2, 0.4], [18.8, 0.2, 0.4], [18.8, 3.8, 0.4], [18.4, 3.8, 0.4]], collide: 0, color: "#c8781e"}
      - {kind: rod, from: [18.6, 0, 2.6], to: [18.6, 4, 2.6], radius: 0.18, collide: 0}
  - id: frame
    shape: part
    pos: [0, 0, 0]
    fixed: true
    color: "#d6cdb8"
    pieces:
      - {kind: loft, a: [[-12.5, 0, 0], [35.4, 0, 0], [35.4, 8, 0], [-12.5, 8, 0]], b: [[-12.5, 0, -1.2], [35.4, 0, -1.2], [35.4, 8, -1.2], [-12.5, 8, -1.2]], collide: 0, color: "#8b7d66"}
      - {kind: loft, a: [[-11.5, 0, 2], [11.5, 0, 2], [11.5, 6, 2], [-11.5, 6, 2]], b: [[-11.5, 0, 0], [11.5, 0, 0], [11.5, 6, 0], [-11.5, 6, 0]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[3, 0, 14], [2.7716, 1.1481, 14], [3.6955, 1.5307, 14], [4, 0, 14]], b: [[3, 0, 2], [2.7716, 1.1481, 2], [3.6955, 1.5307, 2], [4, 0, 2]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[2.7716, 1.1481, 14], [2.1213, 2.1213, 14], [2.8284, 2.8284, 14], [3.6955, 1.5307, 14]], b: [[2.7716, 1.1481, 2], [2.1213, 2.1213, 2], [2.8284, 2.8284, 2], [3.6955, 1.5307, 2]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[2.1213, 2.1213, 14], [1.1481, 2.7716, 14], [1.5307, 3.6955, 14], [2.8284, 2.8284, 14]], b: [[2.1213, 2.1213, 2], [1.1481, 2.7716, 2], [1.5307, 3.6955, 2], [2.8284, 2.8284, 2]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[1.1481, 2.7716, 14], [0, 3, 14], [0, 4, 14], [1.5307, 3.6955, 14]], b: [[1.1481, 2.7716, 2], [0, 3, 2], [0, 4, 2], [1.5307, 3.6955, 2]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[0, 3, 14], [-1.1481, 2.7716, 14], [-1.5307, 3.6955, 14], [0, 4, 14]], b: [[0, 3, 2], [-1.1481, 2.7716, 2], [-1.5307, 3.6955, 2], [0, 4, 2]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[-1.1481, 2.7716, 14], [-2.1213, 2.1213, 14], [-2.8284, 2.8284, 14], [-1.5307, 3.6955, 14]], b: [[-1.1481, 2.7716, 2], [-2.1213, 2.1213, 2], [-2.8284, 2.8284, 2], [-1.5307, 3.6955, 2]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[-2.1213, 2.1213, 14], [-2.7716, 1.1481, 14], [-3.6955, 1.5307, 14], [-2.8284, 2.8284, 14]], b: [[-2.1213, 2.1213, 2], [-2.7716, 1.1481, 2], [-3.6955, 1.5307, 2], [-2.8284, 2.8284, 2]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[-2.7716, 1.1481, 14], [-3, 0, 14], [-4, 0, 14], [-3.6955, 1.5307, 14]], b: [[-2.7716, 1.1481, 2], [-3, 0, 2], [-4, 0, 2], [-3.6955, 1.5307, 2]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[2.98, 0, 14.8], [2.7532, 1.1404, 14.8], [4.4346, 1.8369, 14.8], [4.8, 0, 14.8]], b: [[2.98, 0, 14], [2.7532, 1.1404, 14], [4.4346, 1.8369, 14], [4.8, 0, 14]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[2.7532, 1.1404, 14.8], [2.1072, 2.1072, 14.8], [3.3941, 3.3941, 14.8], [4.4346, 1.8369, 14.8]], b: [[2.7532, 1.1404, 14], [2.1072, 2.1072, 14], [3.3941, 3.3941, 14], [4.4346, 1.8369, 14]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[2.1072, 2.1072, 14.8], [1.1404, 2.7532, 14.8], [1.8369, 4.4346, 14.8], [3.3941, 3.3941, 14.8]], b: [[2.1072, 2.1072, 14], [1.1404, 2.7532, 14], [1.8369, 4.4346, 14], [3.3941, 3.3941, 14]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[1.1404, 2.7532, 14.8], [0, 2.98, 14.8], [0, 4.8, 14.8], [1.8369, 4.4346, 14.8]], b: [[1.1404, 2.7532, 14], [0, 2.98, 14], [0, 4.8, 14], [1.8369, 4.4346, 14]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[0, 2.98, 14.8], [-1.1404, 2.7532, 14.8], [-1.8369, 4.4346, 14.8], [0, 4.8, 14.8]], b: [[0, 2.98, 14], [-1.1404, 2.7532, 14], [-1.8369, 4.4346, 14], [0, 4.8, 14]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[-1.1404, 2.7532, 14.8], [-2.1072, 2.1072, 14.8], [-3.3941, 3.3941, 14.8], [-1.8369, 4.4346, 14.8]], b: [[-1.1404, 2.7532, 14], [-2.1072, 2.1072, 14], [-3.3941, 3.3941, 14], [-1.8369, 4.4346, 14]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[-2.1072, 2.1072, 14.8], [-2.7532, 1.1404, 14.8], [-4.4346, 1.8369, 14.8], [-3.3941, 3.3941, 14.8]], b: [[-2.1072, 2.1072, 14], [-2.7532, 1.1404, 14], [-4.4346, 1.8369, 14], [-3.3941, 3.3941, 14]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[-2.7532, 1.1404, 14.8], [-2.98, 0, 14.8], [-4.8, 0, 14.8], [-4.4346, 1.8369, 14.8]], b: [[-2.7532, 1.1404, 14], [-2.98, 0, 14], [-4.8, 0, 14], [-4.4346, 1.8369, 14]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[-11, 1, 36], [-9, 1, 36], [-9, 3, 36], [-11, 3, 36]], b: [[-11, 1, 2], [-9, 1, 2], [-9, 3, 2], [-11, 3, 2]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[9, 1, 36], [11, 1, 36], [11, 3, 36], [9, 3, 36]], b: [[9, 1, 2], [11, 1, 2], [11, 3, 2], [9, 3, 2]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[-11.5, 0, 40], [11.5, 0, 40], [11.5, 6, 40], [-11.5, 6, 40]], b: [[-11.5, 0, 36], [11.5, 0, 36], [11.5, 6, 36], [-11.5, 6, 36]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[-3, 4, 2], [19, 4, 2], [19, 4.4, 2], [-3, 4.4, 2]], b: [[-3, 4, -0.8], [19, 4, -0.8], [19, 4.4, -0.8], [-3, 4.4, -0.8]], collide: 0, color: "#b9ae98"}
      - {kind: loft, a: [[-3, 0, 0], [25, 0, 0], [25, 4.4, 0], [-3, 4.4, 0]], b: [[-3, 0, -0.8], [25, 0, -0.8], [25, 4.4, -0.8], [-3, 4.4, -0.8]], collide: 0, color: "#b9ae98"}
      - {kind: loft, a: [[11.5, 0, 2.6], [19, 0, 2.6], [19, 4.4, 2.6], [11.5, 4.4, 2.6]], b: [[11.5, 0, 2], [19, 0, 2], [19, 4.4, 2], [11.5, 4.4, 2]], collide: 0, color: "#b9ae98"}
      - {kind: loft, a: [[19, 4, 3], [25, 4, 3], [25, 4.4, 3], [19, 4.4, 3]], b: [[19, 4, 0], [25, 4, 0], [25, 4.4, 0], [19, 4.4, 0]], collide: 0, color: "#b9ae98"}
      - {kind: loft, a: [[19, 0, 3.6], [21, 0, 3.6], [21, 4.4, 3.6], [19, 4.4, 3.6]], b: [[19, 0, 3], [21, 0, 3], [21, 4.4, 3], [19, 4.4, 3]], collide: 0, color: "#b9ae98"}
      - {kind: loft, a: [[18.8, 0, 3.6], [19.2, 0, 3.6], [19.2, 4.4, 3.6], [18.8, 4.4, 3.6]], b: [[18.8, 0, 2.6], [19.2, 0, 2.6], [19.2, 4.4, 2.6], [18.8, 4.4, 2.6]], collide: 0, color: "#b9ae98"}
      - {kind: loft, a: [[23, 0, 3.6], [25, 0, 3.6], [25, 4.4, 3.6], [23, 4.4, 3.6]], b: [[23, 0, 3], [25, 0, 3], [25, 4.4, 3], [23, 4.4, 3]], collide: 0, color: "#b9ae98"}
      - {kind: loft, a: [[24.8, 0, 3.6], [25.2, 0, 3.6], [25.2, 4.4, 3.6], [24.8, 4.4, 3.6]], b: [[24.8, 0, 2.6], [25.2, 0, 2.6], [25.2, 4.4, 2.6], [24.8, 4.4, 2.6]], collide: 0, color: "#b9ae98"}
      - {kind: loft, a: [[23, 0, 15], [22.9239, 0.3827, 15], [23.4782, 0.6123, 15], [23.6, 0, 15]], b: [[23, 0, 3], [22.9239, 0.3827, 3], [23.4782, 0.6123, 3], [23.6, 0, 3]], collide: 0}
      - {kind: loft, a: [[22.9239, 0.3827, 15], [22.7071, 0.7071, 15], [23.1314, 1.1314, 15], [23.4782, 0.6123, 15]], b: [[22.9239, 0.3827, 3], [22.7071, 0.7071, 3], [23.1314, 1.1314, 3], [23.4782, 0.6123, 3]], collide: 0}
      - {kind: loft, a: [[22.7071, 0.7071, 15], [22.3827, 0.9239, 15], [22.6123, 1.4782, 15], [23.1314, 1.1314, 15]], b: [[22.7071, 0.7071, 3], [22.3827, 0.9239, 3], [22.6123, 1.4782, 3], [23.1314, 1.1314, 3]], collide: 0}
      - {kind: loft, a: [[22.3827, 0.9239, 15], [22, 1, 15], [22, 1.6, 15], [22.6123, 1.4782, 15]], b: [[22.3827, 0.9239, 3], [22, 1, 3], [22, 1.6, 3], [22.6123, 1.4782, 3]], collide: 0}
      - {kind: loft, a: [[22, 1, 15], [21.6173, 0.9239, 15], [21.3877, 1.4782, 15], [22, 1.6, 15]], b: [[22, 1, 3], [21.6173, 0.9239, 3], [21.3877, 1.4782, 3], [22, 1.6, 3]], collide: 0}
      - {kind: loft, a: [[21.6173, 0.9239, 15], [21.2929, 0.7071, 15], [20.8686, 1.1314, 15], [21.3877, 1.4782, 15]], b: [[21.6173, 0.9239, 3], [21.2929, 0.7071, 3], [20.8686, 1.1314, 3], [21.3877, 1.4782, 3]], collide: 0}
      - {kind: loft, a: [[21.2929, 0.7071, 15], [21.0761, 0.3827, 15], [20.5218, 0.6123, 15], [20.8686, 1.1314, 15]], b: [[21.2929, 0.7071, 3], [21.0761, 0.3827, 3], [20.5218, 0.6123, 3], [20.8686, 1.1314, 3]], collide: 0}
      - {kind: loft, a: [[21.0761, 0.3827, 15], [21, 0, 15], [20.4, 0, 15], [20.5218, 0.6123, 15]], b: [[21.0761, 0.3827, 3], [21, 0, 3], [20.4, 0, 3], [20.5218, 0.6123, 3]], collide: 0}
      - {kind: loft, a: [[23.6, 0, 15], [23.4782, 0.6123, 15], [23.7554, 0.7271, 15], [23.9, 0, 15]], b: [[23.6, 0, 14.6], [23.4782, 0.6123, 14.6], [23.7554, 0.7271, 14.6], [23.9, 0, 14.6]], collide: 0}
      - {kind: loft, a: [[23.4782, 0.6123, 15], [23.1314, 1.1314, 15], [23.3435, 1.3435, 15], [23.7554, 0.7271, 15]], b: [[23.4782, 0.6123, 14.6], [23.1314, 1.1314, 14.6], [23.3435, 1.3435, 14.6], [23.7554, 0.7271, 14.6]], collide: 0}
      - {kind: loft, a: [[23.1314, 1.1314, 15], [22.6123, 1.4782, 15], [22.7271, 1.7554, 15], [23.3435, 1.3435, 15]], b: [[23.1314, 1.1314, 14.6], [22.6123, 1.4782, 14.6], [22.7271, 1.7554, 14.6], [23.3435, 1.3435, 14.6]], collide: 0}
      - {kind: loft, a: [[22.6123, 1.4782, 15], [22, 1.6, 15], [22, 1.9, 15], [22.7271, 1.7554, 15]], b: [[22.6123, 1.4782, 14.6], [22, 1.6, 14.6], [22, 1.9, 14.6], [22.7271, 1.7554, 14.6]], collide: 0}
      - {kind: loft, a: [[22, 1.6, 15], [21.3877, 1.4782, 15], [21.2729, 1.7554, 15], [22, 1.9, 15]], b: [[22, 1.6, 14.6], [21.3877, 1.4782, 14.6], [21.2729, 1.7554, 14.6], [22, 1.9, 14.6]], collide: 0}
      - {kind: loft, a: [[21.3877, 1.4782, 15], [20.8686, 1.1314, 15], [20.6565, 1.3435, 15], [21.2729, 1.7554, 15]], b: [[21.3877, 1.4782, 14.6], [20.8686, 1.1314, 14.6], [20.6565, 1.3435, 14.6], [21.2729, 1.7554, 14.6]], collide: 0}
      - {kind: loft, a: [[20.8686, 1.1314, 15], [20.5218, 0.6123, 15], [20.2446, 0.7271, 15], [20.6565, 1.3435, 15]], b: [[20.8686, 1.1314, 14.6], [20.5218, 0.6123, 14.6], [20.2446, 0.7271, 14.6], [20.6565, 1.3435, 14.6]], collide: 0}
      - {kind: loft, a: [[20.5218, 0.6123, 15], [20.4, 0, 15], [20.1, 0, 15], [20.2446, 0.7271, 15]], b: [[20.5218, 0.6123, 14.6], [20.4, 0, 14.6], [20.1, 0, 14.6], [20.2446, 0.7271, 14.6]], collide: 0}
      - {kind: loft, a: [[25.4, 0, 0], [35, 0, 0], [35, 6.4, 0], [25.4, 6.4, 0]], b: [[25.4, 0, -0.6], [35, 0, -0.6], [35, 6.4, -0.6], [25.4, 6.4, -0.6]], collide: 0, color: "#8b6a44"}
      - {kind: loft, a: [[35, 0, 8], [35.4, 0, 8], [35.4, 6.4, 8], [35, 6.4, 8]], b: [[35, 0, -0.6], [35.4, 0, -0.6], [35.4, 6.4, -0.6], [35, 6.4, -0.6]], collide: 0, color: "#8b6a44"}
      - {kind: loft, a: [[25.4, 6, 8], [35, 6, 8], [35, 6.4, 8], [25.4, 6.4, 8]], b: [[25.4, 6, 0], [35, 6, 0], [35, 6.4, 0], [25.4, 6.4, 0]], collide: 0, color: "#8b6a44"}
      - {kind: loft, a: [[25, 0, 8], [25.4, 0, 8], [25.4, 6.4, 8], [25, 6.4, 8]], b: [[25, 0, 3.6], [25.4, 0, 3.6], [25.4, 6.4, 3.6], [25, 6.4, 3.6]], collide: 0, color: "#8b6a44"}
      - {kind: loft, a: [[16.5, 4, 20.6], [17.5, 4, 20.6], [17.5, 5, 20.6], [16.5, 5, 20.6]], b: [[16.5, 4, 3.6], [17.5, 4, 3.6], [17.5, 5, 3.6], [16.5, 5, 3.6]], collide: 0, color: "#6d675c"}
      - {kind: rod, from: [17, -1, 21], to: [17, 5, 21], radius: 0.3, collide: 0, color: "#6d675c"}
joints:
  - {id: j_l, type: hinge, body: lever, axis: [0, 1, 0], damping: 0.002}   # the lever on its standard (the hand's)
  - {id: j_p, type: slide, body: plunger, axis: [0, 0, 1], range: [-4.5, 3.2], damping: 0.01}
  - {id: j_pr, type: hinge, body: prod, axis: [0, 1, 0], damping: 0.0005}
  - {id: j_r, type: slide, body: ram, axis: [0, 0, 1], range: [-1.5, 9], damping: 0.5}   # the ram in its cylinder
  - {id: j_f, type: slide, body: follower, axis: [0, 0, 1], range: [0, 7.3], stiffness: 1500, springref: -2, damping: 2}   # the follower on its springs, down on its stops
  - {id: j_vi, type: hinge, body: vin, axis: [0, 1, 0], range: [0, 0.9], damping: 0.00002}    # the suction flap: 0 hanging shut, + swings open (left)
  - {id: j_vo, type: hinge, body: vout, axis: [0, 1, 0], range: [0, 0.9], damping: 0.00002}   # the delivery flap
pins:
  - {id: p_l, a: lever, b: prod, at: [22, 0, 21]}
vessels:
  substeps: 4
  nodes:
    - {id: cistern, kind: tank, area: 57.6, z: 0, level: 6,
       draw: {section: [[25.4, 0], [35, 0], [35, 8], [25.4, 8]], y: [0.05, 6]}}
    - {id: pump, kind: chamber, fixed: 0, sections: [[0, 24], [3, 3.1416]], volume: 87.708, water: 87.708, K: 2e+07,
       draw: {sections: [[[19.2, 0], [24.8, 0], [24.8, 3], [19.2, 3]], [[21.03, 3], [22.97, 3], [22.97, 15], [21.03, 15]]], y: [0, 4]}}   # the pump's head and barrel under the plunger
    - {id: cyl, kind: chamber, fixed: 0, sections: [[0, 87.2], [2, 28.2743]], volume: 230.949, water: 230.949, K: 2e+07,
       draw: {sections: [[[-3, 0], [18.8, 0], [18.8, 2], [-3, 2]], [[-2.95, 2], [2.95, 2], [2.95, 14], [-2.95, 14]]], y: [0, 4]}}   # the passage and the cylinder under the ram
  links:
    - {id: suck, from: cistern, to: pump, area: 2, cd: 0.62, z: 1.5, zTo: 1.5, open: {joint: j_vi, q: [0, 0.5], frac: [0, 1]}}
    - {id: force, from: pump, to: cyl, area: 2, cd: 0.62, z: 1.5, zTo: 1.5, open: {joint: j_vo, q: [0, 0.5], frac: [0, 1]}}
  pistons:
    - {node: pump, joint: j_p, area: 3.1416, sign: 1}
    - {node: cyl, joint: j_r, area: 28.2743, sign: 1}
    - {node: cistern, joint: j_vi, area: 2, arm: 1.1, sign: 1, z: 1.5}
    - {node: pump, joint: j_vi, area: 2, arm: 1.1, sign: -1, z: 1.5}
    - {node: pump, joint: j_vo, area: 2, arm: 1.1, sign: 1, z: 1.5}
    - {node: cyl, joint: j_vo, area: 2, arm: 1.1, sign: -1, z: 1.5}
driver: {joint: j_l, kind: velocity, rpm: 0, swing: {amplitude: 0.3, hz: 0.8}, kv: 3000, max_torque: 40}
checks:
  - {type: amplitude, joint: j_p, min: 0.0126, max: 0.017, settle_s: 1.0, window_s: 12.5}
  - {type: position, joint: j_r, settle_s: 12.5, window_s: 1.0, min: 2, max: 9}
  - {type: penetration, max: 0.01}
camera: {target: [9, 0, 13], position: [9, -200, 16], fov: 19}
display:
  output: j_r
  labels: {j_l: "Lever (driver)", j_p: "Pump plunger", j_pr: "Plunger rod", j_r: "Ram", j_f: "Follower", j_vi: "Suction flap", j_vo: "Delivery flap"}
