Sputtering yield against incidence angle
The yield of Cu under 1 keV Ar as the beam is tilted away from the surface
normal. The base input is
examples/sputtering_ar_cu_angle.toml,
the physics of ar_1keV_cu.toml
(KrC potential, Lindhard-Scharff stopping, E_s and E_d from the element
table) with a short depth grid and no escape or lateral tallies:
# Sputtering yield of Cu under 1 keV Ar at one incidence angle: the base input
# of the angle sweep in the book's examples gallery.
#
# Run: lindhard run examples/sputtering_ar_cu_angle.toml --out out/sputter_angle_0
# Sweep: validation/gallery.py runs this input at a series of `beam.tilt_deg`
# values (the CLI has no flag for the tilt, so it writes one copy of
# the input per angle) and tabulates results.sputtering.yield_per_ion.
#
# Same physics as ar_1keV_cu.toml (KrC potential, Lindhard-Scharff stopping,
# E_s and E_d from the element table) with a short depth grid and no escape or
# lateral tallies, so that a sweep over angles and seeds stays small. Illustration
# of how the BCA yield depends on the angle, not a validated prediction: see
# docs/validation.md for the sputtering comparisons that are validated.
#
# Schema: docs/cli.md. Energies are in eV, lengths in nm, angles in degrees.
[beam]
ion = "Ar"
energy_ev = 1000.0
tilt_deg = 0.0
[target]
substrate = "Cu"
[physics]
potential = "kr-c"
stopping = "lindhard-scharff"
free_path = "constant"
primary_cutoff_ev = 2.0
# Keep the recoil cutoff below E_s (3.49 eV for Cu), or sputtered atoms are
# lost.
recoil_cutoff_ev = 1.0
[run]
ions = 10000
seed = 1
[tally]
depth_bin_nm = 0.5
depth_bins = 40
The sweep
The CLI has no flag for the tilt, so the sweep needs one copy of the input
per angle that differs only in beam.tilt_deg. The generator writes them to a
scratch directory and runs each with --seed:
lindhard run examples/sputtering_ar_cu_angle.toml --out out/sputter_angle_0 --seed 1
is the run at 0°; validation/gallery.py does the same for 0°, 15°, 30°,
45°, 60°, 70° and 80°, and for seeds 1 to 4 at each (28 runs of 10 000 ions,
a fraction of a second each), then reads results.sputtering.yield_per_ion
from each summary.json. The mean over the four seeds is plotted; the error
bar is the standard error of that mean from the spread of the four seeds, so
it includes the correlation of atoms sputtered by one cascade.
| Angle (°) | Yield, mean of seeds | Standard error of the mean | Seed 1 | Seed 2 | Seed 3 | Seed 4 |
|---|---|---|---|---|---|---|
| 0 | 0.500 | 0.003 | 0.4989 | 0.5027 | 0.4920 | 0.5058 |
| 15 | 0.589 | 0.001 | 0.5857 | 0.5901 | 0.5890 | 0.5912 |
| 30 | 0.854 | 0.004 | 0.8589 | 0.8614 | 0.8463 | 0.8486 |
| 45 | 1.265 | 0.005 | 1.2619 | 1.2698 | 1.2511 | 1.2755 |
| 60 | 1.683 | 0.004 | 1.6725 | 1.6826 | 1.6941 | 1.6820 |
| 70 | 1.839 | 0.006 | 1.8549 | 1.8341 | 1.8377 | 1.8281 |
| 80 | 1.718 | 0.009 | 1.7184 | 1.7428 | 1.7135 | 1.6982 |
Ions per run: 10 000; seeds: 1, 2, 3 and 4; every other setting as in the input above.
What is validated, and what is an illustration
- Validated: the normal-incidence (0°) yield of Ar on Cu is compared
with the measured points of Matsunami et al. (1983) in
docs/validation.md(“Sputter yields: Ar → Si, Cu, Ag and Au”); read the deviations reported there before relying on the absolute scale. - Illustration only: the angular dependence. No measured angle series is committed or compared here. The curve shows that the binary-collision model yields a rising, then falling, yield with a maximum at a grazing angle, which is the qualitative behaviour expected of sputtering; it does not establish the position or height of that maximum. The target is amorphous and its surface perfectly flat, with no roughness, which matters most at the grazing end of the sweep. This page is not a validated prediction.