BCA_modern: An open-source universal binary collision approximation code for low-energy ion scattering from crystalline surfaces
Description
We present BCA_modern, an open-source Python code for simulating low-energy ion scattering (LEIS) from crystalline surfaces using the binary collision approximation. The code implements pair-specific NLH interatomic potentials [1] for 70 ion–atom combinations (He+, Ne+, Ar+, Kr+, Xe+ on 14 target elements), position-dependent electronic stopping 𝑆𝑒 (𝑣, 𝜌), thermal lattice vibrations, and Hagstrum ion neutralisation. A universal crystal structure module supports 35 built-in structures (zincblende, wurtzite, rocksalt, corundum, cristobalite, FCC metals, BCC metals, diamond cubic), disordered alloys via partial site occupation, and CIF file input. A simulation with automatically generated material and model parameters can be initialised from three required inputs—ion atomic number, crystal name and beam energy—while the beam geometry, temperature, trajectory count and detector acceptance remain user-configurable and must be set to reproduce a specific experiment. We validate the code through: (i) kinematic factor verification yielding machine-precision agreement for 54 ion–target pairs; (ii) backscattering spectra for He+ → CaSiO3 under the normal-incidence, 145∘-detector geometry of a recent BCA/experiment study, recovering spectral features at the single-collision kinematic energies of Ca, Si, and O; (iii) statistical convergence analysis demonstrating ∼1% precision at 5000 trajectories; and (iv) comparison with published experimental LEIS conditions for He+ → Au and Cu at normal incidence, showing peak position agreement within 1% of the kinematic prediction. Applications to GaP, CdTe, GaAs, and Al2O3 are presented; a companion study applies the same code to detector-induced distortions in low-energy ion scattering [2].