WARNING_SPIN_EFFECT_ASSUMED_TWIST_RATE

Constant WARNING_SPIN_EFFECT_ASSUMED_TWIST_RATE 

Source
pub const WARNING_SPIN_EFFECT_ASSUMED_TWIST_RATE: &str = "spin_effect_assumed_twist_rate";
Expand description

A spin-driven effect (effects.magnus or effects.enhanced_spin_drift) was enabled while the request left rifle.twist_rate_m_per_turn to its default (MBA-1484).

Both models are functions of the spin the rifling imparts, so both read the twist rate — enhanced spin drift through the muzzle gyroscopic stability factor that scales the Litz drift, Magnus through the spin rate that sets its side force and yaw of repose. Omitting the field does NOT disable either one and does not zero it: resolve_rifle substitutes DEFAULT_TWIST_RATE_M_PER_TURN (0.3048 m, exactly 1:12 inches) and the solve runs against that barrel, producing a confident number for a rifle the caller does not own. The early return in TrajectorySolver::apply_spin_drift for a non-positive twist is real but is unreachable from here, because the default is applied long before the solver sees the field.

Measured on a .308 175 gr at 800 m: enhanced_spin_drift reports summary.spin_drift_m = 0.1832 m with the twist omitted and the identical 0.1832 m with 1:12 stated — the omission is not a distinguishable request — while a stated 1:8 gives 0.3163 m, 73% more. Magnus’s contribution is far smaller in absolute terms (it moved the 800 m drop by 0.19 mm at the assumed 1:12) but is no less twist-bound: at a stated 1:6 the same contribution is 0.75 mm, four times as large. In neither case is the dependence visible in the response, because both models are folded into the trajectory columns rather than reported separately — summary.spin_drift_m is the one exception, and it reports the number, not the barrel it came from.

The assumption notice for the default itself is still emitted; this one exists because it says “a default was applied” without saying that anything now depends on it.

This code covers the two opt-in models only. The twist is read on EVERY solve by summary.stability_factor, which has its own WARNING_STABILITY_FACTOR_ASSUMED_TWIST_RATE; both fire together when a spin effect is enabled without a stated twist.