What This Page Is
This page collects supplementary material: backend provenance, scattering-table families, reproducibility notes, and citation-oriented context.
Backend Stack
- wgpuNUFFT / wgpu-web — Maksim Eremenko's Rust/WebGPU NUFFT library, bundled as
js/wgpu_web.js(wgpu-web 0.3.2). It runs the defaultwgpuNUFFT type-1 (WebGPU)backend: each uniformh,k,lgrid becomes a type-1 transform of wrapped atom coordinates with pre-phased strengths (js/type1_grid.js,js/wgpu_type1.js). - WebGPU-FFT — Maksim Eremenko's WebGPU FFT library used by the type-3 WebGPU path and WebGPU smoothing.
- WebGPU-NUFFT — type-3 NUFFT implementation and WebGPU bridge. In the UI this appears as
Type-3 + webgpufft (WebGPU),type3NufftCpu (CPU FFT),type3NufftCpuDirect (CPU f64 NUFFT), andExact sum (CPU f64, small grids)(the library'stype3NufftDirectSum). - Plotly.js — interactive 3D rendering for slice-plane and isosurface views.
Precision Note
The bundled WebGPU FFT/NUFFT stack and the CPU FFT path use single-precision (fp32) arithmetic. They do not provide fp64 execution. For demanding cases this can introduce small numerical differences, rounding-sensitive behavior, or precision-related artifacts.
- large reciprocal-space grids
- strong dynamic range between Bragg-like and diffuse intensity
- subtraction- or cancellation-sensitive features
- backend-to-backend comparisons
For important scientific checks, compare against the Exact sum backend on a small grid and verify that the qualitative interpretation is stable with respect to backend and grid settings.
Scattering Table Families
- Neutron: embedded coherent scattering lengths (Sears 1992 / NIST, 10−12 cm, natural abundance; D and 7Li as isotopes) with the conspicuous fallback value
10.0and a warning for unknown elements, including Po, At, Rn, Fr, Ac, Pu and Cm, which have no tabulated natural value. - X-ray: Waasmaier, Lobato, Peng 0.4, Doyle, Weickenmeier, Kirkland.
- Electron: Lobato, Peng 0.4, Doyle, Weickenmeier, Kirkland, plus ion-mode Peng support.
The parameterizations use different variables: Lobato and Kirkland fit in q = 1/d = 2 sinθ/λ, the others in s = sinθ/λ. Weickenmeier & Kohl store B1…B6 and V, with amplitudes A1–3 = Z/(3(1+V)) and A4–6 = VZ/(3(1+V)); they cover Z = 2–98, so hydrogen needs another table. X-ray factors derived from electron fits use the Mott–Bethe relation fx = Z − 8π²a0s²fe(s). Every X-ray table gives f(0) = Z and agrees with Waasmaier–Kirfel within its fit accuracy. Every electron table agrees with the Mott–Bethe transform of Waasmaier–Kirfel to 3% (6% for Doyle–Turner and Weickenmeier–Kohl) for |Q| ≤ 12 Å−1 (tests/scattering_tables.test.js).
Published fit ranges: Waasmaier–Kirfel, Lobato, Kirkland and Weickenmeier–Kohl are used to s = sinθ/λ ≤ 6 Å−1 (|Q| ≤ 75.4 Å−1); Peng (the s ≤ 2 fit, Table 1 of Peng et al. 1996) and Doyle–Turner to s ≤ 2 Å−1 (|Q| ≤ 25.1 Å−1). A compute whose grid reaches past the range of its table proceeds with the extrapolated fit and reports one warning naming the limit, as RMCProfile does: a Gaussian electron fit loses the Rutherford tail there, so for Fe at |Q| = 30 Å−1 Peng and Doyle–Turner give fx = 6.0 and 9.6 against 2.4, and such results should not be used. Within the range, X-ray factors derived from electron fits magnify the fit error by 8π²a0s²: Peng and Doyle–Turner stay within 5% of Z only to s ≈ 1.2 Å−1 and reach 10–20% of Z for Li, K, Rb and Cs at s = 2; Weickenmeier–Kohl stays within 3.3% of Z (He 4.4%) and Lobato within 1.3% of Z (K–V near s = 0.5). For X-ray work use Waasmaier–Kirfel or Kirkland. Near |Q| = 0, fe(0) = 〈r²〉/(3a0) follows Dirac–Fock values (arXiv:2608.14934) to 2% except where the underlying data sets differ: Peng, Doyle–Turner and Weickenmeier–Kohl are 4–6% low for Tl, Pb and Bi, and Lobato and Kirkland are 9% low for Po and 3–4% low for Fr and Ra, below |Q| ≈ 2 Å−1. The Lobato parameters are MULTEM's set, which follows Kirkland (the same Rez 1994 data) for every element; the set printed in the 2014 paper differs from it by up to 10% in fe(0) for Cr, Nb, Mo, Tc, Ru, Rh, Ir, Pt, Tl, Bi, Po, Fr and Ra.
The coefficient database records its generated source paths as helper_info/xray_scattering_factor_constants.f90 and helper_info/scattering_coefficients.f90.
When publishing, retain the exact family name shown in the UI in figure captions and methods text. Formal references for each family are collected in Bibliography.
Reproducibility Notes
For scientific comparison or publication, record:
- backend
- scattering type
- exact table/model name
- reciprocal-space grid range and step
- normalization and slice-mode choices relevant to the figure
Advanced Scattering Modes
Grouped exact (neutron)
Grouped exact evaluates grouped element contributions explicitly instead of using the lightweight fast neutron path. It is more explicit about per-element weighting and can be slower than Fast (neutron).
Ion (Peng)
Ion (Peng) is the electron-ion mode. It uses Peng ion coefficients together with the Ion valence mapping entered in the UI, for example Fe:2,O:-2. If an element/valence pair is unsupported by the embedded coefficient set, the calculator reports that explicitly.