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 |
+=======================+=======================+
| polycarbonate | paladium |
+-----------------------+-----------------------+
| polystyrene | polyetylene |
+-----------------------+-----------------------+
| propanol | example_tabulated |
+-----------------------+-----------------------+
| acetone | calcium |
+-----------------------+-----------------------+
| flint | test_tabulated_file |
+-----------------------+-----------------------+
| FK51A | aluminium |
+-----------------------+-----------------------+
| argon | tantalum |
+-----------------------+-----------------------+
| lithium_niobate | pva |
+-----------------------+-----------------------+
| SF5 | zinc |
+-----------------------+-----------------------+
| methanol | iron |
+-----------------------+-----------------------+
| BK7 | sodium |
+-----------------------+-----------------------+
| crown | silver |
+-----------------------+-----------------------+
| glycerol | tungsten |
+-----------------------+-----------------------+
| cellulose | silicon |
+-----------------------+-----------------------+
| test_sellmeier_file | bismuth |
+-----------------------+-----------------------+
| pvc | chromium |
+-----------------------+-----------------------+
| air | magnesium |
+-----------------------+-----------------------+
| SF11 | lead |
+-----------------------+-----------------------+
| ZBLAN | titanium |
+-----------------------+-----------------------+
| BAF10 | vanadium |
+-----------------------+-----------------------+
| soda_lime_glass | rhodium |
+-----------------------+-----------------------+
| LASF9 | gold |
+-----------------------+-----------------------+
| BAK1 | copper |
+-----------------------+-----------------------+
| methane | nickel |
+-----------------------+-----------------------+
| ethane | |
+-----------------------+-----------------------+
| acetylene | |
+-----------------------+-----------------------+
| germanium | |
+-----------------------+-----------------------+
| ethanol | |
+-----------------------+-----------------------+
| SF10 | |
+-----------------------+-----------------------+
| ethylene | |
+-----------------------+-----------------------+
| fused_silica | |
+-----------------------+-----------------------+
| polystyren | |
+-----------------------+-----------------------+
| water | |
+-----------------------+-----------------------+
| example_sellmeier | |
+-----------------------+-----------------------+
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.0 nanometer to 810.0 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.305 seconds)