Parameter distributions sample scalar model parameters. For spatial disorder and finite correlation lengths in particle structures, see correlation profiles.
A distribution is constructed by one of the following:
distr = ba.DistributionGate(start, stop, n_samples=25)
distr = ba.DistributionCosine(mean, hwhm, n_samples=25)
distr = ba.DistributionGaussian(mean, std_dev, n_samples=25,
rel_sampling_width=2)
distr = ba.DistributionLorentz(mean, hwhm, n_samples=25,
rel_sampling_width=2)
distr = ba.DistributionLogNormal(median, scale_param, n_samples=25,
rel_sampling_width=2)
Parameter distributions are either supplied to beam divergence or detector resolution classes as described there, or they are used programmatically.
In programmatic usage, the function call
parsamples = distr.distributionSamples()
returns a vector of parameter samples. Each ParameterSample has a value
and a weight. A particle Mixture can represent the resulting incoherent
sum of components.
For instance, in the PolydisperseCylinders example, the radius samples become particle variants in a dilute mixture:
distr = ba.DistributionGaussian(10*nm, 1*nm)
mixture = ba.Mixture()
for parsample in distr.distributionSamples():
ff = ba.Cylinder(parsample.value, 5*nm)
particle = ba.Particle(particle_mat, ff)
mixture.addParticle(particle, parsample.weight)
layer.deposit2D(ba.Dilute2D(0.001/nm2, mixture))
Mixture normalizes the sample weights. The Dilute2D density is therefore
the total areal density across all radii.