Skip to content
Jon Drobny edited this page Feb 14, 2024 · 64 revisions

RustBCA Logo showing arrows representing an ion beam, a reflected portion, a sputtered beam, and an implanted and eventually transmitted beam on a solid cube exposed to plasma.

RustBCA

RustBCA is a Binary Collision Approximation (BCA) code for ion-material interactions, written in Rust! Please see the sidebar for links to other pages on the Wiki. Most important being the pages describing how to install RustBCA, the input file format, and the output file formats. For a complete list of features, see the Features section of this page. If you are interested in using the RustBCA library to add ion-material interactions to a plasma simulation, see the pages describing bindings for C/C++, Fortran, and Python.

In general, BCA codes are valid for incident ion energies between approximately 10 eV to several GeV, although RustBCA provides acceptable results for tested ion-target pairs at significantly lower energies. By discretizing the collision cascade into a sequence of binary collisions, BCA codes can accurately and efficiently model reflection, implantation, sputtering, transmission, and displacement damage. rustBCA models the material amorphously, and cannot capture phenomena such as ion channeling. BCA codes are zero-temperature and typically do not include temperature effects. RustBCA has been extensively benchmarked against F-TRIDYN (Drobny et al., 2017), (semi-)empirical formulas such as Yamamura and Bohdansky for sputtering yields, Thomas for reflection coefficients, molecular dynamics simulations, and experimental data (where available).

Why RustBCA?

BCA codes are among the oldest ion-material interaction codes; as such, there are many options to choose from. iradina is open source, but there are no published comparisons to accepted results for sputtering yields, reflection coefficients, or distributions. SRIM is publicly available, but is closed source and has significant correctness issues. TRIDYN and SDTrimSP, the most widely used and widely validated BCA codes to date after SRIM, are not open source, and the former may have correctness issues with regards to its implementation of the MAGIC formula; neither code is capable of in-memory coupling. IMSIL performs well when compared to experiments on silicon, but is not open source and has not yet been benchmarked with other incident ion species or target conditions. CORETO is open source, but relies on pre-generated lookup tables, limiting its functionality, and, according to the latest version of the manual (2016), is not yet ready for use for sputtering calculations. MARLOWE is available upon request from the IAEA, but the website has been down since approximately 2004 and the code is no longer under any development or maintenance; it is unclear what its most recent status is. RustBCA is the only free and open-source BCA code that reproduces accurate results for sputtering yields, reflection coefficients, and distributions for a wide range of incident ion and target conditions. In addition to its other features (see list below), RustBCA is, as far as the developers are aware, the only BCA code that includes automatic testing of core physics components and bindings for in-memory integration with other codes (e.g., plasma codes such as PICs and materials codes such as cluster dynamics).

Sputtering

Sputtering yields of silicon for helium, beryllium, oxygen, neon, aluminum, silicon, argon, titanium, copper, krypton, xenon, ytterbium, tungsten, gold, lead, and uranium ions.

Sputtering yields for various ions on silicon show how RustBCA performs well compared to both F-TRIDYN and experimental data compiled by Wittmaack (2004). Comparison to SRIM shows how that code exhibits anomalous light ion sputtering. Comparison to Yamamura for varying values of the free parameter Q show that it underestimates sputtering yields for high ion-target mass ratios. Reflection coefficients are also shown, but near-zero for M1 > M2.

Reflection

Reflection coefficient of neon on tungsten.

Reflection coefficients of neon on tungsten, compared to experiment, the empirical Thomas reflection coefficient, and F-TRIDYN simulations. Note that F-TRIDYN significantly underestimates reflection coefficients by neglecting single-collision reflections in certain situations due to the particle boundary conditions at the surface; similar issues are present in SRIM.

+Close and Yarwood (1967)

Implantation

Implantation profiles of rustBCA and F-TRIDYN on a layered target.

Implantation distributions for a layered target compared to F-TRIDYN. Note that this simulation was performed using F-TRIDYN's original MAGIC coefficients, which results in slightly incorrect (~10% error) nuclear stopping powers.

Trajectories

Trajectories of helium ions on titanium.

Trajectories of helium ions incident on a titanium target.

Geometry

Spherical geometry example - hydrogen on boron nitride dust grain.

RustBCA has multiple geometry types, including spherical and triangular mesh geometries. In the above example, a boron nitride dust grain is exposed to a hydrogen beam.

Features

  • Ion-solid interactions for all combinations of incident ion and target species
  • Bindings for including ion-material interactions (sputtering, reflection, and implantation) in codes written in C/C++, Fortran, and Python.
  • 0D (infinite, homogeneous target), 1D (finite depth layered target), 2D geometry (triangular-mesh-based inhomogeneous composition), homogeneous spherical geometry, and homogeneous triangular mesh geometry
  • Amorphous solid/liquid and gaseous targets, including targets with both gaseous and liquid elements. See the page on gaseous targets for more details.
  • Low energy (<25 keV/nucleon) electronic stopping modes include local (Oen-Robinson), nonlocal (Lindhard-Scharff), and equipartition forms; Includes Biersack-Varelas interpolation to extend electronic stopping validity up to ~1 GeV/nucleon
  • Biersack-Haggmark high-energy free-flight paths to greatly speed up high-energy simulations by neglecting very small angle scattering
  • Includes Kr-C, ZBL, Lenz-Jensen, and Moliere screened-Coulomb potentials; Includes Lennard-Jones 12-6, Lennard-Jones 6.5-6, and Morse attractive-repulsive interaction potentials using the experimental Adaptive Chebyshev Proxy Rootfinder with Adaptive Subdivision. See the page on interaction potentials for more details.
  • Includes Newton-Raphson for simple root-finding and optionally includes Adaptive Chebyshev Proxy Rootfinder with Automatic Subdivision and Polynomial root-finding algorithms through the rcpr crate for solving the distance-of-closest-approach problem
  • Multiple interaction potentials can be used in a single simulation - for example, the He-W interaction can be specified as a Lennard-Jones 12-6 while the W-W interaction can be specified as a Kr-C, for any number of potentials or species. See the page on interaction potentials for more details.
  • Includes Gauss-Mehler quadrature, Gauss-Legendre quadrature, Mendenall-Weller quadrature, and the MAGIC algorithm to calculate the scattering integral
  • Full trajectory tracking of ions and target atoms
  • Human-readable TOML-formatted input file
  • Simple error messages with context to guide the reader towards solutions
  • Output of energies and directions of emitted particles (reflected ions and sputtered atoms). See the page on output files for more details.
  • Output of final positions of implanted ions. See the page on output files for more details.
  • Output of full trajectory tracking for incident ions and target atoms including energy losses and displacements. See the page on output files for more details.
  • Distribution output (reflected ion and sputtered atom energy-angle distributions, implantation distributions) activated with the --features distributions flag