Skip to content

Benchmarks

Jon Drobny edited this page Jun 4, 2023 · 46 revisions

This page will serve to collect the results of post-release benchmarks of RustBCA. These include comparisons to other codes, comparisons to (semi-)empirical formulas, and comparisons to experimental data where available. Benchmarks can be requested using the [benchmark] flag when creating a new issue.

Hydrogen on Nickel compared to EAM and Experiment: Default Settings and Realistic Interatomic Potentials

See examples/benchmark_eam.py. EAM and Experimental data from https://doi.org/10.1016/0022-3115(84)90433-1.

benchmark_h_ni

This shows that previous assumptions about the energy regime of validity of BCA codes may not be accurate for all quantities. In particular, reflection coefficients from TRIM were inaccurate below 10s of eV; this seems to have been implicitly extended to all BCA codes in the literature. However, RustBCA has qualitatively good results for reflection at energies significantly lower than 10s of eV.

Using the default settings, RustBCA performs well when compared to both experimental data at higher energies and an EAM model at much lower energies. Modification of the default settings, such as using a realistic interaction potential, or changing the weak collision order, is likely to improve the results further.

Morse

See this example for the script to run the Morse potential simulations for the above figure.

By introducing the Morse potential for H-Ni (D=5.497E-20 J, r0=2.782 A, alpha=1.419 1/A) and increasing the surface binding energy for H to the literature value for H on Ni surfaces of 2.5 eV (from the default assumption of 1.5 eV), and choosing a nonlocal electronic stopping model with an appropriate correction applied (ck=1.09), the results at low energy can be significantly improved (note that the latter two changes were also applied for the Kr-C case in the figure above). However, since the high-energy (that is, small-r) behavior of the Morse potential does not approach the correct value (that is, a screened coulomb-like potential) the accuracy decreases significantly above about 200 eV. It is likely that the accuracy can be further improved with a better interaction potential.

Argon on Tungsten MD and AC∀T

This paper shows a plot with data extracted from an AC∀T paper that they use to suggest that BCA codes do not produce accurate sputtering yields compared to MD codes:

"We see that our results are considerably lower than the ones obtained using BCA... BCA is heavily influenced by the parameterization used for the particular case, and at low energies BCA has been seen to overestimate the results... "

However, if they had used another BCA, such as SDTrimSP or RustBCA, they would have had markedly better agreement:

sputtering_benchmark

I used the literature value for tungsten's bulk binding energy, 3.0 eV, the values in materials.py for everything else, and 100,000 ion trajectories using the Python bindings on the development branch (at time of writing). To recreate the RustBCA results:

from libRustBCA.pybca import *
from scripts.materials import *
import numpy as np

tungsten['Eb'] = 3.0

energies = np.logspace(2, 3, 100)
y = [sputtering_yield(argon, tungsten, energy, 0.0, 100000) for energy in energies]

plt.plot(energies, y)
plt.show()

MD paper: https://doi.org/10.1016/j.commatsci.2022.111876

AC∀T paper: https://doi.org/10.15748/jasse.3.165