# Ballistics lab — model reference

This documents every physical model in the simulator: the equations, the constants, where they come from, and what is known to be approximate. Units are SI unless stated. Constants marked **(cal)** are engineering estimates that should be calibrated against your own test data before results are used quantitatively.

## 1. Exterior ballistics

**Trajectory.** Point-mass model in 3D, integrated with semi-implicit Euler at Δt = 0.1 ms. Drag acts on velocity relative to the air: **a = −D(|v−w|) (v−w)/|v−w| − g ŷ**, where w is the wind vector.

**Drag.**
- **Bullets:** standard G1 drag function scaled by ballistic coefficient: D = ρ v² C_G1(M) π / (8 BC · 703.07).
- **Spheres (shot):** tabulated sphere drag coefficient versus Mach number.
- **Wads:** constant C_d.

**Atmosphere.** ISA pressure at altitude p = 101 325 (1 − 2.25577×10⁻⁵ h)^5.25588. Density ρ = p / (R T), speed of sound c = √(γ R T).

**Zero.** The launch elevation is iterated so the calm-air trajectory crosses the aim point at the target range. With "Hold for drift", elevation and azimuth are iterated with wind, spin drift and aerodynamic jump included.

**Gyroscopic stability.** Miller twist rule, S_g = 30 m / (t² d³ l (1 + l²)) · (V/2800)^(1/3) · (ρ_std/ρ). Mass m is in grains, diameter d in inches, and twist t and length l are in calibres.
- **Marginal (1 ≤ S_g < 1.3):** drag rises by up to 12%.
- **Unstable (S_g < 1):** drag climbs to about 3.8× over 15 ms, the bullet is drawn tumbling, and it strikes side-on.

**Spin drift.** Litz: SD = 1.25 (S_g + 1.2) t^1.83 inches, for right-hand twist.

**Aerodynamic jump.** Litz: (0.01 S_g − 0.0024 l + 0.032) MOA per mph of crosswind.

**Not modelled:** Coriolis/Eötvös, humidity, variable wind along the range, barrel length, and muzzle-velocity spread.

## 2. Terminal ballistics — continuous media (fruit, wood, gel, clay, bark)

**Poncelet form.** m dv/dt = −A_eff (½ ρ_t C_d v² + R_t), integrated in 0.2 mm steps.

**Projectile behaviour changes A_eff and C_d:**
- **Expansion:** hollow points reach 2.25× area above 250 m/s; soft points reach 3.2× area above 420 m/s.
- **Deformation:** lead and slugs deform.
- **Tumbling:** spitzers tumble after a load-specific depth, raising A_eff toward the side-on area 4L/(πd).

| Medium | ρ_t (kg/m³) | R_t (MPa) | C_d | Tuned to |
|---|---|---|---|---|
| 10% ordnance gel | 1030 | 4.8 | 0.30 | FBI-protocol depths: 9 mm FMJ ≈ 65 cm, 9 mm JHP ≈ 30 cm, 00 buck ≈ 37 cm |
| Watermelon flesh / rind | 950 | 0.4 / 3.0 | 0.30 / 0.35 | (cal) |
| Apple | 850 | 1.0 | 0.30 | (cal) |
| Dry pine | 500 | 42 | 0.80 | board-stack tests (9 mm FMJ ≈ 7 × ¾ in boards) |
| Living wood / bark | 850 / 480 | 30 / 14 | 0.80 | (cal) |
| Armour backing clay | 1650 | 9 | 0.50 | (cal) |

## 3. Terminal ballistics — plates and layers

**Ballistic limit.** De Marre: v_bl = K d^0.75 t^0.7 / √m, with a softness factor for lead, hollow-point and soft-point bullets. A tumbling bullet uses the side-on diameter √(dL).

**Residual velocity.** Lambert: v_r = √(v² − v_bl²).

| Material | K | Notes |
|---|---|---|
| Mild steel | 86 100 | calibrated so .308 150 gr perforates about 9 mm at the muzzle |
| Aluminium | 50 000 | |
| Glass | 9 000 | brittle; cracking is drawn separately from perforation |
| Plastic (ABS) | 12 000 | (cal) |

**Failure mode for metal.**
- **Petalling:** t/d < 0.28, or aluminium.
- **Plugging:** thicker steel.
- **Cratering:** no perforation.

**Stacks (TV, laptop).** Layers are applied in sequence with air gaps.

**Armour.** Rating-based, not a mechanics model. A panel defeats a projectile below a limiting energy per unit presented area:
- NIJ IIIA: 25 J/mm².
- NIJ III: 90 J/mm², capped at 4 kJ.
- Back-face deformation in the clay: IIIA 15 mm + 0.015 mm/J; III 10 mm + 0.0045 mm/J.
- Perforating rounds continue into the clay.
- Ratings describe tested threats; real performance varies by product.

## 4. Temporary cavity (gel)

Cavity radius r_max(x) = √(E′(x) / (π K_gel)), where E′ is the energy deposited per metre and K_gel = 2.2 MJ/m³ **(cal)**. It pulses at a period of 1.2 ms + 0.045 s/m · r_max and decays by 0.4 per pulse. The block surface is displaced by r²/(2ρ), because the gel is incompressible. Radial fissures form after the first collapse.

## 5. Fruit impact model

The fruit model runs as seven steps.

1. **Energy deposition.** E′(x) comes from every projectile's penetration path, summed over pellets for shot.
2. **Cavity size.** r_max = √(E′ / (π K)).
3. **Cavity growth.** Growth follows the cylindrical-cavity energy balance. Incompressible radial flow at q = r dr/dt carries kinetic energy π ρ q² ln(ρ_s / r) per unit length, which equals the remaining work π K (r_max² − r²). That gives **q(r) = √(K (r_max² − r²) / (ρ ln(ρ_s / r)))**, integrated with dt = r dr / q. Collapse mirrors growth.
4. **Rind loading.** Plane-strain incompressibility gives the rind displacement w = r² / (2 ρ_s), hoop strain ε = w / ρ_s, and rind speed v = q / ρ_s.
5. **Rupture.** The rind ruptures at the first time ε > ε_f anywhere in the band ρ_s ≥ 0.75 of the mean radius. Hoop stress in a pressurised shell peaks at the largest radius, and near the entry and exit the flow vents through the holes. Hoop stress opens cracks parallel to the track, so the fruit splits into segments about the track axis.
6. **Fragmentation.** Following Grady–Kipp, fragment size is s = s₀ (rate₀ / ε̇)^(2/3), with ε̇ = v / ρ_s. The number of segments around is 2πρ̄/s, and the number along is πr_x/(1.33 s).
7. **Piece motion.** Each piece takes the least-squares rigid motion that best fits the peak rind velocity field, plus its share of the momentum the bullet lost. Pieces then fly under gravity with quadratic drag and bounce on the floor.

**Ejecta.** Flesh inside the fracture zone leaves as log-normal droplets at the local flow speed q/ρ. Droplets have quadratic drag (k = 0.375 (ρ_air/ρ_w) C_d / r) and splat on the floor. There is also a forward exit plume at 3–22% of exit velocity with a half-angle of about 17°, and a retrograde entry splash that scales with the energy deposited near the entry.

**Fruit that holds.** The rind swells by w(x, t) and recovers. The exit wound is a brittle hole sized from the local cavity, with radial cracks, rind chips, extruded flesh and the plume.

| Constant | Melon | Apple |
|---|---|---|
| K, cavity energy density (cal) | 0.9 MJ/m³ | 3.0 MJ/m³ |
| ε_f, rind failure strain (cal) | 3.5% | 6% |
| s₀ at rate₀, fragment size (cal) | 12 cm at 200 s⁻¹ | 3.5 cm at 400 s⁻¹ |
| Rind / skin thickness | 1.1 / 0.12 cm | 0.16 / 0.08 cm |

**Predicted outcomes, melon at 3 m, before calibration.**

| Result | Rounds |
|---|---|
| Holds, ε_max 1–2% | .22 LR, 9 mm FMJ, .45 ACP |
| Borderline | 9 mm JHP |
| Ruptures, pieces at 7–26 m/s | 5.56, 7.62×39, .308, 12 ga slug, 00 buck, and birdshot at close range |

### Calibrating against high-speed footage

The three calibration sliders under "Impact model calibration" scale K, ε_f and s₀. Adjust them in this order:

1. **Cavity energy density:** match the peak swell of the fruit, measured from frames just before rupture.
2. **Rind failure strain:** match the time from entry to the first visible crack. At 10,000 fps that is a frame count.
3. **Fragment size:** match the number of large rind pieces.

Record the fruit's mass, dimensions and rind thickness. Those set ρ_s, the geometry and the inertia. The piece velocities 5–20 ms after rupture are an independent check; they should come out without further tuning.

## 7. Shot-to-shot variation

Every shot draws fresh values from normal distributions (z ~ N(0,1), clamped at ±2.5σ):

| Quantity | Model | σ |
|---|---|---|
| Muzzle velocity | v₀ = v_nom + 0.55 m/s/°C · (T − 15 °C) + σ_v z | rimfire 4.5, handgun 5.5, rifle 3.5, shotgun 6 m/s |
| Ballistic coefficient | BC (1 + 0.012 z) | 1.2 % |
| Aim / precision | δ = (MOA / 2.5) · 2.909×10⁻⁴ · z, elevation and azimuth | rimfire 1.2, handgun 4, rifle 1.0, shotgun 3 MOA groups |
| Wind | speed × (1 + 0.18 z), direction + 0.7 z clock-hours | |
| Yaw onset depth | × (1 + 0.25 z) | |
| Target strength / density / plate thickness | × (1 + 0.10 z), × (1 + 0.04 z), × (1 + 0.03 z) | |
| Fruit K, ε_f, fragment size, ripeness | × (1 + 0.10 z), × (1 + 0.12 z), × (1 + 0.20 z), + 0.12 z | |

Turn on **Equations** to see this shot's draws and every calculation with its numbers.

## 8. Ripeness: pre-tensioned rind and crack growth from holes

A ripe rind carries built-in hoop tension, ε₀ = 3 % × ripeness. It has two effects:

- **It adds to the cavity strain in the rupture test:** ε = r²/(2ρ_s²) + ε₀.
- **It turns a hole into a crack starter.** The stress intensity at a hole of radius a is K_I = 1.12 E ε₀ √(πa); a is the bullet radius at entry, or the blown-out exit radius.

If K_I > K_Ic, a crack runs round the fruit at v_c. It splits in two after πρ̄/v_c, driven apart by the stored strain energy U = ½ E ε₀² V_rind (v = √(2U/M)).

| Constant (cal) | Melon | Apple |
|---|---|---|
| Rind modulus E | 8 MPa | 12 MPa |
| Fracture toughness K_Ic | 17 kPa·√m | 9 kPa·√m |
| Crack speed v_c | 80 m/s | 60 m/s |

With these values, at default ripeness (0.35) a standard .22 LR usually leaves two holes, and a 9 mm FMJ is borderline. At ripeness 0.7 or above, a .22 LR hole is enough to split the melon. Hyper-velocity .22 hollow points (CCI Stinger, .22 WMR) deposit enough energy early to burst it hydrodynamically.

## 9. Specifications

The **Specs** toggle shows the round's table and labelled dimensions on the 3D cartridge:

- **Cartridge:** case length, overall length, rim, base, shoulder and neck diameters, primer and case type.
- **Bullet:** weight, diameter, length, sectional density and G1 BC.
- **Performance:** muzzle velocity with its modelled σ, muzzle energy, momentum, twist, spin rate and stability.
- **Shotshells:** bore, payload, pellet size and count.

Dimensions are SAAMI/CIP nominal where a standard exists; loads are typical published data.

## 10. Barrel and internal ballistics

Barrel length changes muzzle velocity through a lumped gas-work model that needs no propellant data. Propellant gas expands adiabatically from the case volume V₀ behind a base of area A:

**E(x) = C [1 − (V₀ / (V₀ + A x))^(γ−1)] − F_f x**, γ = 1.25, v(x) = √(2E/m)

- **C:** fitted so the published velocity comes out of the published test-barrel length (rifles mostly 24", 5.56 20", 7.62×39 16.3", pistols 4–6", rimfire 18–20", shotguns 28–30").
- **F_f, bore friction (cal):** takes 3% of the muzzle energy over the test barrel, or 11% for rimfire, so .22 LR velocity levels off around 16–24".
- **V₀ (model):** case capacity estimated from case dimensions.

Checks:

| Cartridge | Barrel → muzzle velocity | Comment |
|---|---|---|
| .308 | 24" 860 m/s, 16" 805 m/s, 10.5" 735 m/s | about 23 ft/s per inch |
| 9 mm | 2" 303 m/s, 4" 350 m/s, 16" 397 m/s | |
| 5.56 | 20" 988 m/s, 16" 951 m/s | about 30 ft/s per inch |

**Pressure shape in the bore (illustrative).** p(x) = p_pk (x/x_pk) e^(1 − x/x_pk), with p_pk = 85% of the SAAMI/CIP maximum average pressure and x_pk = 5 calibres. This is not a pressure measurement. The physically implied mean effective pressure E(x_L)/(A x_L) is also shown.

**Free recoil.** Bullet momentum only: V = m v / M_gun. Propellant gas adds roughly a third.

## 11. No barrel (cook-off)

A cartridge that fires outside a chamber can't build pressure: the case splits and the gas escapes. A small fraction η of the normal energy, 0.25–0.4% (cal), is shared between bullet and case, with equal and opposite momentum:

**m_b v_b = m_c v_c, ½ m_b v_b² + ½ m_c v_c² = η E_normal**

The case mass is estimated from its wall area, thickness and brass density. For a .308 this gives a bullet at about 32 m/s and the case at about 25 m/s with about 9 J, against 3.6 kJ from a barrel. That is consistent with the industry finding that loose ammunition in a fire is far less dangerous than a fired round; the case fragments are the main hazard.

## 12. Known limitations

- **Axisymmetric cavity.** Real tracks curve after yaw; fragmenting bullets such as M193 in tissue are not modelled; bullet deflection inside the target is not modelled.
- **Plane-strain loading, rigid pieces.** The rind is treated as a thin brittle shell with a single failure strain, with no rate dependence beyond Grady scaling. Pieces are rigid after rupture and do not re-fracture on landing.
- **Square-on hits only.** There are no obliquity effects and no ricochet.
- **Fitted drag and penetration constants.** They are calibrated to public test data where available and marked (cal) otherwise. Treat outputs as model predictions to compare against experiment, not as measurements.
