Skip to content

Atomic distorted-wave Born approximation - #80

Merged
tifuchs merged 18 commits into
masterfrom
DWBA_bulk
Sep 5, 2026
Merged

Atomic distorted-wave Born approximation#80
tifuchs merged 18 commits into
masterfrom
DWBA_bulk

Conversation

@tifuchs

@tifuchs tifuchs commented Sep 4, 2026

Copy link
Copy Markdown
Owner

Summary

  • Add a native, four-channel Renaud DWBA engine for CTR calculations, exposed through the lazy SXRDCrystal.dwba state API.
    • Supports atomic bulk, UnitCell, Film, EpitaxyInterface, and PoissonSurface models.
    • Adds cached/immutable DWBA preparations, shared optical references, unique-angle field solving, vectorized glancing-angle and Vlieg geometry helpers, and observable-rich results.
    • Includes graded-interface handling, planar-reference subtraction at specular points, and DWBA-derived kinematical attenuation diagnostics.
  • Move layered electric-field solving and native DWBA kernels into the C++ extension; align optical forward scattering with the structure-factor convention and hoist repeated Debye–Waller work.
  • Add regression coverage for DWBA calculations, optical profiles, empty generated layers, and zero-width interface cancellation.
  • Add DWBA benchmarks, design notes, API documentation, diagnostics/attenuation tutorials, and RuO2/TiO2 example notebooks.
  • Improve Windows development support by recognizing Meson-built .pyd peak-search extensions.
  • Centralize loading of the native CTR extension.

Breaking changes

  • Replace Wavefield / solve_wavefield with LayeredElectricField / solve_electric_field.
  • Core wavefield and XRR glancing-angle APIs now use radians.

Testing

  • Added focused DWBA and optical-profile regression tests.

Closes

Issue #78

tifuchs added 18 commits August 31, 2026 23:55
Add reusable four-channel Renaud DWBA preparation and native structure-factor evaluation, native layered electric fields, geometry convenience APIs, and DWBA-derived kinematical attenuation.

BREAKING CHANGE: Wavefield and solve_wavefield are replaced by LayeredElectricField and solve_electric_field, and core wavefield and XRR glancing-angle APIs now use radians.
Benchmark preparation and repeated prepared-state evaluation with and without empirical attenuation. On the representative 4096-point, 128-atom run, prepared evaluation sustained about 116k points/s and active attenuation had no measurable slowdown (-0.05%).
Document the Renaud channel conventions, prepared evaluation, geometry helpers, and DWBA-derived kinematical attenuation. Add a source-only Pt(100) notebook comparing 00L and 20L rods and showing the attenuation plateau and approximation range.
Add immutable optical references, prepared CTR snapshots, result observables, exact unique-angle field maps, and the native four-channel bulk kernel.

BREAKING CHANGE: Remove the experimental SXRDCrystal.prepare_DWBA*, F_DWBA*, and specular_DWBA* methods. Use SXRDCrystal.dwba instead.
@tifuchs tifuchs linked an issue Sep 4, 2026 that may be closed by this pull request
@tifuchs
tifuchs merged commit b751b34 into master Sep 5, 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.

Full DWBA thin film implementation

1 participant