-
Notifications
You must be signed in to change notification settings - Fork 17
FAQ
This page under construction. Suggest additions using the [question] issue tag
How can sputtering yields or reflection coefficients be calculated from RustBCA or libRustBCA output?
Sputtering yield is defined as the ratio of the number of sputtered atoms to the number of incident ions. In the standalone code, sputtering yields are provided in <name>summary.output
and can be calculated by dividing the number of particles listed in <name>sputtered.output
by the number of incident particles. The reflection coefficient is defined by the number of reflected particles divided by the number of incident particles, and can be calculated in the standalone code in the same way using <name>reflected.output
. Partial sputtering yields can be determined by calculating sputtering yields for each species of the material, for example by using Z
or m
to distinguish them.
When using Python functions like compound_bca_list_py
, the common output
return value contains all incident and sputtered atoms. Some of these functions provide explicit tags that inform whether a particle is reflected (incident and leaves the material), stopped (incident and doesn't leave the material), or sputtered (non-incident and leaves the material). When these tags are not provided, they can be determined in the following way in Python:
import numpy as np
num_incident = 10000
# output: [Z, m (amu), E (eV), x, y, z, (angstrom), ux, uy, uz]
output = compound_bca_list_py(..., [Z1]*num_incident, ...)
#compound_bca_list_py is 1D, with +x into the material and x>0 being inside the material
x = output[:, 3]
energy = output[:, 2]
#particles have left the material if they are outside the surface with nonzero energy
left_material = np.logical_and(x < 0, energy > 0)
#in this simple example, particles are incident if they have the same Z as the incident species
incident = output[:, 0] == Z1
reflected = np.logical_and(left_material, incident)
stopped = np.logical_and(not left_material, incident)
# non-sputtered displaced target atoms are not included in output
sputtered = not_incident
reflection_coefficient = np.shape(reflected)[1] / num_incident
sputtering_yield = np.shape(sputtered)[1] / num_incident
Click Pages above to see all pages in the Wiki.
This page is a work in progress.