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

Dose in a buried oxide

Electrons at normal incidence on a stack of two metal and dielectric pairs over a 10 nm oxide on Si, with the beam energy swept from 1 to 30 keV. The input is examples/electron/e_dose_buried_oxide.toml:

# Dose in a thin buried oxide under alternating metal and dielectric layers
# (an electron run with the dose tallies of #547).
#
# Run:   lindhard run examples/electron/e_dose_buried_oxide.toml --out out/e_dose_buried_oxide
# Check: lindhard check examples/electron/e_dose_buried_oxide.toml
#
# Schema: docs/cli.md, "Electron runs" (`[electron.tally.dose]`). Energies are
# in eV, lengths in nm.
#
# To sweep the beam energy (the 1-30 keV scan of the gallery page), change
# `electron.beam.energy_ev` and rerun; the gallery script does this
# (validation/gallery.py).
#
# SYNTHETIC DATA, as in e_10keV_si.toml and e_10keV_resist_on_si.toml. Every
# material uses the same synthetic Drude-Lorentz plasmon ELF
# (synthetic_plasmon_elf.toml) and round-number band parameters. "Metal",
# "Dielectric" and "Oxide" carry the composition and density of Al, a
# PMMA-class polymer and SiO2 only to set their masses and elastic scattering;
# their electron data are not those materials'. No optical or band data of
# real materials is committed (docs/data-provenance.md). The output shows how
# the tallies work on a stack, not what a real stack does, and it is not
# compared with any measurement.

[electron.beam]
energy_ev = 10000.0
tilt_deg = 0.0

[electron.transport]
cutoff_ev = 1.0
cutoff_reference = "vacuum-level"
secondaries = "kieft-bosch"
boundary = "step-barrier"

[electron.elastic]
model = "mott"
# The only potential that runs today is a stand-in (docs/data-provenance.md).
potential = "thomas-fermi-yukawa"
exchange = false

[electron.inelastic]
model = "penn-single-pole"

[electron.tables]
# A coarse grid keeps the example quick.
min_energy_ev = 10.0
points_per_decade = 8.0

[electron.materials.Metal]
optical_elf = "synthetic_plasmon_elf.toml"
band = { kind = "metal", fermi_ev = 5.0, work_function_ev = 4.0, provenance = "SYNTHETIC round numbers for the dose example (examples/electron/e_dose_buried_oxide.toml), not band parameters of any metal" }

[electron.materials.Dielectric]
optical_elf = "synthetic_plasmon_elf.toml"
band = { kind = "insulator", valence_band_width_ev = 10.0, band_gap_ev = 4.0, affinity_ev = 1.0, provenance = "SYNTHETIC round numbers for the dose example (examples/electron/e_dose_buried_oxide.toml), not band parameters of any dielectric" }

[electron.materials.Oxide]
optical_elf = "synthetic_plasmon_elf.toml"
band = { kind = "insulator", valence_band_width_ev = 10.0, band_gap_ev = 8.0, affinity_ev = 1.0, provenance = "SYNTHETIC round numbers for the dose example (examples/electron/e_dose_buried_oxide.toml), not band parameters of SiO2" }

[electron.materials.Si]
optical_elf = "synthetic_plasmon_elf.toml"
band = { kind = "insulator", valence_band_width_ev = 10.0, band_gap_ev = 2.0, affinity_ev = 3.0, provenance = "SYNTHETIC round numbers for the dose example (examples/electron/e_dose_buried_oxide.toml), not band parameters of Si" }

[electron.tally]
escape_energy_bins = 50
escape_polar_bins = 9

# Dose per unit incident fluence in each layer (always, with this table), a
# depth-dose profile through the stack with a refined band of 2 nm on each
# side of every interface, and the electrons crossing each interface. The
# substrate is binned to 400 nm.
[electron.tally.dose]
depth_bins_per_layer = 10
refine_width_nm = 2.0
refine_bins = 8
substrate_depth_nm = 400.0
transmission = true

[materials.Metal]
density_g_cm3 = 2.70
elements = [{ symbol = "Al", atom_fraction = 1.0 }]

[materials.Dielectric]
density_g_cm3 = 1.19
elements = [
  { symbol = "C", atom_fraction = 5.0 },
  { symbol = "H", atom_fraction = 8.0 },
  { symbol = "O", atom_fraction = 2.0 },
]

[materials.Oxide]
density_g_cm3 = 2.20
elements = [
  { symbol = "Si", atom_fraction = 1.0 },
  { symbol = "O", atom_fraction = 2.0 },
]

[target]
substrate = "Si"

# Front to back: two metal/dielectric pairs over the buried oxide.
[[target.layers]]
material = "Metal"
thickness_nm = 40.0

[[target.layers]]
material = "Dielectric"
thickness_nm = 60.0

[[target.layers]]
material = "Metal"
thickness_nm = 40.0

[[target.layers]]
material = "Dielectric"
thickness_nm = 60.0

[[target.layers]]
material = "Oxide"
thickness_nm = 10.0

[run]
histories = 1000
seed = 1

The [electron.tally.dose] table adds the dose in each layer per unit incident fluence, a depth-dose profile with refined bins next to each interface, and the electrons crossing each interface (see docs/cli.md, “Electron runs”). Run and check one energy with

lindhard check examples/electron/e_dose_buried_oxide.toml
lindhard run examples/electron/e_dose_buried_oxide.toml --out out/e_dose_buried_oxide

Synthetic data: read this first

The electron data of this example are not those of any metal, dielectric, oxide or Si. Every material uses the same synthetic Drude-Lorentz plasmon as its optical energy-loss function (examples/electron/synthetic_plasmon_elf.toml), the band parameters are round numbers, and the elastic potential is the Thomas-Fermi stand-in (docs/data-provenance.md). The result below shows what the dose tallies report for a stack. It is not compared with any measurement and says nothing about a real stack.

Result

One run per beam energy, 1000 histories each, seed 1 (see validation/gallery.py). The dose is that in the oxide layer for a fluence of 10¹² electrons/cm², with the standard error of the mean. At 1 and 2 keV no electron reaches the oxide through the 200 nm of layers in front of it in this model, so the tally is exactly zero.

Beam energy (keV)Dose in the oxide (Gy), mean ± standard error
10 ± 0
20 ± 0
32.38e+03 ± 3.6e+02
51.53e+04 ± 8.2e+02
108.78e+03 ± 6e+02
203.28e+03 ± 2.7e+02
302.15e+03 ± 2.2e+02

What is validated, and what is an illustration

  • Validated: the bookkeeping, in the tests (lindhard/tests/electron_dose.rs): the per-layer energies, the depth-profile sums and the Cartesian grid agree to summation error for one seed, the dose is the layer energy over its areal mass, and the results are bit-identical across thread counts.
  • Illustration only: every number in the figure and table. The comparison of depth-dose curves and of the interface enhancement with published measurements needs sourced optical data and is tracked in #557.