Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

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 seedsStandard error of the meanSeed 1Seed 2Seed 3Seed 4
00.5000.0030.49890.50270.49200.5058
150.5890.0010.58570.59010.58900.5912
300.8540.0040.85890.86140.84630.8486
451.2650.0051.26191.26981.25111.2755
601.6830.0041.67251.68261.69411.6820
701.8390.0061.85491.83411.83771.8281
801.7180.0091.71841.74281.71351.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.