@galihru/mnp-mie 0.1.2 → 0.1.4

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.
Files changed (2) hide show
  1. package/README.md +129 -173
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -1,173 +1,129 @@
1
- # @galihru/mnp-mie
2
-
3
- Rayleigh quasi-static scattering formulas for spherical metallic nanoparticles in a homogeneous embedding medium.
4
- Computes complex polarizability and electromagnetic cross sections (extinction, scattering, absorption) within the dipole approximation, valid when the particle radius satisfies *a* ≪ λ.
5
-
6
- ---
7
-
8
- ## Physical Background
9
-
10
- In the Rayleigh (quasi-static) limit, the electromagnetic response of a small sphere is fully characterised by the induced electric dipole moment, parameterised through the complex polarizability α. This approach is the foundation for single-particle spectroscopy, surface-enhanced sensing, and photothermal applications.
11
-
12
- ---
13
-
14
- ## Implemented Formulations
15
-
16
- ### 1. Quasi-static Polarizability
17
-
18
- For a sphere of radius *a* with permittivity εₚ embedded in a medium with permittivity εₘ:
19
-
20
- ![α = 4πa³(εp−εm)/(εp+2εm)](https://latex.codecogs.com/svg.latex?\alpha=4\pi%20a^3\frac{\varepsilon_p-\varepsilon_m}{\varepsilon_p+2\varepsilon_m})
21
-
22
- The Fröhlich resonance condition (localized surface plasmon resonance) occurs when:
23
-
24
- ![Re(εp + 2εm) = 0](https://latex.codecogs.com/svg.latex?\mathrm{Re}(\varepsilon_p+2\varepsilon_m)=0)
25
-
26
- ---
27
-
28
- ### 2. Wave Number in the Embedding Medium
29
-
30
- ![k = (2π/λ)√εm](https://latex.codecogs.com/svg.latex?k=\frac{2\pi}{\lambda}\sqrt{\varepsilon_m})
31
-
32
- where λ is the free-space wavelength in nanometres.
33
-
34
- ---
35
-
36
- ### 3. Electromagnetic Cross Sections
37
-
38
- **Extinction cross section** (energy removed from the incident beam):
39
-
40
- ![Cext = k Im(α)](https://latex.codecogs.com/svg.latex?C_{\mathrm{ext}}=k\,\mathrm{Im}(\alpha))
41
-
42
- **Scattering cross section** (radiatively re-emitted energy):
43
-
44
- ![Csca = |k|⁴/(6π)|α|²](https://latex.codecogs.com/svg.latex?C_{\mathrm{sca}}=\frac{|k|^4}{6\pi}|\alpha|^2)
45
-
46
- **Absorption cross section** (non-radiative, Ohmic dissipation):
47
-
48
- ![Cabs = Cext − Csca](https://latex.codecogs.com/svg.latex?C_{\mathrm{abs}}=C_{\mathrm{ext}}-C_{\mathrm{sca}})
49
-
50
- All cross sections are expressed in nm².
51
-
52
- ---
53
-
54
- ## Install
55
-
56
- ```bash
57
- npm install @galihru/mnp-mie
58
- ```
59
-
60
- ---
61
-
62
- ## API Reference
63
-
64
- ### `rayleighPolarizability(radiusNm, epsParticle, epsMedium)`
65
-
66
- Returns the complex polarizability α.
67
-
68
- ```js
69
- import { complex, rayleighPolarizability } from "@galihru/mnp-mie";
70
-
71
- const epsParticle = complex(-7.45, 1.23); // e.g. Au at 548 nm
72
- const epsMedium = complex(1.769, 0.0); // water
73
-
74
- const alpha = rayleighPolarizability(50, epsParticle, epsMedium);
75
- // { re: ..., im: ... } [nm³]
76
- ```
77
-
78
- ---
79
-
80
- ### `rayleighCrossSections(wavelengthNm, radiusNm, epsParticle, epsMedium)`
81
-
82
- Returns extinction, scattering, and absorption cross sections.
83
-
84
- ```js
85
- import { complex, rayleighCrossSections } from "@galihru/mnp-mie";
86
-
87
- const epsParticle = complex(-7.45, 1.23);
88
- const epsMedium = complex(1.769, 0.0);
89
-
90
- const cs = rayleighCrossSections(548.1, 50, epsParticle, epsMedium);
91
- // { cExt: ..., cSca: ..., cAbs: ... } [nm²]
92
-
93
- // Array input (wavelength scan)
94
- const spectra = rayleighCrossSections(
95
- [400, 450, 500, 548, 600, 700],
96
- 50,
97
- [eps400, eps450, ...],
98
- [em400, em450, ...]
99
- );
100
- ```
101
-
102
- ---
103
-
104
- ### `complex(re, im)`
105
-
106
- Constructs a complex number.
107
-
108
- ```js
109
- import { complex } from "@galihru/mnp-mie";
110
-
111
- const z = complex(-5.2, 2.1); // → { re: -5.2, im: 2.1 }
112
- ```
113
-
114
- ---
115
-
116
- ## Author
117
-
118
- **GALIH RIDHO UTOMO** · g4lihru@students.unnes.ac.id
119
- University of Semarang State (UNNES)
120
- License: GPL-2.0-only
121
-
122
-
123
- ## Implemented Formulations
124
-
125
- ### Polarizability
126
-
127
- ![α = 4πa³(εp−εm)/(εp+2εm)](https://latex.codecogs.com/svg.latex?\alpha=4\pi%20a^3\frac{\varepsilon_p-\varepsilon_m}{\varepsilon_p+2\varepsilon_m})
128
-
129
- ### Wave Number in Medium
130
-
131
- ![k = (2π/λ)√εm](https://latex.codecogs.com/svg.latex?k=\frac{2\pi}{\lambda}\sqrt{\varepsilon_m})
132
-
133
- ### Cross Sections
134
-
135
- Extinction:
136
-
137
- ![C_ext = k Im(α)](https://latex.codecogs.com/svg.latex?C_{\mathrm{ext}}=k\,\mathrm{Im}(\alpha))
138
-
139
- Scattering:
140
-
141
- ![C_sca = |k|⁴/(6π)|α|²](https://latex.codecogs.com/svg.latex?C_{\mathrm{sca}}=\frac{|k|^4}{6\pi}|\alpha|^2)
142
-
143
- Absorption:
144
-
145
- ![C_abs = C_ext − C_sca](https://latex.codecogs.com/svg.latex?C_{\mathrm{abs}}=C_{\mathrm{ext}}-C_{\mathrm{sca}})
146
-
147
- ## Install
148
-
149
- ```bash
150
- npm install @galihru/mnp-mie
151
- ```
152
-
153
- ## API
154
-
155
- ```js
156
- import { complex, rayleighPolarizability, rayleighCrossSections } from "@galihru/mnp-mie";
157
-
158
- const epsParticle = complex(-5.2, 2.1);
159
- const epsMedium = complex(1.77, 0.0);
160
-
161
- // Polarizability (radius in nm)
162
- const alpha = rayleighPolarizability(50, epsParticle, epsMedium);
163
-
164
- // Cross sections (wavelength in nm, radius in nm)
165
- const cs = rayleighCrossSections(548.1, 50, epsParticle, epsMedium);
166
- console.log(cs); // { ext: ..., sca: ..., abs: ... }
167
- ```
168
-
169
- ## Author
170
-
171
- **GALIH RIDHO UTOMO** — g4lihru@students.unnes.ac.id
172
- License: GPL-2.0-only
173
-
1
+ # @galihru/mnp-mie
2
+
3
+ Rayleigh quasi-static scattering formulas for spherical metallic nanoparticles
4
+ in a homogeneous dielectric medium. Computes complex polarizability and
5
+ electromagnetic cross sections -- extinction, scattering, and absorption --
6
+ within the electric-dipole approximation, valid for particle radius a << lambda.
7
+
8
+ ---
9
+
10
+ ## Physical Background
11
+
12
+ In the Rayleigh (quasi-static) limit, the electromagnetic response of a small
13
+ sphere is fully characterised by its induced electric dipole moment. The key
14
+ quantity is the complex polarizability alpha, which encodes both radiative
15
+ (scattering) and non-radiative (absorption) optical losses. This framework
16
+ underpins localized surface plasmon resonance (LSPR) spectroscopy, photothermal
17
+ therapy, and surface-enhanced sensing.
18
+
19
+ ---
20
+
21
+ ## Implemented Formulations
22
+
23
+ ### 1. Quasi-static Polarizability (Clausius-Mossotti)
24
+
25
+ For a sphere of radius *a* with permittivity eps_p in an embedding medium with
26
+ permittivity eps_m:
27
+
28
+ ![alpha](https://latex.codecogs.com/svg.latex?\alpha=4\pi%20a^3\frac{\varepsilon_p-\varepsilon_m}{\varepsilon_p+2\varepsilon_m}\quad[\mathrm{nm}^3])
29
+
30
+ The **Frohlich resonance** (LSPR condition) occurs when:
31
+
32
+ ![Frohlich](https://latex.codecogs.com/svg.latex?\mathrm{Re}(\varepsilon_p+2\varepsilon_m)=0)
33
+
34
+ ---
35
+
36
+ ### 2. Wave Number in the Embedding Medium
37
+
38
+ ![k in medium](https://latex.codecogs.com/svg.latex?k=\frac{2\pi}{\lambda}\sqrt{\varepsilon_m}\quad[\mathrm{nm}^{-1}])
39
+
40
+ where lambda is the free-space wavelength in nanometres.
41
+
42
+ ---
43
+
44
+ ### 3. Electromagnetic Cross Sections
45
+
46
+ **Extinction cross section** -- total power removed from the incident beam:
47
+
48
+ ![C_ext](https://latex.codecogs.com/svg.latex?C_{\mathrm{ext}}=k\,\mathrm{Im}(\alpha)\quad[\mathrm{nm}^2])
49
+
50
+ **Scattering cross section** -- power re-radiated as scattered light:
51
+
52
+ ![C_sca](https://latex.codecogs.com/svg.latex?C_{\mathrm{sca}}=\frac{|k|^4}{6\pi}|\alpha|^2\quad[\mathrm{nm}^2])
53
+
54
+ **Absorption cross section** -- power dissipated as Ohmic heat:
55
+
56
+ ![C_abs](https://latex.codecogs.com/svg.latex?C_{\mathrm{abs}}=C_{\mathrm{ext}}-C_{\mathrm{sca}}\quad[\mathrm{nm}^2])
57
+
58
+ ---
59
+
60
+ ## Install
61
+
62
+ ```bash
63
+ npm install @galihru/mnp-mie
64
+ ```
65
+
66
+ ---
67
+
68
+ ## API Reference
69
+
70
+ ### `rayleighPolarizability(radiusNm, epsParticle, epsMedium)`
71
+
72
+ Returns the complex polarizability alpha of a sphere.
73
+
74
+ ```js
75
+ import { complex, rayleighPolarizability } from "@galihru/mnp-mie";
76
+
77
+ const epsParticle = complex(-7.45, 1.23); // Au at 548 nm
78
+ const epsMedium = complex(1.769, 0.0); // water
79
+
80
+ const alpha = rayleighPolarizability(50, epsParticle, epsMedium);
81
+ // -> { re: ..., im: ... } [nm^3]
82
+ ```
83
+
84
+ ---
85
+
86
+ ### `rayleighCrossSections(wavelengthNm, radiusNm, epsParticle, epsMedium)`
87
+
88
+ Returns extinction, scattering, and absorption cross sections in nm^2.
89
+
90
+ ```js
91
+ import { complex, rayleighCrossSections } from "@galihru/mnp-mie";
92
+
93
+ const epsParticle = complex(-7.45, 1.23);
94
+ const epsMedium = complex(1.769, 0.0);
95
+
96
+ // Single wavelength
97
+ const cs = rayleighCrossSections(548.1, 50, epsParticle, epsMedium);
98
+ // -> { cExt: ..., cSca: ..., cAbs: ... } [nm^2]
99
+
100
+ // Spectral scan (array input)
101
+ const scan = rayleighCrossSections(
102
+ [400, 450, 500, 548, 600, 700],
103
+ 50,
104
+ [eps400, eps450, eps500, eps548, eps600, eps700],
105
+ [em400, em450, em500, em548, em600, em700]
106
+ );
107
+ // -> [{ cExt, cSca, cAbs }, ...]
108
+ ```
109
+
110
+ ---
111
+
112
+ ### `complex(re, im)`
113
+
114
+ Constructs a complex number `{ re, im }`.
115
+
116
+ ```js
117
+ import { complex } from "@galihru/mnp-mie";
118
+
119
+ const z = complex(-5.2, 2.1);
120
+ // -> { re: -5.2, im: 2.1 }
121
+ ```
122
+
123
+ ---
124
+
125
+ ## Author
126
+
127
+ **GALIH RIDHO UTOMO** | g4lihru@students.unnes.ac.id
128
+ Universitas Negeri Semarang (UNNES)
129
+ License: GPL-2.0-only
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@galihru/mnp-mie",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "Rayleigh quasi-static scattering: polarizability and electromagnetic cross sections for spherical nanoparticles.",
5
5
  "type": "module",
6
6
  "main": "./src/index.js",