PyMieSim 3.5.4.1__cp311-cp311-macosx_14_0_arm64.whl → 3.5.4.5__cp311-cp311-macosx_14_0_arm64.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- PyMieSim/__init__.py +8 -3
- PyMieSim/__main__.py +2 -0
- PyMieSim/_version.py +2 -2
- PyMieSim/binary/interface_detector.cpython-310-darwin.so +0 -0
- PyMieSim/binary/interface_detector.cpython-311-darwin.so +0 -0
- PyMieSim/binary/interface_experiment.cpython-310-darwin.so +0 -0
- PyMieSim/binary/interface_experiment.cpython-311-darwin.so +0 -0
- PyMieSim/binary/interface_scatterer.cpython-310-darwin.so +0 -0
- PyMieSim/binary/interface_scatterer.cpython-311-darwin.so +0 -0
- PyMieSim/binary/interface_sets.cpython-310-darwin.so +0 -0
- PyMieSim/binary/interface_sets.cpython-311-darwin.so +0 -0
- PyMieSim/binary/interface_source.cpython-310-darwin.so +0 -0
- PyMieSim/binary/interface_source.cpython-311-darwin.so +0 -0
- PyMieSim/binary/libcpp_coordinates.a +0 -0
- PyMieSim/binary/libcpp_detector.a +0 -0
- PyMieSim/binary/libcpp_experiment.a +0 -0
- PyMieSim/binary/libcpp_fibonacci.a +0 -0
- PyMieSim/binary/libcpp_mode_field.a +0 -0
- PyMieSim/binary/libcpp_sets.a +0 -0
- PyMieSim/binary/libcpp_source.a +0 -0
- PyMieSim/experiment/scatterer/base.py +8 -2
- PyMieSim/experiment/scatterer/core_shell.py +11 -8
- PyMieSim/experiment/scatterer/cylinder.py +8 -7
- PyMieSim/experiment/scatterer/sphere.py +8 -7
- PyMieSim/experiment/source/gaussian.py +13 -14
- PyMieSim/experiment/source/planewave.py +15 -16
- PyMieSim/single/scatterer/core_shell.py +13 -1
- PyMieSim/single/scatterer/cylinder.py +6 -1
- PyMieSim/single/scatterer/sphere.py +13 -1
- PyMieSim/special_functions.py +7 -8
- {PyMieSim/binary → lib}/libZBessel.a +0 -0
- {PyMieSim/binary → lib}/lib_ZBessel.a +0 -0
- lib/libcpp_base_scatterer.a +0 -0
- lib/libcpp_coreshell.a +0 -0
- lib/libcpp_cylinder.a +0 -0
- lib/libcpp_sphere.a +0 -0
- {pymiesim-3.5.4.1.dist-info → pymiesim-3.5.4.5.dist-info}/METADATA +77 -213
- {pymiesim-3.5.4.1.dist-info → pymiesim-3.5.4.5.dist-info}/RECORD +40 -40
- {pymiesim-3.5.4.1.dist-info → pymiesim-3.5.4.5.dist-info}/WHEEL +1 -1
- PyMieSim/binary/libcpp_base_scatterer.a +0 -0
- PyMieSim/binary/libcpp_coreshell.a +0 -0
- PyMieSim/binary/libcpp_cylinder.a +0 -0
- PyMieSim/binary/libcpp_sphere.a +0 -0
- {pymiesim-3.5.4.1.dist-info → pymiesim-3.5.4.5.dist-info}/licenses/LICENSE +0 -0
PyMieSim/__init__.py
CHANGED
@@ -1,4 +1,11 @@
|
|
1
|
-
|
1
|
+
"""PyMieSim package initialization.
|
2
|
+
|
3
|
+
This module exposes the package version and sets up unit handling. Importing
|
4
|
+
``Quantity`` here ensures proper initialization on all platforms. Removing this
|
5
|
+
import causes unit tests to fail on macOS systems.
|
6
|
+
"""
|
7
|
+
|
8
|
+
from PyMieSim.units import Quantity # required for unit registration on macOS
|
2
9
|
|
3
10
|
try:
|
4
11
|
from ._version import version as __version__
|
@@ -7,5 +14,3 @@ except ImportError:
|
|
7
14
|
__version__ = "0.0.0"
|
8
15
|
|
9
16
|
debug_mode = False
|
10
|
-
|
11
|
-
# -
|
PyMieSim/__main__.py
CHANGED
PyMieSim/_version.py
CHANGED
@@ -17,5 +17,5 @@ __version__: str
|
|
17
17
|
__version_tuple__: VERSION_TUPLE
|
18
18
|
version_tuple: VERSION_TUPLE
|
19
19
|
|
20
|
-
__version__ = version = '3.5.4.
|
21
|
-
__version_tuple__ = version_tuple = (3, 5, 4,
|
20
|
+
__version__ = version = '3.5.4.5'
|
21
|
+
__version_tuple__ = version_tuple = (3, 5, 4, 5)
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
PyMieSim/binary/libcpp_sets.a
CHANGED
Binary file
|
PyMieSim/binary/libcpp_source.a
CHANGED
Binary file
|
@@ -62,11 +62,17 @@ class BaseScatterer():
|
|
62
62
|
CPPClass = CppMediumProperties if name == 'medium' else CppScattererProperties
|
63
63
|
|
64
64
|
if all(isinstance(item, Quantity) for item in properties):
|
65
|
-
|
65
|
+
instance = CPPClass(index_properties=properties.magnitude)
|
66
|
+
self.binding_kwargs[f'{name}_properties'] = instance
|
67
|
+
|
68
|
+
return instance
|
66
69
|
|
67
70
|
elif all(isinstance(item, BaseMaterial) for item in properties):
|
68
71
|
eval_index = numpy.asarray([m.compute_refractive_index(self.source.wavelength.to_base_units().magnitude) for m in properties])
|
69
|
-
|
72
|
+
instance = CPPClass(material_properties=eval_index)
|
73
|
+
self.binding_kwargs[f'{name}_properties'] = instance
|
74
|
+
|
75
|
+
return instance
|
70
76
|
|
71
77
|
else:
|
72
78
|
raise TypeError("All elements in the list must be of type 'Quantity' or 'BaseMaterial', not a mix of both.")
|
@@ -66,14 +66,17 @@ class CoreShell(BaseScatterer, Sequential):
|
|
66
66
|
is_sequential=self.is_sequential
|
67
67
|
)
|
68
68
|
|
69
|
-
self._add_properties(name='medium', properties=self.medium_property)
|
69
|
+
mediun_properties = self._add_properties(name='medium', properties=self.medium_property)
|
70
70
|
|
71
|
-
self._add_properties(name='core', properties=self.core_property)
|
71
|
+
core_properties = self._add_properties(name='core', properties=self.core_property)
|
72
72
|
|
73
|
-
self._add_properties(name='shell', properties=self.shell_property)
|
73
|
+
shell_properties = self._add_properties(name='shell', properties=self.shell_property)
|
74
74
|
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
75
|
+
self.binding = CppCoreShellSet(
|
76
|
+
core_diameter=self.core_diameter.to('meter').magnitude,
|
77
|
+
shell_thickness=self.shell_thickness.to('meter').magnitude,
|
78
|
+
core_properties=core_properties,
|
79
|
+
shell_properties=shell_properties,
|
80
|
+
medium_properties=mediun_properties,
|
81
|
+
is_sequential=self.is_sequential,
|
82
|
+
)
|
@@ -51,12 +51,13 @@ class Cylinder(BaseScatterer, Sequential):
|
|
51
51
|
|
52
52
|
self.binding_kwargs = dict(diameter=self.diameter, is_sequential=self.is_sequential)
|
53
53
|
|
54
|
-
self._add_properties(name='medium', properties=self.medium_property)
|
54
|
+
mediun_properties = self._add_properties(name='medium', properties=self.medium_property)
|
55
55
|
|
56
|
-
self._add_properties(name='scatterer', properties=self.property)
|
56
|
+
scatterer_properties = self._add_properties(name='scatterer', properties=self.property)
|
57
57
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
58
|
+
self.binding = CppCylinderSet(
|
59
|
+
diameter=self.diameter.to('meter').magnitude,
|
60
|
+
scatterer_properties=scatterer_properties,
|
61
|
+
medium_properties=mediun_properties,
|
62
|
+
is_sequential=self.is_sequential,
|
63
|
+
)
|
@@ -54,12 +54,13 @@ class Sphere(BaseScatterer, Sequential):
|
|
54
54
|
|
55
55
|
self.binding_kwargs = dict(diameter=self.diameter, is_sequential=self.is_sequential)
|
56
56
|
|
57
|
-
self._add_properties(name='medium', properties=self.medium_property)
|
57
|
+
mediun_properties = self._add_properties(name='medium', properties=self.medium_property)
|
58
58
|
|
59
|
-
self._add_properties(name='scatterer', properties=self.property)
|
59
|
+
scatterer_properties = self._add_properties(name='scatterer', properties=self.property)
|
60
60
|
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
61
|
+
self.binding = CppSphereSet(
|
62
|
+
diameter=self.diameter.to('meter').magnitude,
|
63
|
+
scatterer_properties=scatterer_properties,
|
64
|
+
medium_properties=mediun_properties,
|
65
|
+
is_sequential=self.is_sequential,
|
66
|
+
)
|
@@ -32,12 +32,17 @@ class Gaussian(BaseSource, Sequential):
|
|
32
32
|
wavelength: Quantity
|
33
33
|
polarization: Union[BasePolarization, Quantity]
|
34
34
|
|
35
|
-
def
|
35
|
+
def _generate_binding(self) -> None:
|
36
36
|
"""
|
37
37
|
Prepares the keyword arguments for the C++ binding based on the scatterer's properties. This
|
38
38
|
involves evaluating material indices and organizing them into a dictionary for the C++ interface.
|
39
39
|
|
40
40
|
"""
|
41
|
+
self.mapping = {}
|
42
|
+
|
43
|
+
if not isinstance(self.polarization, BasePolarization):
|
44
|
+
self.polarization = Linear(self.polarization)
|
45
|
+
|
41
46
|
self.binding_kwargs = dict(
|
42
47
|
wavelength=self.wavelength,
|
43
48
|
jones_vector=self.polarization.element,
|
@@ -46,16 +51,10 @@ class Gaussian(BaseSource, Sequential):
|
|
46
51
|
is_sequential=self.is_sequential
|
47
52
|
)
|
48
53
|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
self.
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
binding_kwargs = {
|
58
|
-
k: v.to_base_units().magnitude if isinstance(v, Quantity) else v for k, v in self.binding_kwargs.items()
|
59
|
-
}
|
60
|
-
|
61
|
-
self.binding = CppGaussianSourceSet(**binding_kwargs)
|
54
|
+
self.binding = CppGaussianSourceSet(
|
55
|
+
wavelength=self.wavelength.to('meter').magnitude,
|
56
|
+
jones_vector=self.polarization.element,
|
57
|
+
NA=self.NA.to('dimensionless').magnitude,
|
58
|
+
optical_power=self.optical_power.to('watt').magnitude,
|
59
|
+
is_sequential=self.is_sequential
|
60
|
+
)
|
@@ -40,14 +40,20 @@ class PlaneWave(BaseSource, Sequential):
|
|
40
40
|
|
41
41
|
return value
|
42
42
|
|
43
|
-
def
|
43
|
+
def _generate_binding(self) -> None:
|
44
44
|
"""
|
45
45
|
Prepares the keyword arguments for the C++ binding based on the scatterer's properties. This
|
46
46
|
involves evaluating material indices and organizing them into a dictionary for the C++ interface.
|
47
47
|
|
48
|
-
Returns
|
49
|
-
|
48
|
+
Returns
|
49
|
+
-------
|
50
|
+
None
|
50
51
|
"""
|
52
|
+
self.mapping = {}
|
53
|
+
|
54
|
+
if not isinstance(self.polarization, BasePolarization):
|
55
|
+
self.polarization = Linear(self.polarization)
|
56
|
+
|
51
57
|
self.binding_kwargs = dict(
|
52
58
|
wavelength=self.wavelength,
|
53
59
|
jones_vector=self.polarization.element,
|
@@ -55,16 +61,9 @@ class PlaneWave(BaseSource, Sequential):
|
|
55
61
|
is_sequential=self.is_sequential
|
56
62
|
)
|
57
63
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
self._generate_binding_kwargs()
|
65
|
-
|
66
|
-
binding_kwargs = {
|
67
|
-
k: v.to_base_units().magnitude if isinstance(v, Quantity) else v for k, v in self.binding_kwargs.items()
|
68
|
-
}
|
69
|
-
|
70
|
-
self.binding = CppPlaneWaveSourceSet(**binding_kwargs)
|
64
|
+
self.binding = CppPlaneWaveSourceSet(
|
65
|
+
wavelength=self.wavelength.to('meter').magnitude,
|
66
|
+
jones_vector=self.polarization.element,
|
67
|
+
amplitude=self.amplitude.to('volt/meter').magnitude,
|
68
|
+
is_sequential=self.is_sequential
|
69
|
+
)
|
@@ -1,6 +1,7 @@
|
|
1
1
|
#!/usr/bin/env python
|
2
2
|
# -*- coding: utf-8 -*-
|
3
3
|
|
4
|
+
import numpy
|
4
5
|
import pyvista
|
5
6
|
from PyOptik.material.base_class import BaseMaterial
|
6
7
|
|
@@ -35,7 +36,7 @@ class CoreShell(CORESHELL, BaseScatterer):
|
|
35
36
|
source: BaseSource
|
36
37
|
|
37
38
|
property_names = [
|
38
|
-
"size_parameter", "cross_section", "g",
|
39
|
+
"size_parameter", "radius", "volume", "cross_section", "g",
|
39
40
|
"Qsca", "Qext", "Qabs", "Qback", "Qratio", "Qpr",
|
40
41
|
"Csca", "Cext", "Cabs", "Cback", "Cratio", "Cpr"
|
41
42
|
]
|
@@ -85,6 +86,17 @@ class CoreShell(CORESHELL, BaseScatterer):
|
|
85
86
|
source=self.source
|
86
87
|
)
|
87
88
|
|
89
|
+
@property
|
90
|
+
def radius(self) -> units.Quantity:
|
91
|
+
"""Return the outer radius of the scatterer."""
|
92
|
+
return self.core_diameter / 2 + self.shell_thickness
|
93
|
+
|
94
|
+
@property
|
95
|
+
def volume(self) -> units.Quantity:
|
96
|
+
"""Return the volume of the scatterer."""
|
97
|
+
vol = (4/3) * numpy.pi * (self.radius ** 3)
|
98
|
+
return vol.to(units.meter ** 3)
|
99
|
+
|
88
100
|
def _add_to_3d_ax(self, scene: pyvista.Plotter, color: str = 'black', opacity: float = 1.0) -> None:
|
89
101
|
"""
|
90
102
|
Adds a 3D cone representation to the given PyVista plotting scene.
|
@@ -27,7 +27,7 @@ class Cylinder(CYLINDER, BaseScatterer):
|
|
27
27
|
source: BaseSource
|
28
28
|
|
29
29
|
property_names = [
|
30
|
-
"size_parameter", "cross_section", "g",
|
30
|
+
"size_parameter", "radius", "cross_section", "g",
|
31
31
|
"Qsca", "Qext", "Qabs",
|
32
32
|
"Csca", "Cext", "Cabs"
|
33
33
|
]
|
@@ -62,6 +62,11 @@ class Cylinder(CYLINDER, BaseScatterer):
|
|
62
62
|
source=self.source
|
63
63
|
)
|
64
64
|
|
65
|
+
@property
|
66
|
+
def radius(self) -> units.Quantity:
|
67
|
+
"""Return the radius of the cylinder."""
|
68
|
+
return self.diameter / 2
|
69
|
+
|
65
70
|
@property
|
66
71
|
def Cback(self) -> None:
|
67
72
|
raise NotImplementedError
|
@@ -1,6 +1,7 @@
|
|
1
1
|
#!/usr/bin/env python
|
2
2
|
# -*- coding: utf-8 -*-
|
3
3
|
|
4
|
+
import numpy
|
4
5
|
import pyvista
|
5
6
|
from PyOptik.material.base_class import BaseMaterial
|
6
7
|
|
@@ -29,7 +30,7 @@ class Sphere(SPHERE, BaseScatterer):
|
|
29
30
|
source: BaseSource
|
30
31
|
|
31
32
|
property_names = [
|
32
|
-
"size_parameter", "cross_section", "g",
|
33
|
+
"size_parameter", "radius", "volume", "cross_section", "g",
|
33
34
|
"Qsca", "Qext", "Qabs", "Qback", "Qratio", "Qpr",
|
34
35
|
"Csca", "Cext", "Cabs", "Cback", "Cratio", "Cpr"
|
35
36
|
]
|
@@ -66,6 +67,17 @@ class Sphere(SPHERE, BaseScatterer):
|
|
66
67
|
source=self.source
|
67
68
|
)
|
68
69
|
|
70
|
+
@property
|
71
|
+
def radius(self) -> units.Quantity:
|
72
|
+
"""Return the radius of the sphere."""
|
73
|
+
return self.diameter / 2
|
74
|
+
|
75
|
+
@property
|
76
|
+
def volume(self) -> units.Quantity:
|
77
|
+
"""Return the volume of the sphere."""
|
78
|
+
vol = (4/3) * numpy.pi * (self.radius ** 3)
|
79
|
+
return vol.to(units.meter ** 3)
|
80
|
+
|
69
81
|
def _add_to_3d_ax(self, scene: pyvista.Plotter, color: str = 'black', opacity: float = 1.0) -> None:
|
70
82
|
"""
|
71
83
|
Adds a 3D cone representation to the given PyVista plotting scene.
|
PyMieSim/special_functions.py
CHANGED
@@ -56,22 +56,21 @@ def spherical_to_cartesian(phi: numpy.ndarray, theta: numpy.ndarray, r: numpy.nd
|
|
56
56
|
|
57
57
|
|
58
58
|
def rotate_on_x(phi: numpy.ndarray, theta: numpy.ndarray, angle: float) -> tuple:
|
59
|
-
"""
|
60
|
-
Rotate spherical coordinates around the X-axis.
|
59
|
+
"""Rotate spherical coordinates around the X-axis.
|
61
60
|
|
62
61
|
Parameters
|
63
62
|
----------
|
64
63
|
phi : numpy.ndarray
|
65
|
-
|
64
|
+
Azimuthal angles in radians.
|
66
65
|
theta : numpy.ndarray
|
67
|
-
|
68
|
-
|
69
|
-
|
66
|
+
Polar angles in radians.
|
67
|
+
angle : float
|
68
|
+
Rotation angle about the X-axis, in radians.
|
70
69
|
|
71
70
|
Returns
|
72
71
|
-------
|
73
|
-
|
74
|
-
The
|
72
|
+
tuple
|
73
|
+
The rotated spherical coordinates ``(r, phi, theta)``.
|
75
74
|
"""
|
76
75
|
# Convert to Cartesian for rotation
|
77
76
|
x, y, z = spherical_to_cartesian(phi, theta)
|
Binary file
|
Binary file
|
Binary file
|
lib/libcpp_coreshell.a
ADDED
Binary file
|
lib/libcpp_cylinder.a
ADDED
Binary file
|
lib/libcpp_sphere.a
ADDED
Binary file
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: PyMieSim
|
3
|
-
Version: 3.5.4.
|
3
|
+
Version: 3.5.4.5
|
4
4
|
Summary: A package for light scattering computation.
|
5
5
|
Keywords: mie,scattering,backscatter,sphere,cylinder,nanoparticle,phase function,efficiency,rayleigh,backscattering
|
6
6
|
Author-Email: Martin Poinsinet de Sivry-Houle <martin.poinsinet.de.sivry@gmail.com>
|
@@ -54,22 +54,22 @@ Requires-Dist: MPSPlots==1.6.4
|
|
54
54
|
Requires-Dist: pydantic<2.12.0,>=2.9.2
|
55
55
|
Requires-Dist: pint-pandas~=0.6
|
56
56
|
Requires-Dist: pandas~=2.3.0
|
57
|
-
Requires-Dist: PyOptik==1.
|
57
|
+
Requires-Dist: PyOptik==1.11.0
|
58
58
|
Requires-Dist: tabulate~=0.9
|
59
59
|
Requires-Dist: pyvista==0.45.2
|
60
60
|
Provides-Extra: testing
|
61
61
|
Requires-Dist: pytest>=0.6; extra == "testing"
|
62
62
|
Requires-Dist: pytest-cov>=2.0; extra == "testing"
|
63
63
|
Requires-Dist: pytest-json-report==1.5.0; extra == "testing"
|
64
|
-
Requires-Dist: coverage==7.
|
64
|
+
Requires-Dist: coverage==7.9.2; extra == "testing"
|
65
65
|
Provides-Extra: documentation
|
66
|
-
Requires-Dist: numpydoc==1.
|
66
|
+
Requires-Dist: numpydoc==1.9.0; extra == "documentation"
|
67
67
|
Requires-Dist: sphinx>=5.1.1; extra == "documentation"
|
68
68
|
Requires-Dist: sphinx-rtd-theme==3.0.2; extra == "documentation"
|
69
69
|
Requires-Dist: sphinx-gallery==0.19.0; extra == "documentation"
|
70
70
|
Requires-Dist: pydata-sphinx-theme==0.16.1; extra == "documentation"
|
71
71
|
Provides-Extra: dev
|
72
|
-
Requires-Dist: flake8==7.
|
72
|
+
Requires-Dist: flake8==7.3.0; extra == "dev"
|
73
73
|
Description-Content-Type: text/x-rst
|
74
74
|
|
75
75
|
|logo|
|
@@ -86,191 +86,98 @@ Description-Content-Type: text/x-rst
|
|
86
86
|
- |ci/cd|
|
87
87
|
- |coverage|
|
88
88
|
- |colab|
|
89
|
-
* -
|
90
|
-
- |
|
91
|
-
- |
|
89
|
+
* - PyPI
|
90
|
+
- |PyPI|
|
91
|
+
- |PyPI_download|
|
92
92
|
-
|
93
93
|
* - Anaconda
|
94
94
|
- |anaconda|
|
95
95
|
- |anaconda_download|
|
96
96
|
- |anaconda_date|
|
97
97
|
|
98
|
-
|
99
|
-
|
100
|
-
|
101
98
|
PyMieSim
|
102
99
|
========
|
103
100
|
|
104
|
-
**PyMieSim** is
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
- **Spherical particles**
|
111
|
-
- **Infinite cylindrical particles**
|
112
|
-
- **Core-shell spherical particles**
|
113
|
-
|
114
|
-
The software also allows the user to customize the light source and detector attributes, depending on the specific simulation needs. The package is modular and provides an intuitive interface for users to model complex scattering scenarios with minimal effort.
|
115
|
-
|
116
|
-
|code_structure|
|
117
|
-
|
118
|
-
Main Submodules
|
119
|
-
---------------
|
120
|
-
|
121
|
-
PyMieSim is organized into two primary submodules:
|
122
|
-
|
123
|
-
1. **single**: Focused on analyzing individual scattering events, such as:
|
124
|
-
- Far-field distributions
|
125
|
-
- Scattering phase functions
|
126
|
-
- Stokes parameters
|
127
|
-
|
128
|
-
2. **experiment**: Designed for exploring how scattering parameters, such as `Qsca`, `Qext`, `g`, and `coupling (power)`, behave over large datasets, incorporating variations in sources, scatterers, and detectors.
|
101
|
+
**PyMieSim** is an open-source Python package for fast and flexible Mie
|
102
|
+
scattering simulations. It supports spherical, cylindrical and core--shell
|
103
|
+
particles and provides helper classes for custom sources and detectors.
|
104
|
+
The project targets both quick single-scatterer studies and large parametric
|
105
|
+
experiments.
|
129
106
|
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
---------------
|
137
|
-
|
138
|
-
To use PyMieSim in Python, simply install the package and begin incorporating it into your scripts.
|
107
|
+
Features
|
108
|
+
--------
|
109
|
+
- Solvers for spheres, cylinders and core--shell geometries.
|
110
|
+
- Built-in models for plane wave and Gaussian sources.
|
111
|
+
- Multiple detector types including photodiodes and coherent modes.
|
112
|
+
- Simple data analysis with pandas DataFrame outputs.
|
139
113
|
|
140
114
|
Installation
|
141
|
-
|
142
|
-
|
143
|
-
PyMieSim supports Windows, Linux, macOS (including Apple M1/M2 chips), and ARM architectures. To install the package, use pip:
|
115
|
+
------------
|
116
|
+
PyMieSim is available on PyPI and Anaconda. Install it with:
|
144
117
|
|
145
118
|
.. code-block:: bash
|
146
119
|
|
147
|
-
|
148
|
-
|
149
|
-
conda install PyMieSim (using conda environment manager)
|
120
|
+
pip install PyMieSim
|
121
|
+
conda install PyMieSim
|
150
122
|
|
151
|
-
|
152
|
-
|
153
|
-
----
|
154
|
-
|
155
|
-
Example Code
|
156
|
-
------------
|
123
|
+
See the `online documentation <https://pymiesim.readthedocs.io/>`_ for detailed
|
124
|
+
usage and additional examples.
|
157
125
|
|
158
|
-
|
126
|
+
Quick example
|
127
|
+
-------------
|
128
|
+
Below is a short example computing the scattering efficiency of a sphere.
|
159
129
|
|
160
130
|
.. code-block:: python
|
161
131
|
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
It produces the following figure which is equivalent to the one found on `wikipedia <https://en.wikipedia.org/wiki/Mie_scattering#/media/File:N4wiki.svg>`_.
|
191
|
-
|
192
|
-
|wikipedia_example|
|
193
|
-
|
194
|
-
|
195
|
-
This is just one example of PyMieSim in action. You can find more examples in the
|
196
|
-
`examples section <https://pymiesim.readthedocs.io/en/master/gallery/index.html>`_ of the documentation.
|
197
|
-
|
198
|
-
----
|
199
|
-
|
200
|
-
Examples
|
201
|
-
--------
|
202
|
-
|
203
|
-
Here are a few more examples showcasing the capabilities of PyMieSim:
|
204
|
-
|
205
|
-
Example 1: Plasmonic Resonances for CoreShell Particles
|
206
|
-
*******************************************************
|
207
|
-
|
208
|
-
|example_plasmon|
|
209
|
-
|
210
|
-
Example 2: Scattering Efficiency vs Diameter for Spherical Particles
|
211
|
-
********************************************************************
|
212
|
-
|
213
|
-
|example_qsca|
|
214
|
-
|
215
|
-
----
|
216
|
-
|
217
|
-
Manual Building
|
218
|
-
---------------
|
219
|
-
|
220
|
-
If you prefer or need to build the project manually (e.g., for Apple silicon devices), ensure you have a C++ compiler (such as gcc) and Fortran installed, as well as Python 3.7+.
|
221
|
-
|
222
|
-
Build Instructions
|
223
|
-
******************
|
224
|
-
|
225
|
-
Linux/MacOS
|
226
|
-
~~~~~~~~~~~
|
132
|
+
import numpy as np
|
133
|
+
from PyMieSim.experiment.scatterer import Sphere
|
134
|
+
from PyMieSim.experiment.source import Gaussian
|
135
|
+
from PyMieSim.experiment import Setup
|
136
|
+
from PyMieSim.units import nanometer, degree, watt, AU, RIU
|
137
|
+
|
138
|
+
source = Gaussian(
|
139
|
+
wavelength=np.linspace(400, 1000, 500) * nanometer,
|
140
|
+
polarization=0 * degree,
|
141
|
+
optical_power=1e-3 * watt,
|
142
|
+
NA=0.2 * AU,
|
143
|
+
)
|
144
|
+
|
145
|
+
scatterer = Sphere(
|
146
|
+
diameter=[200] * nanometer,
|
147
|
+
property=[4] * RIU,
|
148
|
+
medium_property=1 * RIU,
|
149
|
+
source=source,
|
150
|
+
)
|
151
|
+
|
152
|
+
experiment = Setup(scatterer=scatterer, source=source)
|
153
|
+
df = experiment.get("Qsca")
|
154
|
+
df.plot_data(x="source:wavelength")
|
155
|
+
|
156
|
+
Building from source
|
157
|
+
--------------------
|
158
|
+
For development or manual compilation, clone the repository and run:
|
227
159
|
|
228
160
|
.. code-block:: bash
|
229
161
|
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
sudo make install
|
237
|
-
cd ..
|
238
|
-
python -m pip install .
|
239
|
-
|
240
|
-
For Windows, use `MinGW Makefiles` instead of `Unix Makefiles` when invoking CMake.
|
241
|
-
|
242
|
-
----
|
162
|
+
git submodule update --init
|
163
|
+
mkdir build && cd build
|
164
|
+
cmake ../ -G"Unix Makefiles"
|
165
|
+
sudo make install
|
166
|
+
cd ..
|
167
|
+
python -m pip install .
|
243
168
|
|
244
169
|
Testing
|
245
170
|
-------
|
246
|
-
|
247
|
-
You can test the local version of PyMieSim by running the following commands:
|
171
|
+
Run the unit tests with:
|
248
172
|
|
249
173
|
.. code-block:: bash
|
250
174
|
|
251
|
-
|
252
|
-
|
253
|
-
pip install PyMieSim[testing]
|
254
|
-
pytest
|
255
|
-
|
256
|
-
This will run the suite of unit tests and provide coverage details.
|
257
|
-
|
258
|
-
----
|
259
|
-
|
260
|
-
Google Colab
|
261
|
-
------------
|
262
|
-
|
263
|
-
In 2024, running code on your local machine is optional! You can leverage the power of Google Colab to run PyMieSim remotely. Use the provided
|
264
|
-
`Colab notebook <https://colab.research.google.com/github/MartinPdeS/PyMieSim/blob/master/notebook.ipynb>`_ for an interactive experience.
|
265
|
-
|
266
|
-
|colab|
|
267
|
-
|
268
|
-
----
|
175
|
+
pip install PyMieSim[testing]
|
176
|
+
pytest
|
269
177
|
|
270
178
|
Citing PyMieSim
|
271
179
|
---------------
|
272
|
-
|
273
|
-
If PyMieSim contributes to your research, we kindly ask that you cite the following paper:
|
180
|
+
If you use PyMieSim in academic work, please cite:
|
274
181
|
|
275
182
|
.. code-block:: none
|
276
183
|
|
@@ -285,99 +192,56 @@ If PyMieSim contributes to your research, we kindly ask that you cite the follow
|
|
285
192
|
doi = {10.1364/OPTCON.473102},
|
286
193
|
}
|
287
194
|
|
288
|
-
|
289
|
-
|
290
|
-
|
291
|
-
|
292
|
-
Experimental Graphical User Interface (GUI)
|
293
|
-
-------------------------------------------
|
294
|
-
|
295
|
-
Since version 1.7.0, PyMieSim offers an experimental GUI for users who prefer a graphical approach to simulations. While still under development, the GUI can be installed and accessed as follows:
|
296
|
-
|
297
|
-
.. code-block:: bash
|
298
|
-
|
299
|
-
pip install PyMieSim
|
300
|
-
python -m PyMieSim
|
301
|
-
|
302
|
-
The GUI is not yet as robust as the core Python API, but it provides a simplified interface for generating simulations.
|
303
|
-
|
304
|
-
|example_gui|
|
305
|
-
|
306
|
-
----
|
307
|
-
|
308
|
-
Contact Information
|
309
|
-
-------------------
|
310
|
-
|
311
|
-
PyMieSim is actively developed and maintained by Martin Poinsinet de Sivry-Houle. If you're interested in contributing or have questions, feel free to reach out.
|
312
|
-
|
313
|
-
Email: `martin.poinsinet.de.sivry@gmail.ca <mailto:martin.poinsinet.de.sivry@gmail.ca?subject=PyMieSim>`_
|
314
|
-
|
315
|
-
Flag_0
|
316
|
-
|
317
|
-
----
|
195
|
+
Contact
|
196
|
+
-------
|
197
|
+
For questions or contributions, contact `martin.poinsinet.de.sivry@gmail.ca <mailto:martin.poinsinet.de.sivry@gmail.ca>`_.
|
318
198
|
|
319
199
|
.. |logo| image:: https://github.com/MartinPdeS/PyMieSim/raw/master/docs/images/logo.png
|
320
200
|
:alt: PyOptik logo
|
321
|
-
|
322
201
|
.. |python| image:: https://img.shields.io/pypi/pyversions/pymiesim.svg
|
323
202
|
:alt: Python
|
324
203
|
:target: https://www.python.org/
|
325
|
-
|
326
204
|
.. |zenodo| image:: https://zenodo.org/badge/DOI/10.5281/zenodo.5593704.svg
|
327
205
|
:alt: Scientific article
|
328
206
|
:target: https://doi.org/10.5281/zenodo.4556074
|
329
|
-
|
330
207
|
.. |colab| image:: https://colab.research.google.com/assets/colab-badge.svg
|
331
208
|
:alt: Google Colab
|
332
209
|
:target: https://colab.research.google.com/github/MartinPdeS/PyMieSim/blob/master/notebook.ipynb
|
333
|
-
|
334
210
|
.. |docs| image:: https://github.com/martinpdes/pymiesim/actions/workflows/deploy_documentation.yml/badge.svg
|
335
211
|
:target: https://martinpdes.github.io/PyMieSim/
|
336
212
|
:alt: Documentation Status
|
337
|
-
|
338
|
-
|
339
|
-
:alt: PyPi version
|
213
|
+
.. |PyPI| image:: https://badge.fury.io/py/PyMieSim.svg
|
214
|
+
:alt: PyPI version
|
340
215
|
:target: https://badge.fury.io/py/PyMieSim
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
:target: https://pypistats.org/packages/pymiesim
|
345
|
-
|
216
|
+
.. |PyPI_download| image:: https://img.shields.io/pypi/dm/PyMieSim?style=plastic&label=PyPI%20downloads&labelColor=hex&color=hex
|
217
|
+
:alt: PyPI downloads
|
218
|
+
:target: https://pypistats.org/packages/pymiesim
|
346
219
|
.. |coverage| image:: https://raw.githubusercontent.com/MartinPdeS/PyMieSim/python-coverage-comment-action-data/badge.svg
|
347
220
|
:alt: Unittest coverage
|
348
221
|
:target: https://htmlpreview.github.io/?https://github.com/MartinPdeS/PyMieSim/blob/python-coverage-comment-action-data/htmlcov/index.html
|
349
|
-
|
350
222
|
.. |ci/cd| image:: https://github.com/martinpdes/pymiesim/actions/workflows/deploy_coverage.yml/badge.svg
|
351
223
|
:alt: Unittest Status
|
352
|
-
|
353
224
|
.. |code_structure| image:: https://github.com/MartinPdeS/PyMieSim/raw/master/docs/images/code_structure.png
|
354
225
|
:width: 800
|
355
226
|
:alt: Structure of the library
|
356
|
-
|
357
227
|
.. |example_gui| image:: https://github.com/MartinPdeS/PyMieSim/raw/master/docs/images/example_gui.png
|
358
228
|
:width: 800
|
359
229
|
:alt: Structure of the library
|
360
|
-
|
361
230
|
.. |wikipedia_example| image:: https://github.com/MartinPdeS/PyMieSim/raw/master/docs/images/wikipedia_example.png
|
362
231
|
:width: 800
|
363
232
|
:alt: Example wikipedia
|
364
|
-
|
365
233
|
.. |example_plasmon| image:: https://github.com/MartinPdeS/PyMieSim/raw/master/docs/images/plasmonic_resonances.png
|
366
234
|
:width: 800
|
367
235
|
:alt: Plasmonic resonances
|
368
|
-
|
369
236
|
.. |example_qsca| image:: https://github.com/MartinPdeS/PyMieSim/raw/master/docs/images/Qsca_diameter.png
|
370
237
|
:width: 800
|
371
238
|
:alt: Qsca vs diameter
|
372
|
-
|
373
239
|
.. |anaconda| image:: https://anaconda.org/martinpdes/pymiesim/badges/version.svg
|
374
|
-
|
375
|
-
|
376
|
-
|
240
|
+
:alt: Anaconda version
|
241
|
+
:target: https://anaconda.org/martinpdes/pymiesim
|
377
242
|
.. |anaconda_download| image:: https://anaconda.org/martinpdes/pymiesim/badges/downloads.svg
|
378
|
-
|
379
|
-
|
380
|
-
|
243
|
+
:alt: Anaconda downloads
|
244
|
+
:target: https://anaconda.org/martinpdes/pymiesim
|
381
245
|
.. |anaconda_date| image:: https://anaconda.org/martinpdes/pymiesim/badges/latest_release_relative_date.svg
|
382
246
|
:alt: Latest release date
|
383
247
|
:target: https://anaconda.org/martinpdes/pymiesim
|
@@ -1,11 +1,15 @@
|
|
1
|
+
pymiesim-3.5.4.5.dist-info/RECORD,,
|
2
|
+
pymiesim-3.5.4.5.dist-info/WHEEL,sha256=IENW9wY17TDsb9YtMIxV0tAkLi5DnoeroR3ly0Og4ic,114
|
3
|
+
pymiesim-3.5.4.5.dist-info/METADATA,sha256=UE7WvTskwDHDoTz9L7WAoBbowWUtasfF2_211pgCHdY,9562
|
4
|
+
pymiesim-3.5.4.5.dist-info/licenses/LICENSE,sha256=-QSWDJghhVqbAzChmEK86liqPX_eeQFgdwlrKTLLcIA,1088
|
1
5
|
PyMieSim/units.py,sha256=L7Trn8rW5d5AQK1_8I-XwaHGswXklupXs5wHgWQtJNQ,4224
|
2
|
-
PyMieSim/_version.py,sha256=
|
6
|
+
PyMieSim/_version.py,sha256=v2LXp9KAX7rDH85j1MBGjQ1-ebpfIccy0NiAxrH4Cas,516
|
3
7
|
PyMieSim/directories.py,sha256=ohe9qvjwN0IJ7OpZHsD7LxKYGMLr4CC7xYUGgWgw-Rg,648
|
4
|
-
PyMieSim/__init__.py,sha256=
|
8
|
+
PyMieSim/__init__.py,sha256=ZRdkOFRqjkVCq0qQs4DHIFnAgkdtBr19gZaq1k6bzxw,453
|
5
9
|
PyMieSim/mesh.py,sha256=WcX_rXpWxH7WDniIqaG4rPC-pfDm4AG9ZAX-zI8GbhU,14566
|
6
10
|
PyMieSim/polarization.py,sha256=PP8ksfWeTOnW3IOGVsAe8L183pgqe5R-KKBF99nQhaU,5487
|
7
|
-
PyMieSim/special_functions.py,sha256=
|
8
|
-
PyMieSim/__main__.py,sha256=
|
11
|
+
PyMieSim/special_functions.py,sha256=tC82qnTSpcNv0MFy5wZsVFwhbJKy_5tO8kBullijOaY,2093
|
12
|
+
PyMieSim/__main__.py,sha256=KO6-uwDgv95PHXlhpyIcyFX3qqddbI8HdQTsdqziz7g,237
|
9
13
|
PyMieSim/single/__init__.py,sha256=GqpWQIaAkruQ4d1fa_fI2Qf8b5TGNXRFdkuHoe8LsTc,2207
|
10
14
|
PyMieSim/single/representations.py,sha256=ThzTI0fQYhWC8LKHMLo17GOT3v6cSOa1n4iplNitn2A,29149
|
11
15
|
PyMieSim/single/source/__init__.py,sha256=zCiDBYIE0TdYbtQXPgfU70DNz7ZxqtENU_NvrThJpTg,93
|
@@ -13,10 +17,10 @@ PyMieSim/single/source/planewave.py,sha256=J2t78fseCthUzCLqjH1KD7H669kGwiyBxPjkC
|
|
13
17
|
PyMieSim/single/source/base.py,sha256=HKqsEVw7caNV7ev8OVNPi3zMHc4cgGuhH9s2XcgvgBw,124
|
14
18
|
PyMieSim/single/source/gaussian.py,sha256=vVZ7UVkhlm2KvsTOf2uVcm9rjgXISSs7sv798m9otp4,4849
|
15
19
|
PyMieSim/single/scatterer/__init__.py,sha256=2a9o-VHfqGloCEEbfIGSjLIIzWssRCt9W72AYvU2nSg,124
|
16
|
-
PyMieSim/single/scatterer/core_shell.py,sha256=
|
20
|
+
PyMieSim/single/scatterer/core_shell.py,sha256=fqhu2PooEUDo7Vnotio7_iz2stozC5i5XczP8vdOKMs,5074
|
17
21
|
PyMieSim/single/scatterer/base.py,sha256=CVVI8_nSgoF_BkEN0Fb_A61YHgMnKfOiKaKbe60NsD8,19701
|
18
|
-
PyMieSim/single/scatterer/sphere.py,sha256=
|
19
|
-
PyMieSim/single/scatterer/cylinder.py,sha256=
|
22
|
+
PyMieSim/single/scatterer/sphere.py,sha256=NVBP9iUX0pAPWdi13xbMzgLfllDPCgvF5BuJuWfUUec,3847
|
23
|
+
PyMieSim/single/scatterer/cylinder.py,sha256=GNABjAb2csnWxANlIdJW7PhuuewJHMVAlzNmlfnz7eU,4062
|
20
24
|
PyMieSim/single/detector/uncoherent.py,sha256=DOqf5hU5ghEhj8IooC5uJX6pjMwNBveIr-FzcWkgTLk,4848
|
21
25
|
PyMieSim/single/detector/__init__.py,sha256=os2BbDrnjrEZ3-gie6AKJAZHyE_I4OvKo0uuDEKqpE0,89
|
22
26
|
PyMieSim/single/detector/base.py,sha256=2nKXdx-8ycg1Xm02rxV4TJIAHbQWHCOR-9T32byf5zs,11319
|
@@ -54,43 +58,39 @@ PyMieSim/experiment/setup.py,sha256=_dt2urIwClCKiKWJjgF4kNOB98gTj1XLNMSPf3KGYOU,
|
|
54
58
|
PyMieSim/experiment/utils.py,sha256=H4KkYMN33NSm9nwman0vk-umW9ecMsPKujQ4zkctMzc,5380
|
55
59
|
PyMieSim/experiment/dataframe_subclass.py,sha256=qPD_XW8x4WApQFdNOHJHt-Mc3BoT1b9y28dWmpZxccU,7174
|
56
60
|
PyMieSim/experiment/source/__init__.py,sha256=tAfSmMqMTem6-obvbOHD2YK7l4UDh1g-20t789_1Ihw,64
|
57
|
-
PyMieSim/experiment/source/planewave.py,sha256=
|
61
|
+
PyMieSim/experiment/source/planewave.py,sha256=62RHOHCuTj0LrZ_0IAmLSiVyYyPRvRnLfBQIbdI0gwo,2480
|
58
62
|
PyMieSim/experiment/source/base.py,sha256=QDe7CTQVQthI0KDmvLET4-5kxbv7ESuplmiU2Ubn1LM,3104
|
59
|
-
PyMieSim/experiment/source/gaussian.py,sha256=
|
63
|
+
PyMieSim/experiment/source/gaussian.py,sha256=DRkap4C9vHHV85yE6Cj2qM3MsoZbNdX_wSilBRParE4,2331
|
60
64
|
PyMieSim/experiment/scatterer/__init__.py,sha256=_19R38S6LSGuuFRRPTFK1Lv2jaSoFk6O1V7CdwdhLXo,124
|
61
|
-
PyMieSim/experiment/scatterer/core_shell.py,sha256=
|
62
|
-
PyMieSim/experiment/scatterer/base.py,sha256=
|
63
|
-
PyMieSim/experiment/scatterer/sphere.py,sha256=
|
64
|
-
PyMieSim/experiment/scatterer/cylinder.py,sha256=
|
65
|
+
PyMieSim/experiment/scatterer/core_shell.py,sha256=4VbxS6Evcz5sjNlB3wtMTdScXCPLHov87Vr3HNlH-AQ,3470
|
66
|
+
PyMieSim/experiment/scatterer/base.py,sha256=3hesoH2tNh2JtyOSSefU7Jl1WWjVpf8-QFmM1IfaR6Q,3879
|
67
|
+
PyMieSim/experiment/scatterer/sphere.py,sha256=tPZMCfrGlttVh6W2kJSLxzz1zvKEQNC7CmVk5yIaBSM,2845
|
68
|
+
PyMieSim/experiment/scatterer/cylinder.py,sha256=yr8fJsX-tj5HaCqxQOd4UccUxvWylZRgHXhXTL4tflE,2538
|
65
69
|
PyMieSim/experiment/detector/photodiode.py,sha256=GBSoF3mhVRyADJbEO2g4n0LffmGU7HOc5gDGF-ojgLQ,1850
|
66
70
|
PyMieSim/experiment/detector/coherent_mode.py,sha256=ME1CtxUfPY40E3HJoqJrW0ikje6QvhMY4RYs-yOvx0Q,1805
|
67
71
|
PyMieSim/experiment/detector/__init__.py,sha256=pvtXHKR2pM7JOeTTcouKipeQwi0e8dZiZTpdAn9K2Ls,75
|
68
72
|
PyMieSim/experiment/detector/base.py,sha256=j2yY_InLQDAPgDkM19ILlIEF-2koGMKRe9Hc-nFpyGc,7340
|
69
|
-
PyMieSim/binary/interface_experiment.cpython-311-darwin.so,sha256=
|
70
|
-
PyMieSim/binary/
|
71
|
-
PyMieSim/binary/
|
72
|
-
PyMieSim/binary/
|
73
|
-
PyMieSim/binary/interface_experiment.cpython-310-darwin.so,sha256=UCgdLZHrbVmEZ432PUrIHE8P8lAlM_IDyx0hEZqd3nU,456752
|
74
|
-
PyMieSim/binary/libcpp_sphere.a,sha256=RiG4zsdj3hjnjaoVwGKglQRxQcQyBPURcJD0BERFj1Y,175040
|
73
|
+
PyMieSim/binary/interface_experiment.cpython-311-darwin.so,sha256=j-bh2Ec8tOKyVRCQwgYr5L5Xi4LWUJUFamhlT7N5vf4,491584
|
74
|
+
PyMieSim/binary/libcpp_coordinates.a,sha256=Mt8nMTbKyfjMeKsMKIYMicXtLKPsxBeWrRVWAQ2-Xpo,22432
|
75
|
+
PyMieSim/binary/libcpp_source.a,sha256=58kr2_ce-wPQ2PQk6hXS8R0BMr0oeKTZ5HNpatoe_W4,6720
|
76
|
+
PyMieSim/binary/interface_experiment.cpython-310-darwin.so,sha256=4fBEUHQlYLuesrGM45q23MiGDHJ2SC6D6OyuFhS1kT8,474976
|
75
77
|
PyMieSim/binary/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
76
|
-
PyMieSim/binary/interface_detector.cpython-311-darwin.so,sha256=
|
77
|
-
PyMieSim/binary/interface_source.cpython-310-darwin.so,sha256=
|
78
|
-
PyMieSim/binary/libcpp_fibonacci.a,sha256=
|
79
|
-
PyMieSim/binary/
|
80
|
-
PyMieSim/binary/
|
81
|
-
PyMieSim/binary/
|
82
|
-
PyMieSim/binary/
|
83
|
-
PyMieSim/binary/
|
84
|
-
PyMieSim/binary/
|
85
|
-
PyMieSim/binary/
|
86
|
-
PyMieSim/binary/
|
87
|
-
PyMieSim/binary/
|
88
|
-
PyMieSim/binary/
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
pymiesim-3.5.4.1.dist-info/METADATA,sha256=lF-Jv_Pr0ijVs5CZmGwC_LF4dH68v33pIcICD6h1zMo,13472
|
96
|
-
pymiesim-3.5.4.1.dist-info/licenses/LICENSE,sha256=-QSWDJghhVqbAzChmEK86liqPX_eeQFgdwlrKTLLcIA,1088
|
78
|
+
PyMieSim/binary/interface_detector.cpython-311-darwin.so,sha256=lh_RCWgRN4R1wKI3q-tWLtC_8666eV09V3H0qafR0q8,492336
|
79
|
+
PyMieSim/binary/interface_source.cpython-310-darwin.so,sha256=WKhrAqfJWndYN1ACTmjnD7W4qHu0OPZiE4kK7Zu-de0,240624
|
80
|
+
PyMieSim/binary/libcpp_fibonacci.a,sha256=MXr4xeSIAcx0S9mVmcV6PZcVOc5JYeRcdH-TjoQ8O_0,14160
|
81
|
+
PyMieSim/binary/interface_sets.cpython-310-darwin.so,sha256=67faOdm74RVKsEq-bRptcZTtagRfYbSdRkAW9njxtJ0,579360
|
82
|
+
PyMieSim/binary/libcpp_experiment.a,sha256=j2Yrg0QN9sXHbyLbDnbAJ1dJZRJVxCs9dtJUU4eGa60,169792
|
83
|
+
PyMieSim/binary/libcpp_mode_field.a,sha256=ad-2UuIk5cppPbtz9kReFaIXvhZOaIIbivX05Idv60w,10960
|
84
|
+
PyMieSim/binary/interface_scatterer.cpython-310-darwin.so,sha256=UdqKQyH0KUkGlW1PIz891BnfDiUQ08QqHRDcDQda4MI,559936
|
85
|
+
PyMieSim/binary/interface_detector.cpython-310-darwin.so,sha256=Cm8QqjfgCodblQQfRTFgh9kTxYMmS-D55E_w7ND4N9o,475776
|
86
|
+
PyMieSim/binary/interface_source.cpython-311-darwin.so,sha256=8ZwlKEMALhwE8u7vvSH_LlEpimsPcQtB8BnubLyKW0M,240624
|
87
|
+
PyMieSim/binary/interface_sets.cpython-311-darwin.so,sha256=4rRbWfSR1jQ1cF328qHIfYZN1em6sJMr3pbGw9wHALo,579440
|
88
|
+
PyMieSim/binary/libcpp_sets.a,sha256=iPv9lTLXCnny7cLccZtXdLlg4i6PH1yEmsy56wZQBOo,169784
|
89
|
+
PyMieSim/binary/interface_scatterer.cpython-311-darwin.so,sha256=W9qVZz9zvi4cRU_GgqMMQnxsx6KhKQ5cx3IaUxynYI8,576512
|
90
|
+
PyMieSim/binary/libcpp_detector.a,sha256=GyurmEyjjbn7mOzUmsJHB8Kvei2Uy4rgkaWQuMPW4zQ,197008
|
91
|
+
lib/libcpp_cylinder.a,sha256=yDA7dQyrf0DGyMjnKho5LlAoZRFGyd8C7jPV1ZN82Qs,183416
|
92
|
+
lib/libcpp_sphere.a,sha256=UdyqW1E7d7_c3-eCmhUMamcdF-6FgAOnN2SPQG7gD0M,194448
|
93
|
+
lib/libZBessel.a,sha256=4osQ_eyR5SeeP9Sf-Y_5CEmTKsqm9A1mFxS1HB1UnDg,106200
|
94
|
+
lib/lib_ZBessel.a,sha256=My2vrFOh6MECN9CD_w02sU7y9d6vMH6KHGjlshTjpFA,9840
|
95
|
+
lib/libcpp_coreshell.a,sha256=niwGl-yj2Ew3vt4OkG8_Id_8i7GEokIMlb2BKICgt3g,193240
|
96
|
+
lib/libcpp_base_scatterer.a,sha256=vbNU7blRiTAGassBRk7m9Ahin5A-QA6LYP_wMfSeMT8,194376
|
Binary file
|
Binary file
|
Binary file
|
PyMieSim/binary/libcpp_sphere.a
DELETED
Binary file
|
File without changes
|