number: 347
slug: section-disk-engine
name: Section of disk engine
brown: "Section of disk engine. Disk piston, seen edgewise, has a motion substantially like a coin when it first falls after being spun in the air. The cylinder-heads are cones. The piston-rod is made with a ball to which the disk is attached, said ball working in concentric seats in cylinder-heads, and the left-hand end is attached to the crank-arm or fly-wheel on end of shaft at left. Steam is admitted alternately on either side of piston."
units: cm
sim: {timestep: 0.0002, integrator: implicitfast, iterations: 100, solver: CG, multiccd: true, duration_s: 8, floor: false}
bodies:
  # the framing: the cylinder's casing in section (its conical heads, with the ball's seats, and its spherical
  # zone), the bearing of the shaft at the left
  - id: frame
    shape: part
    pos: [0, 0, 0]
    fixed: true
    density: 7800
    color: "#9a9284"
    pieces:
      - {kind: poly, points: [[-1.9371, 4.1722], [-5.8956, 12.6981], [-4.8071, 13.2035], [-0.8487, 4.6776]], y: [14.6, 16.0], collide: 0, color: "#8f8a80"}
      - {kind: poly, points: [[1.9371, 4.1722], [5.8956, 12.6981], [4.8071, 13.2035], [0.8487, 4.6776]], y: [14.6, 16.0], collide: 0, color: "#8f8a80"}
      - {kind: poly, points: [[-1.9371, -4.1722], [-5.8956, -12.6981], [-4.8071, -13.2035], [-0.8487, -4.6776]], y: [14.6, 16.0], collide: 0, color: "#8f8a80"}
      - {kind: poly, points: [[1.9371, -4.1722], [5.8956, -12.6981], [4.8071, -13.2035], [0.8487, -4.6776]], y: [14.6, 16.0], collide: 0, color: "#8f8a80"}
      - {kind: band, center: [0, 0], r: [14.1000, 15.3000], a: [1.1361, 2.0055], y: [14.6, 16.0], slices: 8, collide: 0, color: "#8f8a80"}
      - {kind: band, center: [0, 0], r: [14.1000, 15.3000], a: [4.2777, 5.1471], y: [14.6, 16.0], slices: 8, collide: 0, color: "#8f8a80"}
      - {kind: poly, points: [[-8.8956, -13.9981], [-7.4956, -13.9981], [-7.4956, 13.9981], [-8.8956, 13.9981]], y: [14.6, 16.0], collide: 0}
      - {kind: poly, points: [[7.4956, -13.9981], [8.8956, -13.9981], [8.8956, 13.9981], [7.4956, 13.9981]], y: [14.6, 16.0], collide: 0}
      - {kind: poly, points: [[-46.0000, -24.0000], [-42.0000, -24.0000], [-42.0000, -2.2000], [-46.0000, -2.2000]], y: [-3, 3], collide: 0}
      - {kind: poly, points: [[-46.0000, 2.2000], [-42.0000, 2.2000], [-42.0000, 4.0000], [-46.0000, 4.0000]], y: [-3, 3], collide: 0}
      - {kind: poly, points: [[-56.0000, -25.4000], [24.0000, -25.4000], [24.0000, -24.0000], [-56.0000, -24.0000]], y: [-8, 16.0], collide: 0}
      - {kind: poly, points: [[8.8956, -24.0000], [11.8956, -24.0000], [11.8956, -13.9981], [8.8956, -13.9981]], y: [14.6, 16.0], collide: 0}
      - {kind: poly, points: [[-11.8956, -24.0000], [-8.8956, -24.0000], [-8.8956, -13.9981], [-11.8956, -13.9981]], y: [14.6, 16.0], collide: 0}
  # the shaft and its crank-arm (the driven joint), with the eye in which the piston-rod's end runs: four bars
  # round the rod's end, pointing at the ball
  - id: K
    shape: part
    pos: [-32.0000, 0, 0]
    mount: frame
    density: 7800
    friction: 0.05
    color: "#a39d90"
    pieces:
      - {kind: rod, from: [-33.0000, 0, 0], to: [-54, 0, 0], radius: 2.0, collide: 0, color: "#6f6a60"}
      - {kind: loft, a: [[-33.0000, -2.6000, -3.0000], [-33.0000, 2.6000, -3.0000], [-33.0000, 2.6000, 16.0000], [-33.0000, -2.6000, 16.0000]], b: [[-31.0000, -2.6000, -3.0000], [-31.0000, 2.6000, -3.0000], [-31.0000, 2.6000, 16.0000], [-31.0000, -2.6000, 16.0000]], collide: 0}
      - {kind: rod, from: [-24.6706, 1.3300, 11.4542], to: [-28.6615, 1.3300, 13.3071], radius: 0.5, collide: 1, capsule: true, color: "#6f6a60"}
      - {kind: rod, from: [-24.6706, -1.3300, 11.4542], to: [-28.6615, -1.3300, 13.3071], radius: 0.5, collide: 1, capsule: true, color: "#6f6a60"}
      - {kind: rod, from: [-24.1106, 0.0000, 12.6605], to: [-28.1014, 0.0000, 14.5134], radius: 0.5, collide: 1, capsule: true, color: "#6f6a60"}
      - {kind: rod, from: [-25.2307, 0.0000, 10.2479], to: [-29.2216, 0.0000, 12.1008], radius: 0.5, collide: 1, capsule: true, color: "#6f6a60"}
      - {kind: loft, a: [[-29.4321, -1.8300, 11.6473], [-29.4321, 1.8300, 11.6473], [-27.8908, 1.8300, 14.9669], [-27.8908, -1.8300, 14.9669]], b: [[-31.0000, -1.8300, 10.4000], [-31.0000, 1.8300, 10.4000], [-31.0000, 1.8300, 15.6000], [-31.0000, -1.8300, 15.6000]], collide: 0, color: "#8f8a80"}
  # the cross of the Hooke's joint at the ball (standing for the partition), and the disk with its ball and rod
  - {id: G, shape: part, pos: [0, 0, 0], mount: frame, mass: 0.01, color: "#8f8a80", pieces: [{kind: disc, center: [0, 0], radius: 0.1, y: [-0.05, 0.05], collide: 0}]}
  - id: D
    shape: part
    pos: [0, 0, 0]
    mount: G
    density: 7800
    color: "#b8ad96"
    pieces:
      - {kind: loft, a: [[0.3628, 13.7000, -0.1684], [1.4883, 13.4368, 2.2558], [2.5706, 12.6571, 4.5868], [3.5680, 11.3911, 6.7351], [4.4423, 9.6874, 8.6181], [5.1597, 7.6113, 10.1634], [5.6929, 5.2428, 11.3117], [6.0212, 2.6727, 12.0188], [6.1320, 0.0000, 12.2576], [6.0212, -2.6727, 12.0188], [5.6929, -5.2428, 11.3117], [5.1597, -7.6113, 10.1634], [4.4423, -9.6874, 8.6181], [3.5680, -11.3911, 6.7351], [2.5706, -12.6571, 4.5868], [1.4883, -13.4368, 2.2558], [0.3628, -13.7000, -0.1684], [-0.7627, -13.4368, -2.5926], [-1.8450, -12.6571, -4.9237], [-2.8424, -11.3911, -7.0720], [-3.7167, -9.6874, -8.9550], [-4.4341, -7.6113, -10.5003], [-4.9673, -5.2428, -11.6486], [-5.2956, -2.6727, -12.3557], [-5.4064, -0.0000, -12.5945], [-5.2956, 2.6727, -12.3557], [-4.9673, 5.2428, -11.6486], [-4.4341, 7.6113, -10.5003], [-3.7167, 9.6874, -8.9550], [-2.8424, 11.3911, -7.0720], [-1.8450, 12.6571, -4.9237], [-0.7627, 13.4368, -2.5926]], b: [[-0.3628, 13.7000, 0.1684], [0.7627, 13.4368, 2.5926], [1.8450, 12.6571, 4.9237], [2.8424, 11.3911, 7.0720], [3.7167, 9.6874, 8.9550], [4.4341, 7.6113, 10.5003], [4.9673, 5.2428, 11.6486], [5.2956, 2.6727, 12.3557], [5.4064, 0.0000, 12.5945], [5.2956, -2.6727, 12.3557], [4.9673, -5.2428, 11.6486], [4.4341, -7.6113, 10.5003], [3.7167, -9.6874, 8.9550], [2.8424, -11.3911, 7.0720], [1.8450, -12.6571, 4.9237], [0.7627, -13.4368, 2.5926], [-0.3628, -13.7000, 0.1684], [-1.4883, -13.4368, -2.2558], [-2.5706, -12.6571, -4.5868], [-3.5680, -11.3911, -6.7351], [-4.4423, -9.6874, -8.6181], [-5.1597, -7.6113, -10.1634], [-5.6929, -5.2428, -11.3117], [-6.0212, -2.6727, -12.0188], [-6.1320, -0.0000, -12.2576], [-6.0212, 2.6727, -12.0188], [-5.6929, 5.2428, -11.3117], [-5.1597, 7.6113, -10.1634], [-4.4423, 9.6874, -8.6181], [-3.5680, 11.3911, -6.7351], [-2.5706, 12.6571, -4.5868], [-1.4883, 13.4368, -2.2558]], collide: 0}
      - {kind: rod, from: [-0.05, 0, 0], to: [0.05, 0, 0], radius: 4.0, collide: 0, color: "#a39a88"}
      - {kind: rod, from: [10.8841, 0.0000, -5.0533], to: [-23.5822, 0.0000, 10.9489], radius: 1.0, collide: 0}
      - {kind: rod, from: [-21.7682, 0.0000, 10.1067], to: [-28.2987, 0.0000, 13.1387], radius: 0.8, collide: 2, capsule: true, color: "#6f6a60"}
joints:
  - {id: j_K, type: hinge, body: K, axis: [1, 0, 0], damping: 0.0005}
  - {id: j_a, type: hinge, body: G, axis: [0, 0, 1], damping: 0.001, range: [-0.46, 0.46]}
  - {id: j_b, type: hinge, body: D, axis: [0, 1, 0], damping: 0.001, range: [-0.9, 0.03]}
contact: {solref: [0.002, 1], solimp: [0.95, 0.99, 0.0005], margin: 0}
driver: {joint: j_K, kind: velocity, rpm: 30, kv: 30, max_torque: 50}
checks:
  - {type: turning, joint: j_K, direction: 1, min_mean: 2.8, min_fraction: 0.95, settle_s: 0.5, window_s: 7.0}
  # the crank-arm carries the rod's end round a circle about the shaft, and the rod, through its ball, rocks the
  # disk: up and down 24.9 degrees either side of upright ...
  - {type: amplitude, joint: j_b, min: 0.425, max: 0.445, settle_s: 0.5, window_s: 7.0}
  # ... and as far from side to side, a quarter-turn later
  - {type: amplitude, joint: j_a, min: 0.425, max: 0.445, settle_s: 0.5, window_s: 7.0}
  - {type: penetration, max: 0.0003, settle_s: 0.2}
camera: {target: [-16, 0, -14], position: [-56, -195, 10], fov: 30}
display:
  output: j_b
  labels: {j_K: Shaft and crank-arm (driver), j_a: Disk rocking side to side, j_b: Disk rocking up and down}

