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.
- surface_plasmon_model-0.1.0/PKG-INFO +101 -0
- surface_plasmon_model-0.1.0/README.md +85 -0
- surface_plasmon_model-0.1.0/pyproject.toml +40 -0
- surface_plasmon_model-0.1.0/setup.cfg +4 -0
- surface_plasmon_model-0.1.0/src/surface_plasmon_model/__init__.py +11 -0
- surface_plasmon_model-0.1.0/src/surface_plasmon_model/drude.py +35 -0
- surface_plasmon_model-0.1.0/src/surface_plasmon_model/spp.py +20 -0
- surface_plasmon_model-0.1.0/src/surface_plasmon_model.egg-info/PKG-INFO +101 -0
- surface_plasmon_model-0.1.0/src/surface_plasmon_model.egg-info/SOURCES.txt +10 -0
- surface_plasmon_model-0.1.0/src/surface_plasmon_model.egg-info/dependency_links.txt +1 -0
- surface_plasmon_model-0.1.0/src/surface_plasmon_model.egg-info/requires.txt +4 -0
- surface_plasmon_model-0.1.0/src/surface_plasmon_model.egg-info/top_level.txt +1 -0
|
@@ -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,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 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
surface_plasmon_model
|