surface-plasmon-model 0.1.0__tar.gz

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.
@@ -0,0 +1,101 @@
1
+ Metadata-Version: 2.4
2
+ Name: surface-plasmon-model
3
+ Version: 0.1.0
4
+ Summary: Python tools for modeling surface plasmon polaritons at metal-dielectric interfaces
5
+ Keywords: surface plasmons,surface plasmon polaritons,plasmonics,optics,electromagnetism,Drude model
6
+ Classifier: Development Status :: 3 - Alpha
7
+ Classifier: Intended Audience :: Science/Research
8
+ Classifier: Programming Language :: Python :: 3
9
+ Classifier: Topic :: Scientific/Engineering :: Physics
10
+ Requires-Python: >=3.10
11
+ Description-Content-Type: text/markdown
12
+ Requires-Dist: numpy
13
+ Requires-Dist: scipy
14
+ Requires-Dist: matplotlib
15
+ Requires-Dist: pandas
16
+
17
+ # Surface Plasmon Model
18
+
19
+ A Python package for modelling surface plasmon polaritons (SPPs) at planar metal–dielectric interfaces.
20
+
21
+ The project is being developed as part of a study into the electromagnetic behaviour of surface plasmons and the effects of metal and dielectric properties on their propagation.
22
+
23
+ ## Current Features
24
+
25
+ The package currently includes:
26
+
27
+ * Drude-model complex dielectric permittivity
28
+ * Surface plasmon polariton wavevector calculation
29
+ * Support for complex-valued electromagnetic quantities
30
+ * Calculation across wavelength and frequency ranges
31
+
32
+ Future development will include:
33
+
34
+ * SPP dispersion relations
35
+ * Propagation length
36
+ * Penetration depth into the metal and dielectric
37
+ * Electromagnetic field distributions
38
+ * Comparison of different metals
39
+ * Comparison of different dielectric materials
40
+ * Experimental optical-constant data
41
+ * Drude and Drude–Lorentz material models
42
+
43
+ ## Installation
44
+
45
+ During development, the package can be installed locally using:
46
+
47
+ `python -m pip install -e .`
48
+
49
+ Once released through PyPI, installation will use:
50
+
51
+ `python -m pip install surface-plasmon-model`
52
+
53
+ ## Basic Usage
54
+
55
+ ```python
56
+ from surface_plasmon_model import (
57
+ drude_permittivity,
58
+ spp_wavevector,
59
+ )
60
+ ```
61
+
62
+ The Drude dielectric function is
63
+
64
+ $$
65
+ \varepsilon_m(\omega)
66
+ =
67
+ \varepsilon_\infty
68
+ -
69
+ \frac{\omega_p^2}
70
+ {\omega^2+i\gamma\omega}.
71
+ $$
72
+
73
+ The surface plasmon polariton wavevector at a planar metal–dielectric interface is
74
+
75
+ $$
76
+ k_{\mathrm{SPP}}
77
+ =
78
+ \frac{\omega}{c}
79
+ \sqrt{
80
+ \frac{\varepsilon_m\varepsilon_d}
81
+ {\varepsilon_m+\varepsilon_d}
82
+ }.
83
+ $$
84
+
85
+ ## Project Structure
86
+
87
+ ```text
88
+ Surface_Plasmons/
89
+ ├── notebooks/
90
+ ├── src/
91
+ │ └── surface_plasmon_model/
92
+ │ ├── __init__.py
93
+ │ ├── drude.py
94
+ │ └── spp.py
95
+ ├── pyproject.toml
96
+ └── README.md
97
+ ```
98
+
99
+ ## Status
100
+
101
+ This package is currently under active development and should be considered an early research version.
@@ -0,0 +1,85 @@
1
+ # Surface Plasmon Model
2
+
3
+ A Python package for modelling surface plasmon polaritons (SPPs) at planar metal–dielectric interfaces.
4
+
5
+ The project is being developed as part of a study into the electromagnetic behaviour of surface plasmons and the effects of metal and dielectric properties on their propagation.
6
+
7
+ ## Current Features
8
+
9
+ The package currently includes:
10
+
11
+ * Drude-model complex dielectric permittivity
12
+ * Surface plasmon polariton wavevector calculation
13
+ * Support for complex-valued electromagnetic quantities
14
+ * Calculation across wavelength and frequency ranges
15
+
16
+ Future development will include:
17
+
18
+ * SPP dispersion relations
19
+ * Propagation length
20
+ * Penetration depth into the metal and dielectric
21
+ * Electromagnetic field distributions
22
+ * Comparison of different metals
23
+ * Comparison of different dielectric materials
24
+ * Experimental optical-constant data
25
+ * Drude and Drude–Lorentz material models
26
+
27
+ ## Installation
28
+
29
+ During development, the package can be installed locally using:
30
+
31
+ `python -m pip install -e .`
32
+
33
+ Once released through PyPI, installation will use:
34
+
35
+ `python -m pip install surface-plasmon-model`
36
+
37
+ ## Basic Usage
38
+
39
+ ```python
40
+ from surface_plasmon_model import (
41
+ drude_permittivity,
42
+ spp_wavevector,
43
+ )
44
+ ```
45
+
46
+ The Drude dielectric function is
47
+
48
+ $$
49
+ \varepsilon_m(\omega)
50
+ =
51
+ \varepsilon_\infty
52
+ -
53
+ \frac{\omega_p^2}
54
+ {\omega^2+i\gamma\omega}.
55
+ $$
56
+
57
+ The surface plasmon polariton wavevector at a planar metal–dielectric interface is
58
+
59
+ $$
60
+ k_{\mathrm{SPP}}
61
+ =
62
+ \frac{\omega}{c}
63
+ \sqrt{
64
+ \frac{\varepsilon_m\varepsilon_d}
65
+ {\varepsilon_m+\varepsilon_d}
66
+ }.
67
+ $$
68
+
69
+ ## Project Structure
70
+
71
+ ```text
72
+ Surface_Plasmons/
73
+ ├── notebooks/
74
+ ├── src/
75
+ │ └── surface_plasmon_model/
76
+ │ ├── __init__.py
77
+ │ ├── drude.py
78
+ │ └── spp.py
79
+ ├── pyproject.toml
80
+ └── README.md
81
+ ```
82
+
83
+ ## Status
84
+
85
+ This package is currently under active development and should be considered an early research version.
@@ -0,0 +1,40 @@
1
+ [build-system]
2
+ requires = ["setuptools>=77"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "surface-plasmon-model"
7
+ version = "0.1.0"
8
+
9
+ description = "Python tools for modeling surface plasmon polaritons at metal-dielectric interfaces"
10
+
11
+ readme = "README.md"
12
+
13
+ requires-python = ">=3.10"
14
+
15
+ keywords = [
16
+ "surface plasmons",
17
+ "surface plasmon polaritons",
18
+ "plasmonics",
19
+ "optics",
20
+ "electromagnetism",
21
+ "Drude model"
22
+ ]
23
+
24
+ dependencies = [
25
+ "numpy",
26
+ "scipy",
27
+ "matplotlib",
28
+ "pandas"
29
+ ]
30
+
31
+ classifiers = [
32
+ "Development Status :: 3 - Alpha",
33
+ "Intended Audience :: Science/Research",
34
+ "Programming Language :: Python :: 3",
35
+ "Topic :: Scientific/Engineering :: Physics"
36
+ ]
37
+
38
+ [tool.setuptools.packages.find]
39
+ where = ["src"]
40
+ include = ["surface_plasmon_model*"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,11 @@
1
+ """
2
+ Surface Plasmon Model
3
+
4
+ Tools for modelling surface plasmon polaritons
5
+ at metal-dielectric interfaces.
6
+ """
7
+
8
+ from .drude import drude_permittivity
9
+ from .spp import spp_wavevector
10
+
11
+ __version__ = "0.1.0"
@@ -0,0 +1,35 @@
1
+ import numpy as np
2
+
3
+
4
+ def drude_permittivity(omega, epsilon_inf, omega_p, gamma):
5
+ """
6
+ Calculate the complex relative permittivity
7
+ of a metal using the Drude model.
8
+
9
+ Parameters
10
+ ----------
11
+ omega : float or ndarray
12
+ Angular frequency in rad/s.
13
+
14
+ epsilon_inf : float
15
+ High-frequency permittivity.
16
+
17
+ omega_p : float
18
+ Plasma frequency in rad/s.
19
+
20
+ gamma : float
21
+ Damping frequency in rad/s.
22
+
23
+ Returns
24
+ -------
25
+ complex or ndarray
26
+ Complex relative permittivity.
27
+ """
28
+
29
+ epsilon = (
30
+ epsilon_inf
31
+ - omega_p**2 /
32
+ (omega**2 + 1j * gamma * omega)
33
+ )
34
+
35
+ return epsilon
@@ -0,0 +1,20 @@
1
+ import numpy as np
2
+
3
+ from scipy.constants import c
4
+
5
+
6
+ def spp_wavevector(omega, epsilon_m, epsilon_d):
7
+ """
8
+ Calculate the complex wavevector
9
+ of a surface plasmon polariton.
10
+ """
11
+
12
+ k0 = omega / c
13
+
14
+ k_spp = k0 * np.sqrt(
15
+ (epsilon_m * epsilon_d)
16
+ /
17
+ (epsilon_m + epsilon_d)
18
+ )
19
+
20
+ return k_spp
@@ -0,0 +1,101 @@
1
+ Metadata-Version: 2.4
2
+ Name: surface-plasmon-model
3
+ Version: 0.1.0
4
+ Summary: Python tools for modeling surface plasmon polaritons at metal-dielectric interfaces
5
+ Keywords: surface plasmons,surface plasmon polaritons,plasmonics,optics,electromagnetism,Drude model
6
+ Classifier: Development Status :: 3 - Alpha
7
+ Classifier: Intended Audience :: Science/Research
8
+ Classifier: Programming Language :: Python :: 3
9
+ Classifier: Topic :: Scientific/Engineering :: Physics
10
+ Requires-Python: >=3.10
11
+ Description-Content-Type: text/markdown
12
+ Requires-Dist: numpy
13
+ Requires-Dist: scipy
14
+ Requires-Dist: matplotlib
15
+ Requires-Dist: pandas
16
+
17
+ # Surface Plasmon Model
18
+
19
+ A Python package for modelling surface plasmon polaritons (SPPs) at planar metal–dielectric interfaces.
20
+
21
+ The project is being developed as part of a study into the electromagnetic behaviour of surface plasmons and the effects of metal and dielectric properties on their propagation.
22
+
23
+ ## Current Features
24
+
25
+ The package currently includes:
26
+
27
+ * Drude-model complex dielectric permittivity
28
+ * Surface plasmon polariton wavevector calculation
29
+ * Support for complex-valued electromagnetic quantities
30
+ * Calculation across wavelength and frequency ranges
31
+
32
+ Future development will include:
33
+
34
+ * SPP dispersion relations
35
+ * Propagation length
36
+ * Penetration depth into the metal and dielectric
37
+ * Electromagnetic field distributions
38
+ * Comparison of different metals
39
+ * Comparison of different dielectric materials
40
+ * Experimental optical-constant data
41
+ * Drude and Drude–Lorentz material models
42
+
43
+ ## Installation
44
+
45
+ During development, the package can be installed locally using:
46
+
47
+ `python -m pip install -e .`
48
+
49
+ Once released through PyPI, installation will use:
50
+
51
+ `python -m pip install surface-plasmon-model`
52
+
53
+ ## Basic Usage
54
+
55
+ ```python
56
+ from surface_plasmon_model import (
57
+ drude_permittivity,
58
+ spp_wavevector,
59
+ )
60
+ ```
61
+
62
+ The Drude dielectric function is
63
+
64
+ $$
65
+ \varepsilon_m(\omega)
66
+ =
67
+ \varepsilon_\infty
68
+ -
69
+ \frac{\omega_p^2}
70
+ {\omega^2+i\gamma\omega}.
71
+ $$
72
+
73
+ The surface plasmon polariton wavevector at a planar metal–dielectric interface is
74
+
75
+ $$
76
+ k_{\mathrm{SPP}}
77
+ =
78
+ \frac{\omega}{c}
79
+ \sqrt{
80
+ \frac{\varepsilon_m\varepsilon_d}
81
+ {\varepsilon_m+\varepsilon_d}
82
+ }.
83
+ $$
84
+
85
+ ## Project Structure
86
+
87
+ ```text
88
+ Surface_Plasmons/
89
+ ├── notebooks/
90
+ ├── src/
91
+ │ └── surface_plasmon_model/
92
+ │ ├── __init__.py
93
+ │ ├── drude.py
94
+ │ └── spp.py
95
+ ├── pyproject.toml
96
+ └── README.md
97
+ ```
98
+
99
+ ## Status
100
+
101
+ This package is currently under active development and should be considered an early research version.
@@ -0,0 +1,10 @@
1
+ README.md
2
+ pyproject.toml
3
+ src/surface_plasmon_model/__init__.py
4
+ src/surface_plasmon_model/drude.py
5
+ src/surface_plasmon_model/spp.py
6
+ src/surface_plasmon_model.egg-info/PKG-INFO
7
+ src/surface_plasmon_model.egg-info/SOURCES.txt
8
+ src/surface_plasmon_model.egg-info/dependency_links.txt
9
+ src/surface_plasmon_model.egg-info/requires.txt
10
+ src/surface_plasmon_model.egg-info/top_level.txt
@@ -0,0 +1,4 @@
1
+ numpy
2
+ scipy
3
+ matplotlib
4
+ pandas