# No. 475 (Brown 1868): "Bilge ejector (Brear's patent) for discharging bilge-water from vessels, or for raising and forcing water under various
# circumstances. D is a chamber having attached a suction-pipe, B, and discharge-pipe, C, and having a steam-pipe entering at one side, with a nozzle
# directed toward the discharge-pipe. A jet of steam entering through A expels the air from D and C, produces a vacuum in B, and causes water to rise
# through B, and pass through D and C, in a regular and constant stream. Compressed air may be used as a substitute for steam."
# Model (cm, gravity on, seen from in front, cut away in half section). Compressed air (Brown's substitute for steam: the model has no
# condensation) at 3 bar gauge comes in along A through a cock a hand opens and shuts (swung open over 7.5 s, +0.8 rad at 1/30 Hz, the only
# drive) and leaves A's nozzle (0.3 cm^2) up into C. The water is lumped vessels (src/fluid/vessels.c): B (from its foot in the bilge
# up to D), D and C are chambers of water under air; the bilge is a well kept at its level. The jet pump (openspec add-jet-pump): the
# nozzle's stream gives up its momentum to what passes from D into C, a pressure rise mn (vn - vm) / A_C across that throat; it carries D's
# air out first (the vacuum that draws the water up B), then the water, which rises up C and runs out of the spout (the cock is opened once and held).
# Generator: opencode-runs/vessels/gen475.py.
number: 475
slug: bilge-ejector
name: Bilge ejector (Brear's patent)
brown: "Bilge ejector (Brear’s patent) for discharging bilge-water from vessels, or for raising and forcing water under various circumstances. D is a chamber having attached a suction-pipe, B, and discharge-pipe, C, and having a steam-pipe entering at one side, with a nozzle directed toward the discharge-pipe. A jet of steam entering through A expels the air from D and C, produces a vacuum in B, and causes water to rise through B, and pass through D and C, in a regular and constant stream. Compressed air may be used as a substitute for steam."
units: cm
sim:
  timestep: 0.0005
  integrator: implicitfast
  iterations: 60
  duration_s: 12
  floor: false
bodies:
  - id: cock
    shape: part
    pos: [29.5, 0, 8]
    mass: 0.2
    color: "#a8884a"
    pieces:
      - {kind: rod, from: [29.5, -1, 8], to: [29.5, -0.4, 8], radius: 0.9, collide: 0}
      - {kind: rod, from: [29.5, -0.8, 8], to: [29.5, -0.8, 15], radius: 0.4, capsule: true, collide: 0}
  - id: frame
    shape: part
    pos: [0, 0, 0]
    fixed: true
    color: "#c9bfa9"
    pieces:
      - {kind: loft, a: [[1.6, 0, 0], [1.4782, 0.6123, 0], [1.8016, 0.7462, 0], [1.95, 0, 0]], b: [[1.6, 0, -24], [1.4782, 0.6123, -24], [1.8016, 0.7462, -24], [1.95, 0, -24]], collide: 0}
      - {kind: loft, a: [[1.4782, 0.6123, 0], [1.1314, 1.1314, 0], [1.3789, 1.3789, 0], [1.8016, 0.7462, 0]], b: [[1.4782, 0.6123, -24], [1.1314, 1.1314, -24], [1.3789, 1.3789, -24], [1.8016, 0.7462, -24]], collide: 0}
      - {kind: loft, a: [[1.1314, 1.1314, 0], [0.6123, 1.4782, 0], [0.7462, 1.8016, 0], [1.3789, 1.3789, 0]], b: [[1.1314, 1.1314, -24], [0.6123, 1.4782, -24], [0.7462, 1.8016, -24], [1.3789, 1.3789, -24]], collide: 0}
      - {kind: loft, a: [[0.6123, 1.4782, 0], [0, 1.6, 0], [0, 1.95, 0], [0.7462, 1.8016, 0]], b: [[0.6123, 1.4782, -24], [0, 1.6, -24], [0, 1.95, -24], [0.7462, 1.8016, -24]], collide: 0}
      - {kind: loft, a: [[0, 1.6, 0], [-0.6123, 1.4782, 0], [-0.7462, 1.8016, 0], [0, 1.95, 0]], b: [[0, 1.6, -24], [-0.6123, 1.4782, -24], [-0.7462, 1.8016, -24], [0, 1.95, -24]], collide: 0}
      - {kind: loft, a: [[-0.6123, 1.4782, 0], [-1.1314, 1.1314, 0], [-1.3789, 1.3789, 0], [-0.7462, 1.8016, 0]], b: [[-0.6123, 1.4782, -24], [-1.1314, 1.1314, -24], [-1.3789, 1.3789, -24], [-0.7462, 1.8016, -24]], collide: 0}
      - {kind: loft, a: [[-1.1314, 1.1314, 0], [-1.4782, 0.6123, 0], [-1.8016, 0.7462, 0], [-1.3789, 1.3789, 0]], b: [[-1.1314, 1.1314, -24], [-1.4782, 0.6123, -24], [-1.8016, 0.7462, -24], [-1.3789, 1.3789, -24]], collide: 0}
      - {kind: loft, a: [[-1.4782, 0.6123, 0], [-1.6, 0, 0], [-1.95, 0, 0], [-1.8016, 0.7462, 0]], b: [[-1.4782, 0.6123, -24], [-1.6, 0, -24], [-1.95, 0, -24], [-1.8016, 0.7462, -24]], collide: 0}
      - {kind: loft, a: [[4.6, 0, 4], [4.2498, 1.7603, 4], [4.5732, 1.8943, 4], [4.95, 0, 4]], b: [[2.2, 0, 0], [2.0325, 0.8419, 0], [2.3559, 0.9758, 0], [2.55, 0, 0]], collide: 0}
      - {kind: loft, a: [[4.2498, 1.7603, 4], [3.2527, 3.2527, 4], [3.5002, 3.5002, 4], [4.5732, 1.8943, 4]], b: [[2.0325, 0.8419, 0], [1.5556, 1.5556, 0], [1.8031, 1.8031, 0], [2.3559, 0.9758, 0]], collide: 0}
      - {kind: loft, a: [[3.2527, 3.2527, 4], [1.7603, 4.2498, 4], [1.8943, 4.5732, 4], [3.5002, 3.5002, 4]], b: [[1.5556, 1.5556, 0], [0.8419, 2.0325, 0], [0.9758, 2.3559, 0], [1.8031, 1.8031, 0]], collide: 0}
      - {kind: loft, a: [[1.7603, 4.2498, 4], [0, 4.6, 4], [0, 4.95, 4], [1.8943, 4.5732, 4]], b: [[0.8419, 2.0325, 0], [0, 2.2, 0], [0, 2.55, 0], [0.9758, 2.3559, 0]], collide: 0}
      - {kind: loft, a: [[0, 4.6, 4], [-1.7603, 4.2498, 4], [-1.8943, 4.5732, 4], [0, 4.95, 4]], b: [[0, 2.2, 0], [-0.8419, 2.0325, 0], [-0.9758, 2.3559, 0], [0, 2.55, 0]], collide: 0}
      - {kind: loft, a: [[-1.7603, 4.2498, 4], [-3.2527, 3.2527, 4], [-3.5002, 3.5002, 4], [-1.8943, 4.5732, 4]], b: [[-0.8419, 2.0325, 0], [-1.5556, 1.5556, 0], [-1.8031, 1.8031, 0], [-0.9758, 2.3559, 0]], collide: 0}
      - {kind: loft, a: [[-3.2527, 3.2527, 4], [-4.2498, 1.7603, 4], [-4.5732, 1.8943, 4], [-3.5002, 3.5002, 4]], b: [[-1.5556, 1.5556, 0], [-2.0325, 0.8419, 0], [-2.3559, 0.9758, 0], [-1.8031, 1.8031, 0]], collide: 0}
      - {kind: loft, a: [[-4.2498, 1.7603, 4], [-4.6, 0, 4], [-4.95, 0, 4], [-4.5732, 1.8943, 4]], b: [[-2.0325, 0.8419, 0], [-2.2, 0, 0], [-2.55, 0, 0], [-2.3559, 0.9758, 0]], collide: 0}
      - {kind: loft, a: [[5.6, 0, 8], [5.1737, 2.143, 8], [5.4971, 2.277, 8], [5.95, 0, 8]], b: [[4.6, 0, 4], [4.2498, 1.7603, 4], [4.5732, 1.8943, 4], [4.95, 0, 4]], collide: 0}
      - {kind: loft, a: [[5.1737, 2.143, 8], [3.9598, 3.9598, 8], [4.2073, 4.2073, 8], [5.4971, 2.277, 8]], b: [[4.2498, 1.7603, 4], [3.2527, 3.2527, 4], [3.5002, 3.5002, 4], [4.5732, 1.8943, 4]], collide: 0}
      - {kind: loft, a: [[3.9598, 3.9598, 8], [2.143, 5.1737, 8], [2.277, 5.4971, 8], [4.2073, 4.2073, 8]], b: [[3.2527, 3.2527, 4], [1.7603, 4.2498, 4], [1.8943, 4.5732, 4], [3.5002, 3.5002, 4]], collide: 0}
      - {kind: loft, a: [[2.143, 5.1737, 8], [0, 5.6, 8], [0, 5.95, 8], [2.277, 5.4971, 8]], b: [[1.7603, 4.2498, 4], [0, 4.6, 4], [0, 4.95, 4], [1.8943, 4.5732, 4]], collide: 0}
      - {kind: loft, a: [[0, 5.6, 8], [-2.143, 5.1737, 8], [-2.277, 5.4971, 8], [0, 5.95, 8]], b: [[0, 4.6, 4], [-1.7603, 4.2498, 4], [-1.8943, 4.5732, 4], [0, 4.95, 4]], collide: 0}
      - {kind: loft, a: [[-2.143, 5.1737, 8], [-3.9598, 3.9598, 8], [-4.2073, 4.2073, 8], [-2.277, 5.4971, 8]], b: [[-1.7603, 4.2498, 4], [-3.2527, 3.2527, 4], [-3.5002, 3.5002, 4], [-1.8943, 4.5732, 4]], collide: 0}
      - {kind: loft, a: [[-3.9598, 3.9598, 8], [-5.1737, 2.143, 8], [-5.4971, 2.277, 8], [-4.2073, 4.2073, 8]], b: [[-3.2527, 3.2527, 4], [-4.2498, 1.7603, 4], [-4.5732, 1.8943, 4], [-3.5002, 3.5002, 4]], collide: 0}
      - {kind: loft, a: [[-5.1737, 2.143, 8], [-5.6, 0, 8], [-5.95, 0, 8], [-5.4971, 2.277, 8]], b: [[-4.2498, 1.7603, 4], [-4.6, 0, 4], [-4.95, 0, 4], [-4.5732, 1.8943, 4]], collide: 0}
      - {kind: loft, a: [[5, 0, 12], [4.6194, 1.9134, 12], [4.9428, 2.0474, 12], [5.35, 0, 12]], b: [[5.6, 0, 8], [5.1737, 2.143, 8], [5.4971, 2.277, 8], [5.95, 0, 8]], collide: 0}
      - {kind: loft, a: [[4.6194, 1.9134, 12], [3.5355, 3.5355, 12], [3.783, 3.783, 12], [4.9428, 2.0474, 12]], b: [[5.1737, 2.143, 8], [3.9598, 3.9598, 8], [4.2073, 4.2073, 8], [5.4971, 2.277, 8]], collide: 0}
      - {kind: loft, a: [[3.5355, 3.5355, 12], [1.9134, 4.6194, 12], [2.0474, 4.9428, 12], [3.783, 3.783, 12]], b: [[3.9598, 3.9598, 8], [2.143, 5.1737, 8], [2.277, 5.4971, 8], [4.2073, 4.2073, 8]], collide: 0}
      - {kind: loft, a: [[1.9134, 4.6194, 12], [0, 5, 12], [0, 5.35, 12], [2.0474, 4.9428, 12]], b: [[2.143, 5.1737, 8], [0, 5.6, 8], [0, 5.95, 8], [2.277, 5.4971, 8]], collide: 0}
      - {kind: loft, a: [[0, 5, 12], [-1.9134, 4.6194, 12], [-2.0474, 4.9428, 12], [0, 5.35, 12]], b: [[0, 5.6, 8], [-2.143, 5.1737, 8], [-2.277, 5.4971, 8], [0, 5.95, 8]], collide: 0}
      - {kind: loft, a: [[-1.9134, 4.6194, 12], [-3.5355, 3.5355, 12], [-3.783, 3.783, 12], [-2.0474, 4.9428, 12]], b: [[-2.143, 5.1737, 8], [-3.9598, 3.9598, 8], [-4.2073, 4.2073, 8], [-2.277, 5.4971, 8]], collide: 0}
      - {kind: loft, a: [[-3.5355, 3.5355, 12], [-4.6194, 1.9134, 12], [-4.9428, 2.0474, 12], [-3.783, 3.783, 12]], b: [[-3.9598, 3.9598, 8], [-5.1737, 2.143, 8], [-5.4971, 2.277, 8], [-4.2073, 4.2073, 8]], collide: 0}
      - {kind: loft, a: [[-4.6194, 1.9134, 12], [-5, 0, 12], [-5.35, 0, 12], [-4.9428, 2.0474, 12]], b: [[-5.1737, 2.143, 8], [-5.6, 0, 8], [-5.95, 0, 8], [-5.4971, 2.277, 8]], collide: 0}
      - {kind: loft, a: [[3.4, 0, 16], [3.1412, 1.3011, 16], [3.4645, 1.4351, 16], [3.75, 0, 16]], b: [[5, 0, 12], [4.6194, 1.9134, 12], [4.9428, 2.0474, 12], [5.35, 0, 12]], collide: 0}
      - {kind: loft, a: [[3.1412, 1.3011, 16], [2.4042, 2.4042, 16], [2.6517, 2.6517, 16], [3.4645, 1.4351, 16]], b: [[4.6194, 1.9134, 12], [3.5355, 3.5355, 12], [3.783, 3.783, 12], [4.9428, 2.0474, 12]], collide: 0}
      - {kind: loft, a: [[2.4042, 2.4042, 16], [1.3011, 3.1412, 16], [1.4351, 3.4645, 16], [2.6517, 2.6517, 16]], b: [[3.5355, 3.5355, 12], [1.9134, 4.6194, 12], [2.0474, 4.9428, 12], [3.783, 3.783, 12]], collide: 0}
      - {kind: loft, a: [[1.3011, 3.1412, 16], [0, 3.4, 16], [0, 3.75, 16], [1.4351, 3.4645, 16]], b: [[1.9134, 4.6194, 12], [0, 5, 12], [0, 5.35, 12], [2.0474, 4.9428, 12]], collide: 0}
      - {kind: loft, a: [[0, 3.4, 16], [-1.3011, 3.1412, 16], [-1.4351, 3.4645, 16], [0, 3.75, 16]], b: [[0, 5, 12], [-1.9134, 4.6194, 12], [-2.0474, 4.9428, 12], [0, 5.35, 12]], collide: 0}
      - {kind: loft, a: [[-1.3011, 3.1412, 16], [-2.4042, 2.4042, 16], [-2.6517, 2.6517, 16], [-1.4351, 3.4645, 16]], b: [[-1.9134, 4.6194, 12], [-3.5355, 3.5355, 12], [-3.783, 3.783, 12], [-2.0474, 4.9428, 12]], collide: 0}
      - {kind: loft, a: [[-2.4042, 2.4042, 16], [-3.1412, 1.3011, 16], [-3.4645, 1.4351, 16], [-2.6517, 2.6517, 16]], b: [[-3.5355, 3.5355, 12], [-4.6194, 1.9134, 12], [-4.9428, 2.0474, 12], [-3.783, 3.783, 12]], collide: 0}
      - {kind: loft, a: [[-3.1412, 1.3011, 16], [-3.4, 0, 16], [-3.75, 0, 16], [-3.4645, 1.4351, 16]], b: [[-4.6194, 1.9134, 12], [-5, 0, 12], [-5.35, 0, 12], [-4.9428, 2.0474, 12]], collide: 0}
      - {kind: loft, a: [[2, 0, 20], [1.8478, 0.7654, 20], [2.1711, 0.8993, 20], [2.35, 0, 20]], b: [[3.4, 0, 16], [3.1412, 1.3011, 16], [3.4645, 1.4351, 16], [3.75, 0, 16]], collide: 0}
      - {kind: loft, a: [[1.8478, 0.7654, 20], [1.4142, 1.4142, 20], [1.6617, 1.6617, 20], [2.1711, 0.8993, 20]], b: [[3.1412, 1.3011, 16], [2.4042, 2.4042, 16], [2.6517, 2.6517, 16], [3.4645, 1.4351, 16]], collide: 0}
      - {kind: loft, a: [[1.4142, 1.4142, 20], [0.7654, 1.8478, 20], [0.8993, 2.1711, 20], [1.6617, 1.6617, 20]], b: [[2.4042, 2.4042, 16], [1.3011, 3.1412, 16], [1.4351, 3.4645, 16], [2.6517, 2.6517, 16]], collide: 0}
      - {kind: loft, a: [[0.7654, 1.8478, 20], [0, 2, 20], [0, 2.35, 20], [0.8993, 2.1711, 20]], b: [[1.3011, 3.1412, 16], [0, 3.4, 16], [0, 3.75, 16], [1.4351, 3.4645, 16]], collide: 0}
      - {kind: loft, a: [[0, 2, 20], [-0.7654, 1.8478, 20], [-0.8993, 2.1711, 20], [0, 2.35, 20]], b: [[0, 3.4, 16], [-1.3011, 3.1412, 16], [-1.4351, 3.4645, 16], [0, 3.75, 16]], collide: 0}
      - {kind: loft, a: [[-0.7654, 1.8478, 20], [-1.4142, 1.4142, 20], [-1.6617, 1.6617, 20], [-0.8993, 2.1711, 20]], b: [[-1.3011, 3.1412, 16], [-2.4042, 2.4042, 16], [-2.6517, 2.6517, 16], [-1.4351, 3.4645, 16]], collide: 0}
      - {kind: loft, a: [[-1.4142, 1.4142, 20], [-1.8478, 0.7654, 20], [-2.1711, 0.8993, 20], [-1.6617, 1.6617, 20]], b: [[-2.4042, 2.4042, 16], [-3.1412, 1.3011, 16], [-3.4645, 1.4351, 16], [-2.6517, 2.6517, 16]], collide: 0}
      - {kind: loft, a: [[-1.8478, 0.7654, 20], [-2, 0, 20], [-2.35, 0, 20], [-2.1711, 0.8993, 20]], b: [[-3.1412, 1.3011, 16], [-3.4, 0, 16], [-3.75, 0, 16], [-3.4645, 1.4351, 16]], collide: 0}
      - {kind: loft, a: [[1.6, 0, 46], [1.4782, 0.6123, 46], [1.8016, 0.7462, 46], [1.95, 0, 46]], b: [[1.6, 0, 20], [1.4782, 0.6123, 20], [1.8016, 0.7462, 20], [1.95, 0, 20]], collide: 0}
      - {kind: loft, a: [[1.4782, 0.6123, 46], [1.1314, 1.1314, 46], [1.3789, 1.3789, 46], [1.8016, 0.7462, 46]], b: [[1.4782, 0.6123, 20], [1.1314, 1.1314, 20], [1.3789, 1.3789, 20], [1.8016, 0.7462, 20]], collide: 0}
      - {kind: loft, a: [[1.1314, 1.1314, 46], [0.6123, 1.4782, 46], [0.7462, 1.8016, 46], [1.3789, 1.3789, 46]], b: [[1.1314, 1.1314, 20], [0.6123, 1.4782, 20], [0.7462, 1.8016, 20], [1.3789, 1.3789, 20]], collide: 0}
      - {kind: loft, a: [[0.6123, 1.4782, 46], [0, 1.6, 46], [0, 1.95, 46], [0.7462, 1.8016, 46]], b: [[0.6123, 1.4782, 20], [0, 1.6, 20], [0, 1.95, 20], [0.7462, 1.8016, 20]], collide: 0}
      - {kind: loft, a: [[0, 1.6, 46], [-0.6123, 1.4782, 46], [-0.7462, 1.8016, 46], [0, 1.95, 46]], b: [[0, 1.6, 20], [-0.6123, 1.4782, 20], [-0.7462, 1.8016, 20], [0, 1.95, 20]], collide: 0}
      - {kind: loft, a: [[-0.6123, 1.4782, 46], [-1.1314, 1.1314, 46], [-1.3789, 1.3789, 46], [-0.7462, 1.8016, 46]], b: [[-0.6123, 1.4782, 20], [-1.1314, 1.1314, 20], [-1.3789, 1.3789, 20], [-0.7462, 1.8016, 20]], collide: 0}
      - {kind: loft, a: [[-1.1314, 1.1314, 46], [-1.4782, 0.6123, 46], [-1.8016, 0.7462, 46], [-1.3789, 1.3789, 46]], b: [[-1.1314, 1.1314, 20], [-1.4782, 0.6123, 20], [-1.8016, 0.7462, 20], [-1.3789, 1.3789, 20]], collide: 0}
      - {kind: loft, a: [[-1.4782, 0.6123, 46], [-1.6, 0, 46], [-1.95, 0, 46], [-1.8016, 0.7462, 46]], b: [[-1.4782, 0.6123, 20], [-1.6, 0, 20], [-1.95, 0, 20], [-1.8016, 0.7462, 20]], collide: 0}
      - {kind: loft, a: [[1.95, 0, 0.6], [1.8016, 0.7462, 0.6], [3.0488, 1.2629, 0.6], [3.3, 0, 0.6]], b: [[1.95, 0, -0.6], [1.8016, 0.7462, -0.6], [3.0488, 1.2629, -0.6], [3.3, 0, -0.6]], collide: 0, color: "#7a6f5e"}
      - {kind: loft, a: [[1.8016, 0.7462, 0.6], [1.3789, 1.3789, 0.6], [2.3335, 2.3335, 0.6], [3.0488, 1.2629, 0.6]], b: [[1.8016, 0.7462, -0.6], [1.3789, 1.3789, -0.6], [2.3335, 2.3335, -0.6], [3.0488, 1.2629, -0.6]], collide: 0, color: "#7a6f5e"}
      - {kind: loft, a: [[1.3789, 1.3789, 0.6], [0.7462, 1.8016, 0.6], [1.2629, 3.0488, 0.6], [2.3335, 2.3335, 0.6]], b: [[1.3789, 1.3789, -0.6], [0.7462, 1.8016, -0.6], [1.2629, 3.0488, -0.6], [2.3335, 2.3335, -0.6]], collide: 0, color: "#7a6f5e"}
      - {kind: loft, a: [[0.7462, 1.8016, 0.6], [0, 1.95, 0.6], [0, 3.3, 0.6], [1.2629, 3.0488, 0.6]], b: [[0.7462, 1.8016, -0.6], [0, 1.95, -0.6], [0, 3.3, -0.6], [1.2629, 3.0488, -0.6]], collide: 0, color: "#7a6f5e"}
      - {kind: loft, a: [[0, 1.95, 0.6], [-0.7462, 1.8016, 0.6], [-1.2629, 3.0488, 0.6], [0, 3.3, 0.6]], b: [[0, 1.95, -0.6], [-0.7462, 1.8016, -0.6], [-1.2629, 3.0488, -0.6], [0, 3.3, -0.6]], collide: 0, color: "#7a6f5e"}
      - {kind: loft, a: [[-0.7462, 1.8016, 0.6], [-1.3789, 1.3789, 0.6], [-2.3335, 2.3335, 0.6], [-1.2629, 3.0488, 0.6]], b: [[-0.7462, 1.8016, -0.6], [-1.3789, 1.3789, -0.6], [-2.3335, 2.3335, -0.6], [-1.2629, 3.0488, -0.6]], collide: 0, color: "#7a6f5e"}
      - {kind: loft, a: [[-1.3789, 1.3789, 0.6], [-1.8016, 0.7462, 0.6], [-3.0488, 1.2629, 0.6], [-2.3335, 2.3335, 0.6]], b: [[-1.3789, 1.3789, -0.6], [-1.8016, 0.7462, -0.6], [-3.0488, 1.2629, -0.6], [-2.3335, 2.3335, -0.6]], collide: 0, color: "#7a6f5e"}
      - {kind: loft, a: [[-1.8016, 0.7462, 0.6], [-1.95, 0, 0.6], [-3.3, 0, 0.6], [-3.0488, 1.2629, 0.6]], b: [[-1.8016, 0.7462, -0.6], [-1.95, 0, -0.6], [-3.3, 0, -0.6], [-3.0488, 1.2629, -0.6]], collide: 0, color: "#7a6f5e"}
      - {kind: loft, a: [[1.95, 0, 20.6], [1.8016, 0.7462, 20.6], [3.0488, 1.2629, 20.6], [3.3, 0, 20.6]], b: [[1.95, 0, 19.4], [1.8016, 0.7462, 19.4], [3.0488, 1.2629, 19.4], [3.3, 0, 19.4]], collide: 0, color: "#7a6f5e"}
      - {kind: loft, a: [[1.8016, 0.7462, 20.6], [1.3789, 1.3789, 20.6], [2.3335, 2.3335, 20.6], [3.0488, 1.2629, 20.6]], b: [[1.8016, 0.7462, 19.4], [1.3789, 1.3789, 19.4], [2.3335, 2.3335, 19.4], [3.0488, 1.2629, 19.4]], collide: 0, color: "#7a6f5e"}
      - {kind: loft, a: [[1.3789, 1.3789, 20.6], [0.7462, 1.8016, 20.6], [1.2629, 3.0488, 20.6], [2.3335, 2.3335, 20.6]], b: [[1.3789, 1.3789, 19.4], [0.7462, 1.8016, 19.4], [1.2629, 3.0488, 19.4], [2.3335, 2.3335, 19.4]], collide: 0, color: "#7a6f5e"}
      - {kind: loft, a: [[0.7462, 1.8016, 20.6], [0, 1.95, 20.6], [0, 3.3, 20.6], [1.2629, 3.0488, 20.6]], b: [[0.7462, 1.8016, 19.4], [0, 1.95, 19.4], [0, 3.3, 19.4], [1.2629, 3.0488, 19.4]], collide: 0, color: "#7a6f5e"}
      - {kind: loft, a: [[0, 1.95, 20.6], [-0.7462, 1.8016, 20.6], [-1.2629, 3.0488, 20.6], [0, 3.3, 20.6]], b: [[0, 1.95, 19.4], [-0.7462, 1.8016, 19.4], [-1.2629, 3.0488, 19.4], [0, 3.3, 19.4]], collide: 0, color: "#7a6f5e"}
      - {kind: loft, a: [[-0.7462, 1.8016, 20.6], [-1.3789, 1.3789, 20.6], [-2.3335, 2.3335, 20.6], [-1.2629, 3.0488, 20.6]], b: [[-0.7462, 1.8016, 19.4], [-1.3789, 1.3789, 19.4], [-2.3335, 2.3335, 19.4], [-1.2629, 3.0488, 19.4]], collide: 0, color: "#7a6f5e"}
      - {kind: loft, a: [[-1.3789, 1.3789, 20.6], [-1.8016, 0.7462, 20.6], [-3.0488, 1.2629, 20.6], [-2.3335, 2.3335, 20.6]], b: [[-1.3789, 1.3789, 19.4], [-1.8016, 0.7462, 19.4], [-3.0488, 1.2629, 19.4], [-2.3335, 2.3335, 19.4]], collide: 0, color: "#7a6f5e"}
      - {kind: loft, a: [[-1.8016, 0.7462, 20.6], [-1.95, 0, 20.6], [-3.3, 0, 20.6], [-3.0488, 1.2629, 20.6]], b: [[-1.8016, 0.7462, 19.4], [-1.95, 0, 19.4], [-3.3, 0, 19.4], [-3.0488, 1.2629, 19.4]], collide: 0, color: "#7a6f5e"}
      - {kind: loft, a: [[-13, 0, 33], [-1.6, 0, 33], [-1.6, 1.95, 33], [-13, 1.95, 33]], b: [[-13, 0, 32.65], [-1.6, 0, 32.65], [-1.6, 1.95, 32.65], [-13, 1.95, 32.65]], collide: 0, color: "#8b7d66"}
      - {kind: loft, a: [[-13, 1.95, 36.2], [-1.6, 1.95, 36.2], [-1.6, 2.3, 36.2], [-13, 2.3, 36.2]], b: [[-13, 1.95, 32.65], [-1.6, 1.95, 32.65], [-1.6, 2.3, 32.65], [-13, 2.3, 32.65]], collide: 0, color: "#8b7d66"}
      - {kind: rod, from: [26, 0.9, 8], to: [6.2, 0.9, 8], radius: 0.7, capsule: true, collide: 0, color: "#5f5a52"}
      - {kind: rod, from: [6.2, 0.9, 8], to: [3.4, 0.9, 8.3], radius: 0.7, capsule: true, collide: 0, color: "#5f5a52"}
      - {kind: rod, from: [3.4, 0.9, 8.3], to: [1.5, 0.9, 9.4], radius: 0.7, capsule: true, collide: 0, color: "#5f5a52"}
      - {kind: rod, from: [1.5, 0.9, 9.4], to: [0.4, 0.9, 11], radius: 0.7, capsule: true, collide: 0, color: "#5f5a52"}
      - {kind: rod, from: [0.4, 0.9, 11], to: [0, 0.9, 12.2], radius: 0.7, capsule: true, collide: 0, color: "#5f5a52"}
      - {kind: rod, from: [0, 0.9, 12.2], to: [0, 0.9, 13], radius: 0.7, capsule: true, collide: 0, color: "#5f5a52"}
      - {kind: rod, from: [26, 0.9, 8], to: [34, 0.9, 8], radius: 0.7, collide: 0, color: "#5f5a52"}
      - {kind: rod, from: [29.5, -0.4, 8], to: [29.5, 2.2, 8], radius: 1.05, collide: 0, color: "#4f4a42"}
      - {kind: loft, a: [[-10.6, 0, -28], [10.6, 0, -28], [10.6, 10.6, -28], [-10.6, 10.6, -28]], b: [[-10.6, 0, -28.6], [10.6, 0, -28.6], [10.6, 10.6, -28.6], [-10.6, 10.6, -28.6]], collide: 0, color: "#9c9282"}
      - {kind: loft, a: [[-10.6, 10, -14], [10.6, 10, -14], [10.6, 10.6, -14], [-10.6, 10.6, -14]], b: [[-10.6, 10, -28], [10.6, 10, -28], [10.6, 10.6, -28], [-10.6, 10.6, -28]], collide: 0, color: "#9c9282"}
      - {kind: loft, a: [[-10.6, 0, -14], [-10, 0, -14], [-10, 10, -14], [-10.6, 10, -14]], b: [[-10.6, 0, -28], [-10, 0, -28], [-10, 10, -28], [-10.6, 10, -28]], collide: 0, color: "#9c9282"}
      - {kind: loft, a: [[10, 0, -14], [10.6, 0, -14], [10.6, 10, -14], [10, 10, -14]], b: [[10, 0, -28], [10.6, 0, -28], [10.6, 10, -28], [10, 10, -28]], collide: 0, color: "#9c9282"}
      - {kind: loft, a: [[-26, 0, -5], [-10, 0, -5], [-10, 8.6, -5], [-26, 8.6, -5]], b: [[-26, 0, -5.6], [-10, 0, -5.6], [-10, 8.6, -5.6], [-26, 8.6, -5.6]], collide: 0, color: "#8b7d66"}
      - {kind: loft, a: [[-26, 0, 2], [-25.4, 0, 2], [-25.4, 8.6, 2], [-26, 8.6, 2]], b: [[-26, 0, -5], [-25.4, 0, -5], [-25.4, 8.6, -5], [-26, 8.6, -5]], collide: 0, color: "#8b7d66"}
      - {kind: loft, a: [[-10.6, 0, 2], [-10, 0, 2], [-10, 8.6, 2], [-10.6, 8.6, 2]], b: [[-10.6, 0, -5], [-10, 0, -5], [-10, 8.6, -5], [-10.6, 8.6, -5]], collide: 0, color: "#8b7d66"}
      - {kind: loft, a: [[-26, 8, 2], [-10, 8, 2], [-10, 8.6, 2], [-26, 8.6, 2]], b: [[-26, 8, -5], [-10, 8, -5], [-10, 8.6, -5], [-26, 8.6, -5]], collide: 0, color: "#8b7d66"}
joints:
  - {id: j_k, type: hinge, body: cock, axis: [0, 1, 0], damping: 0.01}   # the air cock on A (the drive): open at +0.15..+0.6 rad
vessels:
  substeps: 16
  nodes:
    - {id: leak, kind: source, p: 981.0}   # the leak keeping the bilge at its level
    - {id: bilge, kind: tank, area: 200, z: -28, level: 10,
       draw: {section: [[-10, -28], [10, -28], [10, -14], [-10, -14]], y: [0, 10]}}
    - {id: B, kind: chamber, fixed: -24, sections: [[-24, 8.0425]], volume: 193.0195, water: 48.2549,
       draw: {sections: [[[-1.6, -24], [1.6, -24], [1.6, 0], [-1.6, 0]]], y: [0, 1.6]}}   # the suction pipe: the bilge's water and air over it
    - {id: D, kind: chamber, fixed: 0, sections: [[0, 37.8248], [4, 81.9746], [8, 88.3416], [12, 56.0879], [16, 23.4153]], volume: 1150.5769, water: 0,
       draw: {sections: [[[-2.2, 0], [2.2, 0], [4.6, 4], [-4.6, 4]], [[-4.6, 4], [4.6, 4], [5.6, 8], [-5.6, 8]], [[-5.6, 8], [5.6, 8], [5, 12], [-5, 12]], [[-5, 12], [5, 12], [3.4, 16], [-3.4, 16]], [[-3.4, 16], [3.4, 16], [2, 20], [-2, 20]]], y: [0, 5.6]}}
    - {id: C, kind: chamber, open: true, fixed: 20, sections: [[20, 8.0425]], volume: 209.1044, water: 0,
       draw: {sections: [[[-1.6, 20], [1.6, 20], [1.6, 46], [-1.6, 46]]], y: [0, 1.6]}}   # open at the top
    - {id: air, kind: source, p: 300000, gas: true, RT: 84100}   # the compressed air behind the cock
    - {id: out, kind: source, p: 0}
  links:
    - {id: leak, from: leak, to: bilge, area: 80, cd: 0.62, z: -28}
    - {id: foot, from: bilge, to: B, area: 8.0425, cd: 0.9, z: -24, zTo: -24}   # B's open foot
    - {id: neck, from: B, to: D, area: 8.0425, cd: 0.9, z: 0, zTo: 0}
    - {id: jet, from: air, to: C, area: 0.3, cd: 0.9, z: 20, zTo: 20, open: {joint: j_k, q: [0.15, 0.6], frac: [0, 1]},
       draw: {from: [0, 0.9, 13], to: [0, 0.9, 23], width: 1.0, flow: 0.004, air: true}}   # A's nozzle shooting up into C
    - {id: throat, from: D, to: C, area: 8.0425, cd: 0.9, z: 20, zTo: 20, nozzle: jet}   # the jet pump: the jet's momentum carries D's air, then its water, into C
    - {id: spout, from: C, to: out, area: 24, cd: 0.62, z: 33, check: true,
       draw: {from: [-1.6, 0.9, 33.5], to: [-13, 0.9, 33.3], width: 1.6, flow: 0.1, fall: {dir: [-0.25, 0, -1], floor: -5}}}
driver: {joint: j_k, kind: velocity, rpm: 0, swing: {amplitude: 0.8, hz: 0.03333}, kv: 5, max_torque: 2}
checks:
  - {type: position, joint: j_k, min: -0.05, max: 1.0, settle_s: 0.5, window_s: 11}
camera: {target: [4, 0, -6], position: [4, -320, -4], fov: 22}
display:
  output: j_k
  labels: {j_k: "Air cock on A (driver)"}
