Single Particle Process
#include <psSingleParticleProcess.hpp>
The single particle process is a simple process model that simulates either etching or deposition, assuming a single particle species. The process is specified by the rate, the particle sticking coefficient, and the exponent in the power cosine distribution of the initial particle directions.
The rate can be either negative or positive, corresponding to etching or deposition, respectively. The sticking coefficient is the probability that a particle will stick to the surface upon impact, thus controlling the number of diffusive reflections from the surface. The exponent in the power cosine distribution of the initial particle directions is a measure of the angular spread of the initial particle directions. A higher exponent corresponds to a more focused beam of particles.
Additionally, mask materials can be specified, where the rate is assumed to be zero, or map between material and rate can be defined.
Implementation
SingleParticleProcess(const NumericType rate = 1.,
const NumericType stickingProbability = 1.,
const NumericType sourceDistributionPower = 1.,
const Material maskMaterial = Material::None)
SingleParticleProcess(const NumericType rate,
const NumericType stickingProbability,
const NumericType sourceDistributionPower,
const std::vector<Material> maskMaterials)
SingleParticleProcess(std::unordered_map<Material, NumericType> materialRates,
NumericType stickingProbability,
NumericType sourceDistributionPower)
Parameter | Description | Default Value |
---|---|---|
rate | Default rate of the single particle process, if no material specific rates are defined | 1.0 |
stickingProbability | Sticking probability of particles | 1.0 |
sourceDistributionPower | Power of the power cosine source distribution | 1.0 |
maskMaterial | Mask material | Material::None |
Example usage:
C++
...
// for a single mask material
auto model = SmartPointer<SingleParticleProcess<NumericType, D>>::New(1., 0.1, 1., maskMaterial);
...
// for multiple mask materials
auto model = SmartPointer<SingleParticleProcess<NumericType, D>>::New(1., 0.1, 1., {mask1, mask2});
// for material specific rates
std::unordered_map<Material, NumericType> materialRates = {{Material::Si, 1.}, {Material::SiO2, 0.5}};
auto model = SmartPointer<SingleParticleProcess<NumericType, D>>::New(materialRates, 0.1, 1.);
...
Python
...
model = vps.SingleParticleProcess(rate=1., stickingProbability=0.1, sourceExponent=1., maskMaterials=[maskMaterial])
# using material specific rates
rates = {vps.Material.Si: 1., vps.Material.SiO2: 0.5}
model = vps.SingleParticleProcess(materialRates=rates, stickingProbability=0.1, sourceExponent=1.)
...