Brigham Young University Brigham Young University–Idaho U.S. Department of Energy U.S. Inertial Fusion Energy program RISE Inertial Fusion Science and Technology Hub

I.What this is

Inertial Fusion Energy reactors expose first-wall materials like tungsten to intense radiation and thermal cycling. The damage that matters happens atom by atom — a vacancy here, an interstitial there — so measuring it means imaging at that scale.

We simulate irradiated tungsten nanograins, compute the X-ray diffraction they would produce, and then hand a solver only those intensities and ask it to put the atoms back. The truth is never shown to the solver; it is used afterwards, to grade. This page shows what that looks like — the reconstructions running, and how often they succeed.

Conference poster: Atomic Resolution Strain Imaging of IFE First-Wall Tungsten with Bragg Coherent Diffraction Imaging
Poster IFE Symposium 2026. Click to enlarge, or download the full-resolution print file (48×36 in, 250 dpi, 21 MB). New to coherent diffraction? Start here →

II.Going deeper

Three companion pages carry the detail this one compresses. If coherent diffraction is new to you, start with How BCDI works.

Convergence & failure, in full →

The two distinct failure modes — a correct crystal in the wrong place, versus a genuinely warped one — why a stuck run cannot stop itself, and what would fix it.

How BCDI works →

The phase problem, why a Bragg peak encodes strain, why three peaks are the minimum, the twin ambiguity, and what molecular dynamics adds to the loop.

How to read the figures →

A panel-by-panel guide to the diagnostic sheets, including which single panel decides whether a run worked.

III.Watch it reconstruct

Every run is recorded two ways, and they answer different questions.

The two animations, and what each one is for.
ViewWhat you see
a‑CNA view The atoms themselves, rotating, coloured by adaptive common-neighbour analysis — which classifies each atom from the geometry of its neighbours. Blue is ordinary BCC lattice; amber is an interior atom whose coordination is not BCC (a defect core, a void wall, a fault); open rings are the true atom sites. Amber is the damage.
Dashboard The whole solve at once: atom cloud, predicted-versus-true slices in three planes, predicted-versus-true diffraction, and four live curves. Watch this one for convergence — the two diffraction panels close on each other as the error curves fall.

The same crystal, twice — one works, one does not

These two runs got the same 9,334-atom grain, the same three Bragg peaks and the same photon budget. They differ only in a random seed, which makes them two independent repeats of one experiment. The first found every atom to 0.0017 Å. The second never found a single one.

a-CNA · converged 10k_s13. Watch the readout: once it reads +0 vs 9334 true the cloud stops changing. The run ended itself early.
a-CNA · failed 10k_s14. It looks just as busy and just as crystalline, and its R-factor readout barely moves off 0.23. The visual difference is far smaller than the 1,000× difference in fit.
Dashboard · converged The predicted diffraction pattern locks onto the true one, and both error curves fall off a cliff at about iteration 25 and then flatten. That cliff is convergence.
Dashboard · failed No cliff. The error curves drop briefly, level off, and stay level for the rest of the run — while the slices and the atom count still look plausible.

26,067 atoms, recovered exactly

The largest exact recovery in the archive: count error zero out of 26,067 atoms, mean position error 0.0008 Å — about one three-thousandth of a tungsten bond.

No bulk damage in this one. It was set up as a helium cell — 30 ions at 100 eV — but zero of the 30 are present in the final state. He→W transfers at most 8.34 % of the ion's energy, so 100 eV delivers 8.3 eV against tungsten's ~90 eV displacement threshold, and higher energies embed nothing at all because the ion outruns the grain. Read this as the cleanest large reconstruction, not as damage recovery. Real damage is next →

a-CNA 25k_g04_FLU30x100_focus_s2. Almost entirely blue: this grain has no bulk damage to find, which is exactly why it reconstructs so cleanly.
Dashboard R-factor 0.0185 against a noise floor of 0.0182 — the residual is 1.6 % above what photon shot noise alone would give. Nothing structural is left to explain.

22,000 atoms with real cascade damage

For damage that actually exists at this scale the primary knock-on atom has to be a tungsten atom, not a helium ion — same mass, so no 8.34 % transfer penalty, and a few-hundred-eV recoil clears the ~90 eV displacement threshold easily. Grain g09 was run as a complete dose ladder, and measuring each truth against that grain's own pristine control gives a clean monotone trend:

One 22,000-atom grain, four doses. Damage counted against this grain's own pristine control at tungsten's Wigner–Seitz radius (1.371 Å).
CascadeVacant sitesOff-lattice atoms Atoms lostχ²/floorPos. error
none — pristine control00 0136.60.6994 Å
150 eV PKA2323 02.790.0079 Å
400 eV PKA3330 −32.520.0050 Å
800 eV PKA4940 −94.270.0138 Å

Two things to take from that table. Damage rises with energy exactly as you would expect — 23, 33, 49 vacant sites — and every damaged rung converged while the undamaged control failed outright, at χ²/floor 137 and a position error of 0.70 Å. Same grain, same code, same peaks. The videos below are the 800 eV rung, the most heavily damaged 22,000-atom reconstruction in the archive that reached the noise floor.

a-CNA lgE_25k_g09_L3_E800_s2, 22,007 atoms. The amber atoms here are the cascade — interior sites whose coordination is no longer BCC.
Dashboard χ²/floor 4.27, position error 0.0138 Å, count error +6 of 22,007. This is the result the technique is actually for: damage present, damage found.
Thin atomic slabs through the truth and the reconstruction of the 800 eV cascade cell, with non-BCC interior atoms in red, beside a per-atom position-error map.
a-CNA, as a still The same classification, frozen and cut open: truth, reconstruction, per-atom error. Light blue is bulk BCC, red is interior non-BCC — the cascade — and grey is the surface shell within 3.5 Å of the boundary, faded because surface atoms have odd coordination for trivial reasons. The classifier agrees with OVITO's on all 88,833 atoms tested.

A 1,000 eV cascade, seen atom by atom

The a-CNA view earning its keep. This grain took a 1,000 eV primary knock-on atom deep into its interior — the most violent cascade in the 5,000-atom library — and it is also the tightest fit in the whole archive at χ²/floor 1.08. Heavily damaged grains reconstruct better than clean ones, which is not what anyone expected; §IV explains why.

a-CNA lib_5k_g15_L3deep_E1000_s2, 6,136 atoms, all of them found.
Dashboard A clean descent to the floor with no plateau on the way.

And a runaway

The worst run in the archive, and the most instructive. Given a 24,800-atom truth at 4.6× the usual photon dose, it produced 34,125 atoms — inventing 9,325 — and ended with an R-factor 63× its noise floor. More photons did not help: this is a search failure, not a data problem.

a-CNA · failed 25kD_s42. The atom count in the readout stays thousands above truth for the entire run while the model keeps rearranging itself. This is what “churns indefinitely” looks like.
Dashboard · failed The atom-count curve is still drifting downward when the run ends, 9,000 atoms too heavy and nowhere near recovering.

IV.Convergence

Three things happen at once when a reconstruction succeeds, and the simultaneity is the point. The R-factor reaches the measurement's own noise floor — the residual the true structure would leave, set by photon shot noise. The atom count locks, because adding or removing any atom now makes the fit worse. And the add/remove churn goes to zero, so the run ends itself instead of exhausting its iteration budget.

A failed run has none of the three. It flattens above the floor, stalls short or drifts past the true count, and churns to the cap. The single number that captures it is χ²/floor: this run's fit divided by the fit the truth itself achieves. Near 1 means everything but the shot noise is explained. The archive spans 1.08 to 10,370.

The archive's best and worst runs on identical panels: measured Bragg peak, density, atom overlay, atom-count curve and R-factor curve, with a numeric scorecard for each.
Fig 1 The two extremes on identical axes — χ²/floor 1.08 on top, 10,370 below. Read left to right and notice how late the difference becomes visible: the measured peak looks the same, the density looks the same. It is the atom overlay, and then unmistakably the R-factor curve, that give it away.

How often it works

All 513 scored reconstructions. Converged is χ²/floor < 5, failed is > 50; both thresholds are computable without knowing the answer.
GrainRunsConverged PartialFailedConverged
~5,000 atoms207146303170.5 %
~9,300 atoms1230925.0 %
~22,000–26,00021214531456.6 %
~50,000 atoms8207930.0 %
All51316316218831.8 %

This is a success rate per attempt, not a capability limit — when a run lands, it lands exactly. Success falls with size because unknowns grow as three coordinates per atom while usefully-measured intensity does not, and every run here used three Bragg peaks, the bare minimum that can constrain a 3D displacement field. Large grains want more peaks, not more iterations. The 50,000-atom row is unfinished work rather than a wall: 79 of its 82 runs are still improving.

It is not the radiation damage

The obvious guess is that damaged grains are harder, since defects are exactly what the ideal starting lattice lacks. Across the 144-run 5,000-atom library the trend runs the other way: pristine controls converge 62.5 % of the time, 150 eV cascades 65.6 %, 400 eV 78.1 %, and 1,000 eV 87.5 % — with not one outright failure among the 32 deep-cascade runs. The pristine control is the hardest case in the table.

Why damage helps

Because the failure is a registry problem. A perfect crystal looks identical after sliding it by one lattice site, so nothing in the data prefers one alignment and the solver can settle into the wrong one. Put a recognisable cascade in the middle and that degeneracy is gone — exactly one alignment now explains the measurement.

Grain shape matters more than dose. At 22,000–26,000 atoms, one grain converged in 5 of 9 attempts, another in 5 of 19, another in 4 of 48, and another in 0 of 25 — same code, same damage recipes, same peaks.

There is almost no partial credit

Accuracy is not spread smoothly from good to bad. Of all 513 runs, 214 land below 0.05 Å and 273 land at or above 0.5 Å — and only 26 (5.1 %) fall in between. In the tightly controlled 5,000-atom library the gap is starker: 129 below, 14 above, and exactly one in the middle.

Continuous error sources produce continuous degradation. A gap that clean means something discrete decides the outcome: the model latches onto the right lattice registry or a wrong one, with no stable state part-way between two sites. That is good news — a discrete failure is one you can detect and retry, not an accuracy limit you live with.

Three panels: 144 R-factor trajectories against iteration coloured by cascade dose, the same runs' reduced chi-squared, and final count error against final position error showing two separated clusters.
Fig 2 All 144 library runs at once, coloured by cascade energy. Two bundles: one descending to the floor, one flattening high and staying there — plus a few that break out late, past iteration 150. The right panel plots final count error against final position error; the two clusters and the empty gap between them are the bimodality above, drawn.

Picking the good run without knowing the answer

Eight independent repeats were run on one 9,334-atom grain — identical truth, identical measurement recipe, one differing random seed, which sets both the shot-noise draw and the subset of voxels the solver fits. Three converged; five did not.

One grain, eight repeats. χ²/floor needs no knowledge of the truth; position error does.
Runχ²/floorPosition errorOutcome
10k_s221.150.0017 Åconverged
10k_s131.160.0017 Åconverged
10k_s211.530.0035 Åconverged
10k_s151510.2219 Åfailed
10k_tpd035_s32750.5220 Åfailed
10k_s119380.7301 Åfailed
10k_s1910461.3750 Åfailed
10k_s1412041.4187 Åfailed
The practical consequence

χ²/floor separates those eight cleanly — 1.15, 1.16, 1.53 against 151, 275, 938, 1046, 1204 — and it requires no truth, because the noise floor follows from photon statistics rather than from the sample. So at a real beamline you launch several reconstructions, keep the lowest χ²/floor, and discard the rest without ever knowing the answer.

Measured across the archive: picking blind gives mean recall 0.9065 with 8.6 % of runs broken; keeping the lower χ²/floor gives 0.9548 with 4.7 % broken; an all-knowing oracle gives 0.9552 with 4.7 %. The truth-free rule captures 99.3 % of what perfect knowledge would buy, and roughly halves the broken-run rate. That is the whole case for running reconstructions in parallel.

One number to distrust

The archived recall figures use a 2.023 Å matching tolerance — half of aluminium's lattice parameter, inherited from a metadata default — while a tungsten bond is 2.7411 Å. At 74 % of a bond it is wider than the registry offset it should be catching, so an atom on the wrong lattice site still scores as found. Every one of the 50 failed runs in the measurement cache scores above 0.90 on it; 30 score below 0.01 at an honest 0.5 Å. Both numbers are printed side by side throughout. The full accounting →

V.Every run, every figure

The nine reconstructions above, scored. Recall is at the loose 2.023 Å tolerance, as archived — read it alongside χ²/floor, not instead of it.

The nine runs featured above, most accurate first within each group.
RunAtomsCount err Pos. errorχ²/floorNote
he/25k/…g04_FLU30x100_focus_s226,067 00.0008 Å1.12 largest exact recovery; no bulk damage
lib_5k_g15_L3deep_E1000_s26,136 00.0011 Å1.08 tightest fit; heaviest damage
10k_s139,334 00.0017 Å1.16 converged half of the seed pair
large/lgE_25k_g01_L1_E150_s221,843 00.0027 Å2.18 a hard grain that landed
large/lgE_25k_g09_L3_E800_s222,007 +60.0138 Å4.27 800 eV cascade; 49 vacant sites in the truth
he/25k/25k_g01_E3200x3_spread_s121,845 −1061.3789 Å1074 representative 25k stall (also no bulk damage)
10k_s149,334 −1181.4187 Å1204 failed half of the seed pair
lib_5k_g03_L04,828 −71.4821 Å1478 undamaged, and still failed
25kD_s4224,800 +9,3252.9405 Å10,370 runaway; 34,125 atoms produced
Open the full diagnostic figure set for these nine runs

Each run's nine-panel summary sheet shows the whole pipeline on one page; the others break out individual stages. What the panels mean → Support-oversizing figures are deliberately not published.

he/25k/25k_g04_FLU30x100_focus_s2 — converged, 26,067 atoms, no bulk damage

summary · convergence · measurement · phasing · seed · residual field · atom slabs

Nine-panel start-to-finish diagnostic sheet for the 26,067-atom converged run.
Count locks onto truth, R-factor meets the noise floor, position error collapses.

lib_5k_g15_L3deep_E1000_s2 — converged, tightest fit in the archive

summary · convergence · measurement · phasing · seed · residual field · cascade damage

Slab views of the 1000 eV cascade damage in the truth and in the reconstruction.
The cascade in truth and as recovered — the physics this technique exists to measure.

10k_s13 vs 10k_s14 — the seed pair

Converged: summary · convergence · measurement · phasing · seed · residual field · atom slabs
Failed: summary · convergence · measurement · phasing · seed · residual field · atom slabs

Residual position-error map for the converged run, uniformly near zero.
Seed 13, converged. Nothing left anywhere.
Residual position-error map for the failed run, large across the whole grain.
Seed 14, failed. Error spread evenly over the whole grain — a global lattice offset, not a local mistake.

large/lgE_25k_g09_L3_E800_s2 — converged, 800 eV cascade

summary · convergence · measurement · phasing · seed · residual field · atom slabs

Nine-panel diagnostic sheet for the converged 800 eV cascade reconstruction.
22,007 atoms against 49 vacant lattice sites and 40 off-lattice atoms in the truth — the most damaged 22k run that reached the floor.

large/lgE_25k_g01_L1_E150_s2 — converged on a hard grain

summary · convergence · measurement · phasing · seed · residual field

he/25k/25k_g01_E3200x3_spread_s1 — a representative 25k stall

Another helium cell that embedded nothing — 0 of 3 ions retained, 4 vacant sites against its pristine control. Its failure is a search failure, not a damage effect.

summary · convergence · measurement · phasing · seed · residual field

lib_5k_g03_L0 — undamaged, and still failed

summary · convergence · measurement · phasing · seed · residual field

Diagnostic sheet for an undamaged 4,828-atom grain that failed to converge.
The easiest target in the archive — small, undamaged, perfectly periodic — stuck at 1.48 Å. Its atom count is almost right, at −7 of 4,828, which is what makes it dangerous: the count looks fine and every atom is in the wrong place.

25kD_s42 — the runaway

summary · convergence · measurement · phasing · seed · residual field · atom slabs

Atom slabs for the runaway run, showing a reconstruction far denser than the truth.
Overpopulation made visible: the reconstruction slab is far denser than the truth slab beside it.

Acknowledgments

This work was supported by:

The presenting author’s home institution is Brigham Young University–Idaho (Rexburg, Idaho).