xopto.pf.miemlnormal module

class MieMlNormal(center: float, sigma: float, nlayers: float, nmedium: float, diameters: float, wavelength: float, clip: float = 5, nd: int = 100, limit: Optional[int] = None)[source]

Bases: xopto.pf.miemlpd.MieMlPd

Scattering phase function of Normally distributed (number density) layered spherical particles:

pd = A e^{frac{-(d - center)^2}{(2sigma^2}}

The value of parameter A is computed so as to normalize the integral of the density function on the clipped diameter interval [center - \sigma clip, center + \sigma clip] to 1:

Parameters
  • center (float) – Distribution/diameter mean (m).

  • sigma (float) – Distribution/diameter standard deviation (m).

  • nlayers – Parameters passed to the MieMlPd base class constructor. See help of MieMlPd class for more details.

  • nmedium – Parameters passed to the MieMlPd base class constructor. See help of MieMlPd class for more details.

  • diameters – Parameters passed to the MieMlPd base class constructor. See help of MieMlPd class for more details.

  • nd – Parameters passed to the MieMlPd base class constructor. See help of MieMlPd class for more details.

  • clip (float) – Distribution/diameter range used to estimate the phase function defined as [center - clip \sigma, center + clip \sigma].

Examples

Scattering phase functions of Normally distributed hollow spherical particles with mean diameter 1 um and standard deviation 100 nm, mean diameter 1 um and standard deviation 50 nm, and mean diameter 1 um and standard deviation 25 nm compared to a monodisperse 1 um microspherical particles. The wall thickness of spherical particles accounts for 5% of the outer particle diameter.

>>> from matplotlib import pyplot as pp
>>> import numpy as np
>>>
>>> cos_theta = np.linspace(-1.0, 1.0, 1000)
>>> nlayers=[1.0, 1.45]
>>> diameters=[0.9e-6, 1e-6]
>>> nmie1 = MieMlNormal(1e-6, 0.1e-6, nlayers=nlayers, nmedium=1.33, diameters=diameters, wavelength=550e-9, nd=1000)
>>> nmie2 = MieMlNormal(1e-6, 0.05e-6, nlayers=nlayers, nmedium=1.33, diameters=diameters, wavelength=550e-9, nd=1000)
>>> nmie3 = MieMlNormal(1e-6, 0.025e-6, nlayers=nlayers, nmedium=1.33, diameters=diameters, wavelength=550e-9, nd=1000)
>>> mmie = MieMl(nlayers=nlayers, nmedium=1.33, diameters=diameters, wavelength=550e-9)
>>>
>>> pp.figure()
>>> pp.semilogy(cos_theta, nmie1(cos_theta), label='Normal(1 um, 100 nm)')
>>> pp.semilogy(cos_theta, nmie2(cos_theta), label='Normal(1 um, 50 nm)')
>>> pp.semilogy(cos_theta, nmie3(cos_theta), label='Normal(1 um, 25 nm)')
>>> pp.semilogy(cos_theta, mmie(cos_theta), label='Monodisperse(1 um)')
>>> pp.legend()
>>>