Note
Go to the end to download the full example code.
Sphere: Qsca vs diameter#
Importing the package dependencies: numpy, PyMieSim
import numpy as np
from TypedUnit import ureg
from PyMieSim.experiment.scatterer import Sphere
from PyMieSim.experiment.source import Gaussian
from PyMieSim.experiment import Setup
from PyOptik import Material
Material.print_available()
import PyMieSim
PyMieSim.debug_mode = True
+-----------------------+-----------------------+
| Sellmeier Materials | Tabulated Materials |
+=======================+=======================+
| germanium | test_tabulated_file |
+-----------------------+-----------------------+
| polystyren | nickel |
+-----------------------+-----------------------+
| methane | copper |
+-----------------------+-----------------------+
| lithium_niobate | example_tabulated |
+-----------------------+-----------------------+
| crown | magnesium |
+-----------------------+-----------------------+
| pvc | pva |
+-----------------------+-----------------------+
| propanol | paladium |
+-----------------------+-----------------------+
| BK7 | zinc |
+-----------------------+-----------------------+
| soda_lime_glass | sodium |
+-----------------------+-----------------------+
| fused_silica | silicon |
+-----------------------+-----------------------+
| ethylene | lead |
+-----------------------+-----------------------+
| ethane | tantalum |
+-----------------------+-----------------------+
| FK51A | titanium |
+-----------------------+-----------------------+
| acetone | silver |
+-----------------------+-----------------------+
| methanol | aluminium |
+-----------------------+-----------------------+
| test_sellmeier_file | tungsten |
+-----------------------+-----------------------+
| ethanol | bismuth |
+-----------------------+-----------------------+
| polystyrene | polyetylene |
+-----------------------+-----------------------+
| argon | iron |
+-----------------------+-----------------------+
| BAK1 | vanadium |
+-----------------------+-----------------------+
| SF5 | calcium |
+-----------------------+-----------------------+
| polycarbonate | gold |
+-----------------------+-----------------------+
| ZBLAN | rhodium |
+-----------------------+-----------------------+
| cellulose | chromium |
+-----------------------+-----------------------+
| water | |
+-----------------------+-----------------------+
| SF10 | |
+-----------------------+-----------------------+
| SF11 | |
+-----------------------+-----------------------+
| acetylene | |
+-----------------------+-----------------------+
| air | |
+-----------------------+-----------------------+
| flint | |
+-----------------------+-----------------------+
| LASF9 | |
+-----------------------+-----------------------+
| example_sellmeier | |
+-----------------------+-----------------------+
| glycerol | |
+-----------------------+-----------------------+
| BAF10 | |
+-----------------------+-----------------------+
Defining the source to be employed.
source = Gaussian(
wavelength=[405, 810] * ureg.nanometer,
polarization=0 * ureg.degree,
optical_power=1e-3 * ureg.watt,
NA=0.2 * ureg.AU,
)
scatterer = Sphere(
diameter=np.linspace(10, 1000, 150) * ureg.nanometer,
medium_property=[1.33, 1.34, 1.5] * ureg.RIU,
property=Material.polystyren,
source=source,
)
Defining the experiment setup
experiment = Setup(scatterer=scatterer, source=source)
dataframe = experiment.get("Qsca", scale_unit=True)
dataframe.plot(x="scatterer:diameter", show=True)

/opt/hostedtoolcache/Python/3.11.13/x64/lib/python3.11/site-packages/PyOptik/material/base_class.py:60: UserWarning: Wavelength range goes from 405 nanometer to 810 nanometer which is outside the allowable range of 436.79999999999995 nanometer to 1.052 micrometer µm. [Material: polystyren]
warnings.warn(
<Figure size 800x500 with 1 Axes>
Total running time of the script: (0 minutes 0.302 seconds)