# Estimated coefficients

Which typical values the Spin model starts from when it has to estimate a bullet's aerodynamic coefficients from its weight, size, length and construction.

## Generated table

**Setting:** Estimated coefficients

| Choice | Used by |
|---|---|
| Standard coefficients (current) | Standard, Physics, Classic, Spin |
| Original coefficients | Custom only |

## What it does

The Spin model flies the bullet with aerodynamic coefficients (the overturning moment, the lift, the Magnus push, the spin damping). A bullet nobody has measured has no set of them, so the solver estimates the set from the bullet's weight, diameter, length, construction, tip, the twist and the muzzle velocity. This setting chooses the typical values that estimate uses where the bullet's own shape cannot tell it.

- **Standard coefficients (current, default):** typical values from published measurements on rifle bullets. The overturning moment grows as the bullet slows, the lift falls below twice the speed of sound, the spin decays a little faster, and the small angle the bullet flies at to its path (the yaw of repose) counts every force that bends the path.
- **Original coefficients:** the first public values. They are textbook constants that stay the same at every speed, with a slightly weaker spin damping, and the yaw of repose counts gravity and the Earth's turning only.

Both give the same Magnus push (0.50 up to twice the speed of sound, then falling 0.10 per Mach), the same lift line in the bullet's length and the same rule for the overturning moment at the muzzle. A third set sits in the code between them (the Original values plus the Mach slopes and spin damping, but not the all-forces yaw); it cannot be chosen, and the project's option list records it. The setting does nothing on a point-mass model, and nothing when the profile has a coefficient set attached. A bullet under 2 calibers long gets no estimate and the solve runs as point mass, saying so.

## When to choose it

Leave it on Standard. Choose Original to compare with results worked out before the Mach slopes were added, or to see how much of a spin-drift figure rests on the estimate: the table in On a real shot shows the Original values moving the windage correction by about half a mil or more toward the left on a 3,520 yd shot. Both are low-confidence estimates, so check either against your own groups. The bullet's length, construction and tip change the estimate too (in the table the first column differs from the second only in those); if a coefficient set is attached to the profile, this setting is unused.

## How to picture it

Picture three curves drawn against Mach number, for a bullet that starts near Mach 2.7 and slows to subsonic. The overturning moment (how hard the air tries to tip the nose further from the path) is a line that rises as the bullet slows under Standard, and a flat line under Original. The lift is a line that falls below Mach 2 under Standard (flat above it) and a flat line under Original. The spin-rate curve decays along the flight, and decays a little faster under Standard.

At the muzzle the two moment curves meet: both are pinned to the stability a well-known rule of thumb gives for that bullet. Downrange they part. Under Standard the moment is larger and the lift smaller, so the nose sits at a smaller angle to the path and pushes sideways less, and the spin drift (the sideways lift added up along the path) is smaller. Under Original the nose angle stays larger as the bullet slows and the drift is bigger. A second diagram: the estimate as a recipe, bullet measurements in, then inertia, then a muzzle stability rule that fixes the moment, then the lift line, with the typical values entering at the last steps.

## The math

Inputs: weight $w$ (grains), diameter $d$ (in), length $L$ (in), twist $T_w$ (in per turn), muzzle velocity $v_0$ (ft/s), and optionally the construction (lead-core, the default, or monolithic) and the tip length $\tau_0$ (in).

| Symbol | Meaning | Unit |
|---|---|---|
| $l,\ l_m$ | overall length $L/d$; metal length $(L-\tau)/d$ (equals $l$ with no tip) | calibers |
| $\tau$ | the tip used: $\tau_0$ if $0<\tau_0<L$, else 0 | in |
| $t$ | twist in calibers, $T_w/d$ | calibers per turn |
| $m,\ d_m,\ v$ | mass $w\cdot 6.479891\times10^{-5}$; diameter $d\cdot0.0254$; muzzle speed $v_0\cdot0.3048$ | kg, m, m/s |
| $i_x,\ i_y$ | $I_x/(m d_m^2)$ and $I_y/(m d_m^2)$, the inertia ratios about the axis and across it | none |
| $p_0$ | initial spin rate, $2\pi v/(T_w\cdot0.0254)$ | rad/s |
| $\mathrm{Sg}_M$ | Miller's gyroscopic stability at standard conditions | none |
| $\rho_s,\ c_s$ | standard air density 1.225 and speed of sound 340.294 | kg/m³, m/s |
| $M_0$ | muzzle Mach number in standard air, $v/c_s$ | none |
| $C_{M\alpha},\ C_{L\alpha},\ C_{Np\alpha}$ | overturning-moment, lift and Magnus slopes at Mach $M$ | 1/rad |
| $c_m,\ c_l,\ c_n$ | the same three at Mach 2 | 1/rad |
| $r_m,\ r_l$ | relative Mach slopes of the moment and the lift, per Mach | 1/Mach |
| $C_{lp},\ C_{D\alpha^2}$ | spin damping; yaw drag | none, 1/rad² |

**The rule sets.** Each is a short list of numbers. Standard is the newest public set; the middle column is in the code only.

| | Original | In the code only | Standard (current) |
|---|---|---|---|
| lift line $c_l=c_0+c_1\,l$ | $1.6+0.2\,l$ | same | same |
| moment slope $r_m$ | 0 (flat) | $-0.15$ | $-0.15$ |
| lift slope $r_l$ | 0 (flat) | $+0.20$, below Mach 2 only | $+0.20$, below Mach 2 only |
| spin damping $C_{lp}$ | $-0.012$ | $-0.0135$ | $-0.0135$ |
| yaw drag $C_{D\alpha^2}$ | 0 | 0 | 0 |
| Magnus $c_n$ (at and below Mach 2); slope $\sigma_n$ above | 0.50; $-0.10$ per Mach | same | same |
| yaw of repose | gravity only | gravity only | all forces |

Standard is the code-only set with the all-forces yaw of repose. The slopes and the damping are the public medians (rounded) of spark-range and wind-tunnel measurements on rifle bullets and shells: McCoy, BRL-MR-3733 (1988), BRL-MR-3810 (1990) and BRL-MR-3476 (1985); Piddington, BRL-MR-1833 (1967); Silton and Howell, ARL-TR-5182 (2010); Baranowski (2013) for the damping. The moment slope is the median over twelve bullets (range $-0.09$ to $-0.20$), the lift slope the median over twelve (range $+0.04$ to $+0.37$), and the lift line is the one thirteen bullets confirm. The Magnus value is the median firing-table value of Lieske, BRL-MR-3870 (1990), with the fall above Mach 2 from the wind-tunnel data of Nietubicz and Opalka, ARBRL-MR-02991 (1980) and the level below Mach 2 from Jenke and Shadow, AEDC-TR-75-40 (1975). The yaw of repose from all forces is the method of STANAG 4355 Ed. 4 (ČOS 109001, eqs. 6 and 14), shown on [yawRepose](yawRepose.md).

**Refusal.** Nothing is estimated unless $L,\ d,\ w,\ T_w,\ v_0$ are all positive numbers and $l\ge2$. Inside a solve the profile check has already refused a non-positive length, diameter, weight or twist, and a tip that is negative or not shorter than the bullet, so only "under 2 calibers" or a non-positive muzzle velocity reaches this refusal.

**Step 1, inertia** (the tip is taken as massless). With the construction lead-core:

$$i_x=0.11 \qquad i_y=\frac1{16}+\frac{0.55}{12}\,l_m^{2}$$

(the 0.11 is a typical axial figure, McCoy, *Modern Exterior Ballistics*, ch. 2; the transverse form is an assumption of the solver). With the construction monolithic the bullet is a homogeneous solid whose radius $r(x)$, in calibers at $x$ calibers from the base, is laid out on the overall length: a tangent ogive over the front $N=0.6\,l$, a cylinder of radius 0.5, and a boat tail of length $b=\max\big(0,\min(0.5,\ l-N)\big)$ tapering to radius 0.4 at the base:

$$r(x)=\begin{cases}0.4+0.1\,x/b & x<b\\ \max\!\Big(0,\ \sqrt{\max(0,\,R^{2}-(N-s)^{2})}-(R-0.5)\Big),\ s=l-x & s<N\\ 0.5 & \text{otherwise}\end{cases}\qquad R=N^{2}+0.25$$

The cases are tested in that order. Only the metal is integrated, from the base to $x=l_m$ (the tip's end of the shape is cut off). The density cancels:

$$i_x=\frac{\int_0^{l_m} r^{4}\,dx}{2\int_0^{l_m} r^{2}\,dx}\qquad i_y=\frac{\int_0^{l_m} r^{2}\big(r^{2}/4+(x-x_c)^{2}\big)dx}{\int_0^{l_m} r^{2}\,dx}\qquad x_c=\frac{\int_0^{l_m} x\,r^{2}\,dx}{\int_0^{l_m} r^{2}\,dx}$$

computed by Simpson's rule on 2,000 intervals.

**Step 2, the muzzle stability and the overturning moment.** Miller's rule, in the form with the metal length in the $(1+l^2)$ term when a tip is given (Courtney and Miller, 2012), is

$$\mathrm{Sg}_M=\frac{30\,w}{t^{2}\,d^{3}\,l\,(1+l_m^{2})}\Big(\frac{v_0}{2800}\Big)^{1/3}$$

($w$ in grains, $d$ in inches, $v_0$ in ft/s). The moment is set so that the stability the Spin model computes at the muzzle, in standard air, equals it. The Spin model's stability (see [dynamics](dynamics.md)) is $2I_x^2p^2/(\pi\rho\,d_m^3I_yV^2C_{M\alpha})$, which with the ratios above reduces to

$$C_{M\alpha}(M_0)=\frac{2\,i_x^{2}}{i_y}\;\frac{m\,p_0^{2}}{\pi\,\rho_s\,d_m\,v^{2}\,\mathrm{Sg}_M}$$

The value stored is the one at Mach 2, so that the Mach slope reproduces $C_{M\alpha}(M_0)$ at the muzzle:

$$c_m=\frac{C_{M\alpha}(M_0)}{\max\big(1+r_m\,(M_0-2),\ 0.05\big)}\qquad \sigma_m=r_m\,c_m$$

**Step 3, the other coefficients.** The lift at Mach 2 is $c_l=1.6+0.2\,l$ (the overall length, not the metal length), with slope $\sigma_l=r_l\,c_l$. The Magnus value is $c_n=0.50$ with slope $\sigma_n=-0.10$. Writing $\mathrm{lin}(c,\sigma,M)=\max\big(c+\sigma\,(M-2),\ 0.05\,c\big)$, the coefficients the flight uses are

$$C_{M\alpha}(M)=\mathrm{lin}(c_m,\sigma_m,M)\qquad C_{L\alpha}(M)=\mathrm{lin}\big(c_l,\sigma_l,\min(M,2)\big)\qquad C_{Np\alpha}(M)=\mathrm{lin}\big(c_n,\sigma_n,\max(M,2)\big)$$

For Original there is no moment slope and no lift slope ($\sigma_m=\sigma_l=0$), so $C_{M\alpha}=c_m=C_{M\alpha}(M_0)$ and $C_{L\alpha}=c_l$ at every Mach. $C_{lp}$ and $C_{D\alpha^2}$ are the constants in the table. The set is marked `estimated`, confidence low, and Standard marks its yaw of repose as all forces (Original leaves the field out, which means gravity only). The equations of motion that use these numbers are on [dynamics](dynamics.md); this setting changes none of them.

**By hand.** (1) Convert; get $l$, $l_m$, $t$, $m$, $d_m$, $v$, $p_0$. (2) The inertia ratios. (3) $\mathrm{Sg}_M$. (4) $C_{M\alpha}(M_0)$, then $c_m$ and $\sigma_m$. (5) $c_l$ and $\sigma_l$. (6) Read $C_{lp}$, $C_{D\alpha^2}$, $c_n$, $\sigma_n$ and the yaw form from the table.

**How close the muzzle stability is to Miller's.** The moment is pinned only at the muzzle in standard air. The Spin model's stability varies as $1/\rho$, so in the air of the shot its muzzle stability differs from $\mathrm{Sg}_M$ roughly in the ratio $\rho_s/\rho$: about a quarter higher in the thin air of the probe shot, and the muzzle Mach number differs a little too. The linear-theory crosswind jump of the Spin block (see [dynamics](dynamics.md)) uses $C_{L\alpha}/C_{M\alpha}$ at the muzzle Mach number; for a muzzle above Mach 2 the lift is flat in both sets and the moment is the pinned value in both, so the choice leaves that jump about the same.

## The algorithm

Where it runs: in `resolveDynamics`, once per solve, only when the dynamics is the Spin model and the profile has no coefficient set.

```text
resolveDynamics(profile, options)
  1. if dynamics is point mass:                                    return point mass
  2. if the profile carries a coefficient set:                     use it; estimatorRules is not read
  3. else: rules = estimatorRulesFor(options.estimatorRules)
  4.       set   = estimateAero(bullet, twist, muzzle velocity, rules)
  5. if set is none:                                               return point mass, aero_source 'none: bullet shorter than 2 calibers'
  6. the empirical and 'mpm' branches follow (see dynamics)

estimatorRulesFor(choice)
  1. if a rule set was installed at run time:                      use it (a rule set served to the account at run time)
  2. if choice == 'original':                                      return the original set
  3. return the standard set                                       // 'current', and anything else

estimateAero(bullet, twist, muzzle velocity, rules)
  1. if any of length, diameter, weight, twist, velocity is not > 0:   return none
  2. l = length / diameter;  if l < 2:                                 return none
  3. tip = tip length if 0 < tip < length else 0;  l_m = (length - tip)/diameter if tip else l
  4. (i_x, i_y) = inertiaRatios(length, diameter, construction, tip)
  5. p0, Sg_M (Miller, with l_m), C_Malpha(M0) from the muzzle identity
  6. c_m = C_Malpha(M0) / max(1 + r_m*(M0 - 2), 0.05);  sigma_m = r_m*c_m   (no slope field when r_m is 0)
  7. c_l = c0 + c1*l;  sigma_l = r_l*c_l, limited to below Mach 2 when the rules say so   (no slope field when r_l is 0)
  8. Magnus c_n and slope sigma_n = c_n * (rules' relative slope), when the rules give a Magnus value
  9. C_lp, C_Dalpha2 from the rules;  yaw of repose 'full' only when the rules say 'full'
 10. return the set: source 'estimated', confidence 'low', an id naming the rules and the bullet

inertiaRatios(length, diameter, construction, tip)
  1. the tip counts only if > 0
  2. if monolithic:  integrate the assumed shape over the metal length (Simpson, 2000 intervals)
  3. else:           i_x = 0.11,  i_y = 1/16 + 0.55*l_m^2/12   with l_m from the metal length

the flight evaluates lin(...) of Step 3 at each Mach
```

Steps 5 to 9 of `estimateAero` are the only place the rule sets and the bullet meet: the rules supply $r_m$, $r_l$, the lift line, the damping, the Magnus value and the yaw form, and the bullet supplies everything else.

## On a real shot

Read from the tables below; every decimal in these sentences is copied from them. The solves used the Spin model with a public estimate (the aero source named an estimate with the public rules of each value, never a fitted set).

**The windage.** In the first table, moving from Standard to Original changes the windage by -0.464 mil on the lead-core bullet (North, level) and -0.609 mil on the monolithic tipped bullet, about the same on the other headings and slopes (-0.462 east, -0.452 on the downhill shot): Original predicts more spin drift to the right, so the correction moves to the left. The second and third tables hold the yaw of repose to one form for both values and the windage change stays near -0.461 and -0.456 (North, level), so almost all of it comes from the coefficients, not from the yaw form. Under Original the moment is the pinned muzzle value at every speed, while under Standard it grows as the bullet slows, so downrange the Standard nose angle is smaller than the Original one; the Standard lift is also smaller below Mach 2, and the stronger spin damping lowers the spin and with it the angle. All three cut the sideways lift that makes spin drift; the moment slope and the lift slope each account for a similar share, the damping for a smaller one.

**The elevation.** The elevation changes are a few thousandths of a mil to a few hundredths. They are -0.008 for the lead-core bullet and -0.002 for the monolithic one in the first table, where each value brings its own yaw form. With the gravity-only form held for both the change is -0.027 (North, level), and with the all-forces form it is -0.050. The Standard slopes ask for more elevation (they shrink the yaw and with it the Magnus push), and the Standard yaw form gives part of that back; the tables do not separate the two further. Arrival speed is unchanged to a tenth of a foot per second except for the monolithic bullet in the second and third tables (-0.1).

**Other settings of the Spin block.** The choice does not act alone. With the lift below the speed of sound reduced for both values, the windage change falls from -0.464 to -0.314 (North, level; -0.609 to -0.412 on the monolithic bullet), because the reduction replaces the lift line below Mach 1 in both sets. With the Magnus push off for both values, the elevation change becomes +0.018 (North, level; +0.032 on the monolithic bullet) in place of -0.008: the sign reverses. In this table each value keeps its own form of the yaw of repose, so what is left with the Magnus push off is the Standard set's all-forces form, which lowers its come-up through the lift; the Magnus push supplies the rest of the -0.008.

**Each value as a change from the Spin model, each with its own yaw of repose**

The shot: a 350 gr 0.375 in bullet at 3048 fps muzzle velocity, fired at 3520 yd in air of 60 °F, 40 % humidity, 24.43 inHg at the firing line, latitude 42.1°, wind 10 mph from the right (90° to the line of fire), the same wind in every column; site altitude 5,500 ft. In the app, type it as "Site altitude" (shown when the profile's model reads one); left blank, the classic values count from sea level and can differ from this table. All other settings are the Spin model's. In the first column (North, level, monolithic tipped bullet) the reference arc reaches 220 ft above the line of sight at 2150 yd. Compared with the first column, the bullet differs in "North, level", "East, level", "North, 10° uphill" and "North, 10° downhill".

| Value | Shown in the app as | North, level, monolithic tipped bullet | North, level | East, level | North, 10° uphill | North, 10° downhill |
|---|---|---|---|---|---|---|
| `'current'` | Standard coefficients (current) | reference | reference | reference | reference | reference |
| `'original'` | Original coefficients | -0.002 / -0.609 / 0.0 | -0.008 / -0.464 / 0.0 | -0.008 / -0.462 / 0.0 | -0.008 / -0.462 / 0.0 | -0.007 / -0.452 / 0.0 |

**The same, with the yaw of repose from gravity only for both values**

The shot: a 350 gr 0.375 in bullet at 3048 fps muzzle velocity, fired at 3520 yd in air of 60 °F, 40 % humidity, 24.43 inHg at the firing line, latitude 42.1°, wind 10 mph from the right (90° to the line of fire), the same wind in every column; site altitude 5,500 ft. In the app, type it as "Site altitude" (shown when the profile's model reads one); left blank, the classic values count from sea level and can differ from this table. All other settings are the Spin model's, except: Yaw of repose: From gravity only. In the first column (North, level, monolithic tipped bullet) the reference arc reaches 221 ft above the line of sight at 2150 yd. Compared with the first column, the bullet differs in "North, level" and "East, level".

| Value | Shown in the app as | North, level, monolithic tipped bullet | North, level | East, level |
|---|---|---|---|---|
| `'current'` | Standard coefficients (current) | reference | reference | reference |
| `'original'` | Original coefficients | -0.036 / -0.603 / -0.1 | -0.027 / -0.461 / 0.0 | -0.027 / -0.459 / 0.0 |

**The same, with the yaw of repose from all forces for both values**

The shot: a 350 gr 0.375 in bullet at 3048 fps muzzle velocity, fired at 3520 yd in air of 60 °F, 40 % humidity, 24.43 inHg at the firing line, latitude 42.1°, wind 10 mph from the right (90° to the line of fire), the same wind in every column; site altitude 5,500 ft. In the app, type it as "Site altitude" (shown when the profile's model reads one); left blank, the classic values count from sea level and can differ from this table. All other settings are the Spin model's, except: Yaw of repose: From all forces. In the first column (North, level, monolithic tipped bullet) the reference arc reaches 220 ft above the line of sight at 2150 yd. Compared with the first column, the bullet differs in "North, level" and "East, level".

| Value | Shown in the app as | North, level, monolithic tipped bullet | North, level | East, level |
|---|---|---|---|---|
| `'current'` | Standard coefficients (current) | reference | reference | reference |
| `'original'` | Original coefficients | -0.075 / -0.595 / -0.1 | -0.050 / -0.456 / 0.0 | -0.050 / -0.454 / 0.0 |

**The same, with the lift below the speed of sound reduced for both values**

The shot: a 350 gr 0.375 in bullet at 3048 fps muzzle velocity, fired at 3520 yd in air of 60 °F, 40 % humidity, 24.43 inHg at the firing line, latitude 42.1°, wind 10 mph from the right (90° to the line of fire), the same wind in every column; site altitude 5,500 ft. In the app, type it as "Site altitude" (shown when the profile's model reads one); left blank, the classic values count from sea level and can differ from this table. All other settings are the Spin model's, except: Lift below the speed of sound: Reduced. In the first column (North, level, monolithic tipped bullet) the reference arc reaches 220 ft above the line of sight at 2150 yd. Compared with the first column, the bullet differs in "North, level" and "East, level".

| Value | Shown in the app as | North, level, monolithic tipped bullet | North, level | East, level |
|---|---|---|---|---|
| `'current'` | Standard coefficients (current) | reference | reference | reference |
| `'original'` | Original coefficients | -0.007 / -0.412 / 0.0 | -0.010 / -0.314 / 0.0 | -0.010 / -0.312 / 0.0 |

**The same, with the Magnus push off for both values**

The shot: a 350 gr 0.375 in bullet at 3048 fps muzzle velocity, fired at 3520 yd in air of 60 °F, 40 % humidity, 24.43 inHg at the firing line, latitude 42.1°, wind 10 mph from the right (90° to the line of fire), the same wind in every column; site altitude 5,500 ft. In the app, type it as "Site altitude" (shown when the profile's model reads one); left blank, the classic values count from sea level and can differ from this table. All other settings are the Spin model's, except: Magnus force: Off. In the first column (North, level, monolithic tipped bullet) the reference arc reaches 221 ft above the line of sight at 2150 yd. Compared with the first column, the bullet differs in "North, level" and "East, level".

| Value | Shown in the app as | North, level, monolithic tipped bullet | North, level | East, level |
|---|---|---|---|---|
| `'current'` | Standard coefficients (current) | reference | reference | reference |
| `'original'` | Original coefficients | +0.032 / -0.604 / 0.0 | +0.018 / -0.461 / 0.0 | +0.018 / -0.459 / 0.0 |

Each cell is the change from the reference row (`'current'`) in the same shot, as elevation (mil) / windage (mil) / velocity at the target (fps). Elevation: plus means more elevation must be dialed. Windage: plus means the windage correction moves to the right (dial further right); this is a correction, not where the bullet lands. Velocity: plus means the bullet arrives faster. A zero means no difference at the shown precision.

---

[All reference pages](../index.md)
