Motivation
Toro clast-attrition work surfaced a non-obvious identifiability property of the
current model that is easy to get wrong and deserves to be written down: a
large part of "fragmentation" is already represented by the fitted source clast
size D0 (mu0). This issue is to document what the current model separates
and what it cannot, so users don't add redundant parameters or misread results.
(The actual new fragmentation work is tracked separately — see the companion
issue.)
Key result: near-source fragmentation ≡ a smaller D0
Fragmentation conserves gravel mass, multiplies count, and shrinks size. Splitting
one source clast of diameter D0 into N pieces near the source gives:
- mass: unchanged
- Wolman area-count (∝ M/D): ×
N^{1/3}
- mean size:
D0 → D0·N^{−1/3}
The model carries count amplitude ∝ c_k/D0_k and size intercept mu0_k = ln D0_k.
So reducing the fitted D0 by N^{−1/3} reproduces one-time near-source
fragmentation exactly (mass untouched, area-count ×N^{1/3}, size ×N^{−1/3}).
Since mu0/D0 is fit per lithology whenever the count/size channels are active,
near-source fragmentation is perfectly degenerate with D0 and is not a
separately identifiable parameter. A constant-rate g calibrated to it merely
fights mu0.
Corollary: D0 absorbs everything near the source
D0 does not isolate near-source fragmentation — it absorbs all near-source
size determination, conflated: (a) near-source fragmentation and (b) the
intrinsic production clast size (mineral grain size, bedding / foliation spacing,
joint density). With no independent measurement of the pre-fragmentation
production size, these cannot be separated — D0 is the single "effective source
clast size" that lumps them. So the model can say what the effective source size
is, not how much of it is fragmentation vs. how the clast was born. (Schist is
the clean example: small field clasts could be near-source fragmentation or simply
being born small/platy — both live in the same D0.)
Empirical confirmation (Toro)
Production-on, lab-prior fit — fitted D0 vs. measured field clast sizes:
| lith |
fitted D0 [mm] |
±1σ |
field geomean |
field p90 |
source-proximal |
n |
| granite |
60.8 |
28.7 |
57.5 |
266 |
19.2 |
117 |
| cretaceous |
48.6 |
53.3 |
32.2 |
114 |
48.8 |
36 |
| quartzite |
42.3 |
9.3 |
40.1 |
114 |
43.7 |
410 |
| schist |
43.2 |
6.4 |
27.0 |
82 |
34.8 |
2406 |
| volcanics |
31.9 |
17.4 |
30.7 |
84 |
28.2 |
75 |
Fitted D0 tracks the measured sizes for every lithology (no anomalous shrinkage),
so D0 absorbs near-source size determination cleanly without distorting the size
channel. D0 is well-constrained only where clasts are abundant (quartzite ±9,
schist ±6); loose elsewhere.
Scope of this issue (documentation only)
- Document the process model in
attrition.py: abrasion (mass at a, Wolman count
at 2a/3, size at a/3), the existing fragmentation(g) block, production
(c_k), and D0/mu0.
- State the near-source-fragmentation =
D0 degeneracy explicitly (the math
above) in the docstrings and a docs/ section "what the model can and cannot
identify."
- Document the conflation corollary:
D0 absorbs all near-source size
determination (fragmentation + intrinsic production size), inseparable without a
pre-fragmentation production-size measurement.
- Note the corollary: only distributed fragmentation (count growing / size
shrinking with distance) is separately identifiable — pointer to the companion
build issue.
Acceptance
- A
docs/ section (or extended module docstring) covering the above, including
the identifiability statement, the conflation corollary, and the empirical check.
🤖 Generated with Claude Code
Motivation
Toro clast-attrition work surfaced a non-obvious identifiability property of the
current model that is easy to get wrong and deserves to be written down: a
large part of "fragmentation" is already represented by the fitted source clast
size
D0(mu0). This issue is to document what the current model separatesand what it cannot, so users don't add redundant parameters or misread results.
(The actual new fragmentation work is tracked separately — see the companion
issue.)
Key result: near-source fragmentation ≡ a smaller
D0Fragmentation conserves gravel mass, multiplies count, and shrinks size. Splitting
one source clast of diameter
D0intoNpieces near the source gives:N^{1/3}D0 → D0·N^{−1/3}The model carries count amplitude ∝
c_k/D0_kand size interceptmu0_k = ln D0_k.So reducing the fitted
D0byN^{−1/3}reproduces one-time near-sourcefragmentation exactly (mass untouched, area-count ×
N^{1/3}, size ×N^{−1/3}).Since
mu0/D0is fit per lithology whenever the count/size channels are active,near-source fragmentation is perfectly degenerate with
D0and is not aseparately identifiable parameter. A constant-rate
gcalibrated to it merelyfights
mu0.Corollary:
D0absorbs everything near the sourceD0does not isolate near-source fragmentation — it absorbs all near-sourcesize determination, conflated: (a) near-source fragmentation and (b) the
intrinsic production clast size (mineral grain size, bedding / foliation spacing,
joint density). With no independent measurement of the pre-fragmentation
production size, these cannot be separated —
D0is the single "effective sourceclast size" that lumps them. So the model can say what the effective source size
is, not how much of it is fragmentation vs. how the clast was born. (Schist is
the clean example: small field clasts could be near-source fragmentation or simply
being born small/platy — both live in the same
D0.)Empirical confirmation (Toro)
Production-on, lab-prior fit — fitted
D0vs. measured field clast sizes:Fitted
D0tracks the measured sizes for every lithology (no anomalous shrinkage),so
D0absorbs near-source size determination cleanly without distorting the sizechannel.
D0is well-constrained only where clasts are abundant (quartzite ±9,schist ±6); loose elsewhere.
Scope of this issue (documentation only)
attrition.py: abrasion (mass ata, Wolman countat
2a/3, size ata/3), the existingfragmentation(g)block, production(
c_k), andD0/mu0.D0degeneracy explicitly (the mathabove) in the docstrings and a
docs/section "what the model can and cannotidentify."
D0absorbs all near-source sizedetermination (fragmentation + intrinsic production size), inseparable without a
pre-fragmentation production-size measurement.
shrinking with distance) is separately identifiable — pointer to the companion
build issue.
Acceptance
docs/section (or extended module docstring) covering the above, includingthe identifiability statement, the conflation corollary, and the empirical check.
🤖 Generated with Claude Code