-
Notifications
You must be signed in to change notification settings - Fork 16
Bindings: Python
Jon Drobny edited this page Feb 1, 2022
·
37 revisions
Note: PyO3 May not build correctly on MacOS. See Issue #143
First, the Python bindings require the following Python3 modules to be installed:
setuptools_rust
testresources
- And the Rust compiler,
rustc
, must be available on your system PATH. - On Windows machines, you may need to install the Visual Studio C++ development tools.
Running:
python3 -m pip install .
Will compile RustBCA as a library, construct the Python bindings, and build a python module, libRustBCA.pybca, that can be immediately imported into any Python script:
import numpy as np
import matplotlib.pyplot as plt
from libRustBCA.pybca import simple_bca_py, simple_bca_list_py
...
particles_out = simple_bca_py(x, y, z, ux, uy, uz, E, Z1, M1, Ec1, Es1, Z2, M2, Ec2, Es2, n2, Eb2)
- x, y, z: starting position in angstroms (Recommended: 0, 0, 0)
- ux, uy, uz: initial direction
- E: energy in eV
- Z1: atomic number of incident ion
- M1: atomic mass of incident ion (amu)
- Ec1: cutoff energy of incident ion (eV)
- Es1: surface binding energy of incident ion (eV)
- Z2: atomic number of material
- M2: atomic mass of material (amu)
- Ec2: cutoff energy of material (eV)
- Es2: surface binding energy of material (eV)
- n2: number density of material (1/angstrom^3)
- Eb2: bulk binding energy of material (eV)
The output of simple_bca_list_py
is a list of output particles with the following parameters:
[[Z, m (amu), E (eV) x (Angstrom), y (Angstrom), z (Angstrom), ux, uy, uz], ...]
Note that this includes implanted particles (with E = 0), reflected particles, and sputtered particles.