Skip to content

Incoherent Poisson surface / roughness model - #86

Merged
tifuchs merged 13 commits into
masterfrom
poisson-incoh
Sep 16, 2026
Merged

tifuchs merged 13 commits into
masterfrom
poisson-incoh

Conversation

@tifuchs

@tifuchs tifuchs commented Sep 16, 2026

Copy link
Copy Markdown
Owner

Adds empirically mixed incoherent and coherent Poisson roughness.

Fully incoherent means that the intensity / F**2 of multiple perfectly flat films / surfaces with different height are incoherently added.

Three defects would have produced wrong or breaking code: the height
state index, one retention mask serving two policies, and redefining
CTROptimizer.startp.
The symbol p_n meant both the coherent exposed fractions and the
normalized ensemble masses; the coherent ones are now q_n. Also fixes
the Film prefix range and the mode definition.
evaluateStatistics hardcoded the resolution prefix and skipped every
callback, so the crystal received the callback's error slice.
The bodies written so far restate their own diffs. Records the subject,
0-3 line body and footer convention, to be applied by rebase while the
branch is still unpushed.
Records the flat-height decomposition the incoherent models are defined
against, against independently stacked Films that never touch
PoissonSurface.
F is now a thin wrapper over evaluate_kinematic, so incoherent models
reuse the shared bulk and Film amplitudes instead of re-evaluating them.
Verified bitwise identical to the previous F over 58 fixtures.
flat_domain_corrections returns the occupancy-one correction of each
retained height, streaming one amplitude at a time. Coherent assembly
and the height-state ensemble now select from shared candidates.
Wrappers present the existing fit API with their own parameters ahead of
the wrapped crystal's, and mix complete coherent state amplitudes. The
registry lets a saved type name resolve without importing a class path.
Mixes the complete crystal amplitude of each retained flat height, so
bulk-surface interference stays inside every domain. The coherent
endpoint is the cached coherent result, not a state-sum reconstruction.
Resolution now acts on F2 before the square root, and an incoherent
wrapper is accepted through the existing model argument. optimizer.xtal
stays the coherent crystal, so callbacks and constraints are unchanged.
Separates F, F2, r, R and detector counts along the CTR path. Config
restore now names the settings which failed to construct the model.
An overlayer is placed once at the mean surface height and never moves
while the height states stream, so it belongs in the common amplitude
exactly as the coherent model already treats it.
@tifuchs tifuchs linked an issue Sep 16, 2026 that may be closed by this pull request
@tifuchs
tifuchs merged commit f8149a0 into master Sep 16, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Incoherent roughness

1 participant