# No. 467 (Brown 1868): "Robertson's hydrostatic jack. In this the ram is stationary upon a hollow base and the cylinder with claw
# attached slides upon it. The pump takes the water from the hollow base and forces it through a pipe in the ram into the cylinder,
# and so raises the latter. At the bottom of pipe there is a valve operated by a thumb-screw to let back the water and lower the load
# as gradually as may be desired."
# Model (cm, gravity on, cut away in half section, seen from in front). The ram stands fixed on the hollow base; the cylinder, closed
# at its top, slides on it, and its claw carries the load (a timber's end resting on it, 3 kg). A hand lever works the pump's plunger
# (the lever swung +-0.3 rad, the only drive). The pump draws from the water in the base through a flap in its head and forces it
# through a second flap along the passage and up the pipe in the ram into the cylinder over the ram's top, so the cylinder rises with
# the load. The water is lumped vessels (src/fluid/vessels.c): the passage, pipe and the space over the ram, and the pump's head and
# barrel under the plunger, are closed chambers of water (bulk modulus 2e+07 Pa) that the cylinder (19.635 cm^2 over the ram) and the
# plunger (2.0106 cm^2) sweep; the base's water is open to the air by its vent. Each flap is moved only by its weight and the
# pressures on its faces, passing water as it opens (fully at 0.5 rad). The thumb-screw's let-back valve is drawn and stays shut.
# Generator: opencode-runs/water/gen467.py.
number: 467
slug: robertsons-hydrostatic-jack
name: Robertson's hydrostatic jack
brown: "Robertson's hydrostatic jack. In this the ram is stationary upon a hollow base and the cylinder with claw attached slides upon it. The pump takes the water from the hollow base and forces it through a pipe in the ram into the cylinder, and so raises the latter. At the bottom of pipe there is a valve operated by a thumb-screw to let back the water and lower the load as gradually as may be desired."
units: cm
sim:
  timestep: 0.0001
  integrator: implicitfast
  iterations: 60
  duration_s: 14
  floor: false
bodies:
  - id: lever
    shape: part
    pos: [5, 0, 21]
    mass: 0.3
    color: "#5f5a52"
    pieces:
      - {kind: rod, from: [4, 0, 21], to: [25, 0, 21], radius: 0.45, capsule: true, collide: 0}
      - {kind: rod, from: [5, -0.7, 21], to: [5, 0.7, 21], radius: 0.6, collide: 0}
      - {kind: rod, from: [25, -0.6, 21], to: [25, 0.6, 21], radius: 0.8, capsule: true, collide: 0}
  - id: plunger
    shape: part
    pos: [10, 0, 9.5]
    mass: 0.08
    color: "#8a8478"
    pieces:
      - {kind: loft, a: [[10.76, 0, 12.5], [10.7021, 0.2908, 12.5], [10.5374, 0.5374, 12.5], [10.2908, 0.7021, 12.5], [10, 0.76, 12.5], [9.7092, 0.7021, 12.5], [9.4626, 0.5374, 12.5], [9.2979, 0.2908, 12.5], [9.24, 0, 12.5], [9.2979, -0.2908, 12.5], [9.4626, -0.5374, 12.5], [9.7092, -0.7021, 12.5], [10, -0.76, 12.5], [10.2908, -0.7021, 12.5], [10.5374, -0.5374, 12.5], [10.7021, -0.2908, 12.5]], b: [[10.76, 0, 9.5], [10.7021, 0.2908, 9.5], [10.5374, 0.5374, 9.5], [10.2908, 0.7021, 9.5], [10, 0.76, 9.5], [9.7092, 0.7021, 9.5], [9.4626, 0.5374, 9.5], [9.2979, 0.2908, 9.5], [9.24, 0, 9.5], [9.2979, -0.2908, 9.5], [9.4626, -0.5374, 9.5], [9.7092, -0.7021, 9.5], [10, -0.76, 9.5], [10.2908, -0.7021, 9.5], [10.5374, -0.5374, 9.5], [10.7021, -0.2908, 9.5]], collide: 0, color: "#8a8478"}
      - {kind: rod, from: [10, -0.6, 12.8], to: [10, 0.6, 12.8], radius: 0.3, collide: 0}
  - id: prod
    shape: part
    mount: plunger
    pos: [10, 0, 12.8]
    mass: 0.02
    color: "#6d675c"
    pieces:
      - {kind: rod, from: [10, 0, 12.8], to: [10, 0, 21], radius: 0.28, collide: 0}
      - {kind: rod, from: [10, -0.5, 21], to: [10, 0.5, 21], radius: 0.4, collide: 0}
  - id: cylinder
    shape: part
    pos: [0, 0, 20.3]
    mass: 1
    color: "#5f5a52"
    pieces:
      - {kind: loft, a: [[2.52, 0, 20.3], [2.3282, 0.9644, 20.3], [3.2336, 1.3394, 20.3], [3.5, 0, 20.3]], b: [[2.52, 0, 12], [2.3282, 0.9644, 12], [3.2336, 1.3394, 12], [3.5, 0, 12]], collide: 0, color: "#5f5a52"}
      - {kind: loft, a: [[2.3282, 0.9644, 20.3], [1.7819, 1.7819, 20.3], [2.4749, 2.4749, 20.3], [3.2336, 1.3394, 20.3]], b: [[2.3282, 0.9644, 12], [1.7819, 1.7819, 12], [2.4749, 2.4749, 12], [3.2336, 1.3394, 12]], collide: 0, color: "#5f5a52"}
      - {kind: loft, a: [[1.7819, 1.7819, 20.3], [0.9644, 2.3282, 20.3], [1.3394, 3.2336, 20.3], [2.4749, 2.4749, 20.3]], b: [[1.7819, 1.7819, 12], [0.9644, 2.3282, 12], [1.3394, 3.2336, 12], [2.4749, 2.4749, 12]], collide: 0, color: "#5f5a52"}
      - {kind: loft, a: [[0.9644, 2.3282, 20.3], [0, 2.52, 20.3], [0, 3.5, 20.3], [1.3394, 3.2336, 20.3]], b: [[0.9644, 2.3282, 12], [0, 2.52, 12], [0, 3.5, 12], [1.3394, 3.2336, 12]], collide: 0, color: "#5f5a52"}
      - {kind: loft, a: [[0, 2.52, 20.3], [-0.9644, 2.3282, 20.3], [-1.3394, 3.2336, 20.3], [0, 3.5, 20.3]], b: [[0, 2.52, 12], [-0.9644, 2.3282, 12], [-1.3394, 3.2336, 12], [0, 3.5, 12]], collide: 0, color: "#5f5a52"}
      - {kind: loft, a: [[-0.9644, 2.3282, 20.3], [-1.7819, 1.7819, 20.3], [-2.4749, 2.4749, 20.3], [-1.3394, 3.2336, 20.3]], b: [[-0.9644, 2.3282, 12], [-1.7819, 1.7819, 12], [-2.4749, 2.4749, 12], [-1.3394, 3.2336, 12]], collide: 0, color: "#5f5a52"}
      - {kind: loft, a: [[-1.7819, 1.7819, 20.3], [-2.3282, 0.9644, 20.3], [-3.2336, 1.3394, 20.3], [-2.4749, 2.4749, 20.3]], b: [[-1.7819, 1.7819, 12], [-2.3282, 0.9644, 12], [-3.2336, 1.3394, 12], [-2.4749, 2.4749, 12]], collide: 0, color: "#5f5a52"}
      - {kind: loft, a: [[-2.3282, 0.9644, 20.3], [-2.52, 0, 20.3], [-3.5, 0, 20.3], [-3.2336, 1.3394, 20.3]], b: [[-2.3282, 0.9644, 12], [-2.52, 0, 12], [-3.5, 0, 12], [-3.2336, 1.3394, 12]], collide: 0, color: "#5f5a52"}
      - {kind: loft, a: [[3.5, 0, 21.8], [3.2336, 1.3394, 21.8], [2.4749, 2.4749, 21.8], [1.3394, 3.2336, 21.8], [0, 3.5, 21.8], [-1.3394, 3.2336, 21.8], [-2.4749, 2.4749, 21.8], [-3.2336, 1.3394, 21.8], [-3.5, 0, 21.8], [-3.2336, -1.3394, 21.8], [-2.4749, -2.4749, 21.8], [-1.3394, -3.2336, 21.8], [-0, -3.5, 21.8], [1.3394, -3.2336, 21.8], [2.4749, -2.4749, 21.8], [3.2336, -1.3394, 21.8]], b: [[3.5, 0, 20.3], [3.2336, 1.3394, 20.3], [2.4749, 2.4749, 20.3], [1.3394, 3.2336, 20.3], [0, 3.5, 20.3], [-1.3394, 3.2336, 20.3], [-2.4749, 2.4749, 20.3], [-3.2336, 1.3394, 20.3], [-3.5, 0, 20.3], [-3.2336, -1.3394, 20.3], [-2.4749, -2.4749, 20.3], [-1.3394, -3.2336, 20.3], [-0, -3.5, 20.3], [1.3394, -3.2336, 20.3], [2.4749, -2.4749, 20.3], [3.2336, -1.3394, 20.3]], collide: 0, color: "#5f5a52"}
      - {kind: loft, a: [[-4, 0, 13.6], [0, 0, 13.6], [0, 3, 13.6], [-4, 3, 13.6]], b: [[-4, 0, 12], [0, 0, 12], [0, 3, 12], [-4, 3, 12]], collide: 0, color: "#5f5a52"}
      - {kind: loft, a: [[-10, 0.5, 12], [-3.5, 0.5, 12], [-3.5, 2.5, 12], [-10, 2.5, 12]], b: [[-10, 0.5, 10.8], [-3.5, 0.5, 10.8], [-3.5, 2.5, 10.8], [-10, 2.5, 10.8]], collide: 1, color: "#5f5a52"}
      - {kind: loft, a: [[-10.6, 0.5, 12.8], [-9.4, 0.5, 12.8], [-9.4, 2.5, 12.8], [-10.6, 2.5, 12.8]], b: [[-10.6, 0.5, 12], [-9.4, 0.5, 12], [-9.4, 2.5, 12], [-10.6, 2.5, 12]], collide: 0, color: "#5f5a52"}
  - id: load
    shape: part
    pos: [-14, 0, 13.5]
    mass: 3
    color: "#9a7a52"
    pieces:
      - {kind: loft, a: [[-20, -1, 15], [-8, -1, 15], [-8, 4, 15], [-20, 4, 15]], b: [[-20, -1, 12.02], [-8, -1, 12.02], [-8, 4, 12.02], [-20, 4, 12.02]], collide: 2, color: "#9a7a52"}
  - id: vin
    shape: part
    pos: [12.2, 0, 2.6]
    mass: 0.006
    color: "#e0a030"
    pieces:
      - {kind: loft, a: [[12, 0.2, 2.6], [12.4, 0.2, 2.6], [12.4, 3.8, 2.6], [12, 3.8, 2.6]], b: [[12, 0.2, 0.4], [12.4, 0.2, 0.4], [12.4, 3.8, 0.4], [12, 3.8, 0.4]], collide: 0, color: "#c8781e"}
      - {kind: rod, from: [12.2, 0, 2.6], to: [12.2, 4, 2.6], radius: 0.18, collide: 0}
  - id: vout
    shape: part
    pos: [7, 0, 2.6]
    mass: 0.006
    color: "#e0a030"
    pieces:
      - {kind: loft, a: [[6.8, 0.2, 2.6], [7.2, 0.2, 2.6], [7.2, 3.8, 2.6], [6.8, 3.8, 2.6]], b: [[6.8, 0.2, 0.4], [7.2, 0.2, 0.4], [7.2, 3.8, 0.4], [6.8, 3.8, 0.4]], collide: 0, color: "#c8781e"}
      - {kind: rod, from: [7, 0, 2.6], to: [7, 4, 2.6], radius: 0.18, collide: 0}
  - id: frame
    shape: part
    pos: [0, 0, 0]
    fixed: true
    color: "#d6cdb8"
    pieces:
      - {kind: loft, a: [[-11, 0, 0], [25, 0, 0], [25, 8, 0], [-11, 8, 0]], b: [[-11, 0, -1.2], [25, 0, -1.2], [25, 8, -1.2], [-11, 8, -1.2]], collide: 0, color: "#8b7d66"}
      - {kind: loft, a: [[-5, 4, 8], [19.6, 4, 8], [19.6, 4.6, 8], [-5, 4.6, 8]], b: [[-5, 4, 0], [19.6, 4, 0], [19.6, 4.6, 0], [-5, 4.6, 0]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[-5, 0, 8.8], [19.6, 0, 8.8], [19.6, 4.6, 8.8], [-5, 4.6, 8.8]], b: [[-5, 0, 8], [19.6, 0, 8], [19.6, 4.6, 8], [-5, 4.6, 8]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[-5.6, 0, 8.8], [-5, 0, 8.8], [-5, 4.6, 8.8], [-5.6, 4.6, 8.8]], b: [[-5.6, 0, 0], [-5, 0, 0], [-5, 4.6, 0], [-5.6, 4.6, 0]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[19, 0, 8], [19.6, 0, 8], [19.6, 4.6, 8], [19, 4.6, 8]], b: [[19, 0, 0], [19.6, 0, 0], [19.6, 4.6, 0], [19, 4.6, 0]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[-5, 0, 2.6], [7.4, 0, 2.6], [7.4, 4.6, 2.6], [-5, 4.6, 2.6]], b: [[-5, 0, 2], [7.4, 0, 2], [7.4, 4.6, 2], [-5, 4.6, 2]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[-5, 0, 8], [-0.5, 0, 8], [-0.5, 4.6, 8], [-5, 4.6, 8]], b: [[-5, 0, 2.6], [-0.5, 0, 2.6], [-0.5, 4.6, 2.6], [-5, 4.6, 2.6]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[0.5, 0, 8], [7.4, 0, 8], [7.4, 4.6, 8], [0.5, 4.6, 8]], b: [[0.5, 0, 2.6], [7.4, 0, 2.6], [7.4, 4.6, 2.6], [0.5, 4.6, 2.6]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[7.4, 0, 3.4], [12.6, 0, 3.4], [12.6, 4.6, 3.4], [7.4, 4.6, 3.4]], b: [[7.4, 0, 3], [12.6, 0, 3], [12.6, 4.6, 3], [7.4, 4.6, 3]], collide: 0, color: "#b9ae98"}
      - {kind: loft, a: [[7.2, 0, 3.4], [7.6, 0, 3.4], [7.6, 4.6, 3.4], [7.2, 4.6, 3.4]], b: [[7.2, 0, 2.6], [7.6, 0, 2.6], [7.6, 4.6, 2.6], [7.2, 4.6, 2.6]], collide: 0, color: "#b9ae98"}
      - {kind: loft, a: [[12.4, 0, 3.4], [12.8, 0, 3.4], [12.8, 4.6, 3.4], [12.4, 4.6, 3.4]], b: [[12.4, 0, 2.6], [12.8, 0, 2.6], [12.8, 4.6, 2.6], [12.4, 4.6, 2.6]], collide: 0, color: "#b9ae98"}
      - {kind: loft, a: [[10.8, 0, 17], [10.7391, 0.3061, 17], [11.201, 0.4975, 17], [11.3, 0, 17]], b: [[10.8, 0, 3.4], [10.7391, 0.3061, 3.4], [11.201, 0.4975, 3.4], [11.3, 0, 3.4]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[10.7391, 0.3061, 17], [10.5657, 0.5657, 17], [10.9192, 0.9192, 17], [11.201, 0.4975, 17]], b: [[10.7391, 0.3061, 3.4], [10.5657, 0.5657, 3.4], [10.9192, 0.9192, 3.4], [11.201, 0.4975, 3.4]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[10.5657, 0.5657, 17], [10.3061, 0.7391, 17], [10.4975, 1.201, 17], [10.9192, 0.9192, 17]], b: [[10.5657, 0.5657, 3.4], [10.3061, 0.7391, 3.4], [10.4975, 1.201, 3.4], [10.9192, 0.9192, 3.4]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[10.3061, 0.7391, 17], [10, 0.8, 17], [10, 1.3, 17], [10.4975, 1.201, 17]], b: [[10.3061, 0.7391, 3.4], [10, 0.8, 3.4], [10, 1.3, 3.4], [10.4975, 1.201, 3.4]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[10, 0.8, 17], [9.6939, 0.7391, 17], [9.5025, 1.201, 17], [10, 1.3, 17]], b: [[10, 0.8, 3.4], [9.6939, 0.7391, 3.4], [9.5025, 1.201, 3.4], [10, 1.3, 3.4]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[9.6939, 0.7391, 17], [9.4343, 0.5657, 17], [9.0808, 0.9192, 17], [9.5025, 1.201, 17]], b: [[9.6939, 0.7391, 3.4], [9.4343, 0.5657, 3.4], [9.0808, 0.9192, 3.4], [9.5025, 1.201, 3.4]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[9.4343, 0.5657, 17], [9.2609, 0.3061, 17], [8.799, 0.4975, 17], [9.0808, 0.9192, 17]], b: [[9.4343, 0.5657, 3.4], [9.2609, 0.3061, 3.4], [8.799, 0.4975, 3.4], [9.0808, 0.9192, 3.4]], collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[9.2609, 0.3061, 17], [9.2, 0, 17], [8.7, 0, 17], [8.799, 0.4975, 17]], b: [[9.2609, 0.3061, 3.4], [9.2, 0, 3.4], [8.7, 0, 3.4], [8.799, 0.4975, 3.4]], collide: 0, color: "#6d675c"}
      - {kind: rod, from: [17.5, 2, 8.8], to: [17.5, 2, 10], radius: 0.6, collide: 0, color: "#6d675c"}
      - {kind: loft, a: [[0.5, 0, 20], [0.4619, 0.1913, 20], [2.3097, 0.9567, 20], [2.5, 0, 20]], b: [[0.5, 0, 8.8], [0.4619, 0.1913, 8.8], [2.3097, 0.9567, 8.8], [2.5, 0, 8.8]], collide: 0, color: "#8a8478"}
      - {kind: loft, a: [[0.4619, 0.1913, 20], [0.3536, 0.3536, 20], [1.7678, 1.7678, 20], [2.3097, 0.9567, 20]], b: [[0.4619, 0.1913, 8.8], [0.3536, 0.3536, 8.8], [1.7678, 1.7678, 8.8], [2.3097, 0.9567, 8.8]], collide: 0, color: "#8a8478"}
      - {kind: loft, a: [[0.3536, 0.3536, 20], [0.1913, 0.4619, 20], [0.9567, 2.3097, 20], [1.7678, 1.7678, 20]], b: [[0.3536, 0.3536, 8.8], [0.1913, 0.4619, 8.8], [0.9567, 2.3097, 8.8], [1.7678, 1.7678, 8.8]], collide: 0, color: "#8a8478"}
      - {kind: loft, a: [[0.1913, 0.4619, 20], [0, 0.5, 20], [0, 2.5, 20], [0.9567, 2.3097, 20]], b: [[0.1913, 0.4619, 8.8], [0, 0.5, 8.8], [0, 2.5, 8.8], [0.9567, 2.3097, 8.8]], collide: 0, color: "#8a8478"}
      - {kind: loft, a: [[0, 0.5, 20], [-0.1913, 0.4619, 20], [-0.9567, 2.3097, 20], [0, 2.5, 20]], b: [[0, 0.5, 8.8], [-0.1913, 0.4619, 8.8], [-0.9567, 2.3097, 8.8], [0, 2.5, 8.8]], collide: 0, color: "#8a8478"}
      - {kind: loft, a: [[-0.1913, 0.4619, 20], [-0.3536, 0.3536, 20], [-1.7678, 1.7678, 20], [-0.9567, 2.3097, 20]], b: [[-0.1913, 0.4619, 8.8], [-0.3536, 0.3536, 8.8], [-1.7678, 1.7678, 8.8], [-0.9567, 2.3097, 8.8]], collide: 0, color: "#8a8478"}
      - {kind: loft, a: [[-0.3536, 0.3536, 20], [-0.4619, 0.1913, 20], [-2.3097, 0.9567, 20], [-1.7678, 1.7678, 20]], b: [[-0.3536, 0.3536, 8.8], [-0.4619, 0.1913, 8.8], [-2.3097, 0.9567, 8.8], [-1.7678, 1.7678, 8.8]], collide: 0, color: "#8a8478"}
      - {kind: loft, a: [[-0.4619, 0.1913, 20], [-0.5, 0, 20], [-2.5, 0, 20], [-2.3097, 0.9567, 20]], b: [[-0.4619, 0.1913, 8.8], [-0.5, 0, 8.8], [-2.5, 0, 8.8], [-2.3097, 0.9567, 8.8]], collide: 0, color: "#8a8478"}
      - {kind: loft, a: [[-2.5, 0, 20], [-0.5, 0, 20], [-0.5, 0.05, 20], [-2.5, 0.05, 20]], b: [[-2.5, 0, 8.8], [-0.5, 0, 8.8], [-0.5, 0.05, 8.8], [-2.5, 0.05, 8.8]], collide: 0, color: "#8a8478"}
      - {kind: loft, a: [[0.5, 0, 20], [2.5, 0, 20], [2.5, 0.05, 20], [0.5, 0.05, 20]], b: [[0.5, 0, 8.8], [2.5, 0, 8.8], [2.5, 0.05, 8.8], [0.5, 0.05, 8.8]], collide: 0, color: "#8a8478"}
      - {kind: loft, a: [[4.5, 4, 20.6], [5.5, 4, 20.6], [5.5, 5, 20.6], [4.5, 5, 20.6]], b: [[4.5, 4, 8.8], [5.5, 4, 8.8], [5.5, 5, 8.8], [4.5, 5, 8.8]], collide: 0, color: "#6d675c"}
      - {kind: rod, from: [5, -1, 21], to: [5, 5, 21], radius: 0.3, collide: 0, color: "#6d675c"}
      - {kind: rod, from: [-3.5, 2, 1], to: [-7.5, 2, 1], radius: 0.5, collide: 0, color: "#6d675c"}
      - {kind: rod, from: [-7.5, 0.5, 1], to: [-7.5, 3.5, 1], radius: 0.25, 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: [-5.9, 4.2], damping: 0.01}
  - {id: j_pr, type: hinge, body: prod, axis: [0, 1, 0], damping: 0.0005}
  - {id: j_c, type: slide, body: cylinder, axis: [0, 0, 1], range: [-7.21645e-16, 7], damping: 0.5}   # the cylinder on the ram
  - {id: j_ld, type: slide, body: load, axis: [0, 0, 1], range: [-3, 12], damping: 0.5}   # the load, free to rise off the claw
  - {id: j_vi, type: hinge, body: vin, axis: [0, 1, 0], range: [0, 0.9], damping: 2e-05}    # 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: 2e-05}   # the delivery flap
pins:
  - {id: p_l, a: lever, b: prod, at: [10, 0, 21]}
vessels:
  substeps: 4
  nodes:
    - {id: base, kind: tank, area: 24, z: 0, level: 6.5, max: 8,
       draw: {section: [[13, 0], [19, 0], [19, 8], [13, 8]], y: [0, 4]}}   # the water in the hollow base, open by the vent
    - {id: pump, kind: chamber, fixed: 0, sections: [[0, 20.8], [3, 2.0106]], volume: 75.469, water: 75.469, K: 2e+07,
       draw: {sections: [[[7.6, 0], [12.4, 0], [12.4, 3], [7.6, 3]], [[9.23, 3], [10.77, 3], [10.77, 17], [9.23, 17]]], y: [0, 4]}}   # the pump's head and barrel under the plunger
    - {id: cyl, kind: chamber, fixed: 0, sections: [[0, 48.8], [2.0, 4], [20, 19.635]], volume: 175.49, water: 175.49, p: 19984.8, K: 2e+07,
       draw: {sections: [[[-5, 0], [7.2, 0], [7.2, 2], [-5, 2]], [[-0.5, 2], [0.5, 2], [0.5, 20], [-0.5, 20]], [[-2.47, 20], [2.47, 20], [2.47, 32], [-2.47, 32]]], y: [0, 4]}}   # the passage, the pipe in the ram, the cylinder over the ram
  links:
    - {id: suck, from: base, 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: 2.0106, sign: 1}
    - {node: cyl, joint: j_c, area: 19.635, sign: 1}
    - {node: base, 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_c, settle_s: 12.5, window_s: 1.0, min: 1.5, max: 8}
  - {type: penetration, max: 0.01}
camera: {target: [2, 0, 11], position: [2, -200, 14], fov: 12}
display:
  output: j_c
  labels: {j_l: "Lever (driver)", j_p: "Pump plunger", j_pr: "Plunger rod", j_c: "Cylinder and claw", j_ld: "Load", j_vi: "Suction flap", j_vo: "Delivery flap"}
