Conversation
The taper ran against the correction's own trend: 0.26*ln(dv) + 0.0042*ln(dv)^3 increases monotonically with dv, so tapering it to zero below dv = 0.1 km/s put a spurious minimum at dv = 0.1, where tau dipped to 52% of its uncorrected value and rose again on both sides. Flooring dv at dv_min keeps the correction monotonic, drops the separate dv <= 0 branch, and holds the fit at the edge of its calibrated range rather than extrapolating a new shape into it. Photometric masses change by under 1.5% for well-decelerating meteors, and by up to ~40% for weakly decelerating ones or light curves peaking early, which is where the taper distorted the integrand most. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Follow-up to 096398e, which correctly identified that the ReVelle & Ceplecha (2001)
deceleration correction
diverges to -inf as dv -> 0 and silently returned NaN for vel > v_init. Both problems are
real and the bound was needed. This PR keeps the bound but changes its shape.
The issue with the linear taper is that it runs against the correction's own trend.
fis strictly increasing in dv everywhere:The taper,
(dv/dv_min)*f(dv_min), is decreasing in dv. Splicing them puts a spuriouslocal minimum at exactly dv = dv_min:
tau dips to 52% and climbs back on both sides, so the mass integrand carries a local
bump of x1.92 at dv = 0.1 km/s. The splice is also a sharp V: the derivative jumps from
-6.5 to +3.27.
Two further consequences:
falls as dv falls; the taper returns tau to its fully uncorrected value at dv -> 0.
trajectory now crosses three regimes in a fraction of a second: dv <= 0 (no correction),
the taper, then f.
What this changes
Floor the argument rather than reshaping the output:
This holds the fit at the edge of its calibrated range instead of extrapolating a new
functional form into a region where RC2001 was never constrained — the standard way to
handle extrapolation beyond a fit's validity. It also removes the separate
dv <= 0branch:
dv_eff >= dv_min > 0makes the NaN unreachable by construction, so the guard isno longer a special case. Net -1 line.
The trade-off, stated plainly: the floor asserts tau x0.52 where no deceleration is
measurable, whereas the taper asserted no correction at all. Neither is measured — RC2001
has no calibration at dv -> 0 — but the floor does not invent a shape, and it keeps the
correction monotonic.
Measured impact on photometric mass
Synthetic light curves, 100 Hz, v_init = 20 km/s, RC2001 Type II:
Negligible for well-decelerating meteors with late peaks; the large differences are exactly
the weakly-decelerating and early-flare cases where the taper distorted the integrand most.
Verification
Against the compiled extension, not a reimplementation:
wmpl/MetSim/Tests/test_MetSimErosion.pypassesDocstring and the
calcMass()WARNING text inPhysics.pyupdated, since both describedthe taper.
🤖 Generated with [Claude Code]