@galihru/mnp-mie 0.1.2 → 0.1.3

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 +125 -172
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -1,173 +1,126 @@
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)
1
+ # @galihru/mnp-mie
2
+
3
+ Rayleigh quasi-static scattering formulas for spherical metallic nanoparticles in a homogeneous dielectric medium. Computes complex polarizability and electromagnetic cross sections � extinction, scattering, and absorption � within the electric-dipole approximation, valid for particle radius *a* � ?.
4
+
5
+ ---
6
+
7
+ ## Physical Background
8
+
9
+ In the Rayleigh (quasi-static) limit, the electromagnetic response of a small sphere is fully characterised by its induced electric dipole moment. The key quantity is the complex polarizability a, which encodes both radiative (scattering) and non-radiative (absorption) optical losses. This framework underpins localized surface plasmon resonance (LSPR) spectroscopy, photothermal therapy, and surface-enhanced sensing.
10
+
11
+ ---
12
+
13
+ ## Implemented Formulations
14
+
15
+ ### 1. Quasi-static Polarizability (Clausius�Mossotti)
16
+
17
+ For a sphere of radius *a* with permittivity e? in an embedding medium with permittivity e?:
18
+
19
+ ![a = 4pa�(ep-em)/(ep+2em)](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])
20
+
21
+ The **Fr�hlich resonance** (LSPR condition) occurs when:
22
+
23
+ ![Re(ep + 2em) = 0](https://latex.codecogs.com/svg.latex?\mathrm{Re}(\varepsilon_p+2\varepsilon_m)=0)
24
+
25
+ ---
26
+
27
+ ### 2. Wave Number in the Embedding Medium
28
+
29
+ ![k = (2p/?)vem](https://latex.codecogs.com/svg.latex?k=\frac{2\pi}{\lambda}\sqrt{\varepsilon_m}\quad[\mathrm{nm}^{-1}])
30
+
31
+ where ? is the free-space wavelength in nanometres.
32
+
33
+ ---
34
+
35
+ ### 3. Electromagnetic Cross Sections
36
+
37
+ **Extinction cross section** � total power removed from the incident beam:
38
+
39
+ ![Cext = k Im(a)](https://latex.codecogs.com/svg.latex?C_{\mathrm{ext}}=k\,\mathrm{Im}(\alpha)\quad[\mathrm{nm}^2])
40
+
41
+ **Scattering cross section** � power re-radiated as scattered light:
42
+
43
+ ![Csca = |k|4/(6p)|a|�](https://latex.codecogs.com/svg.latex?C_{\mathrm{sca}}=\frac{|k|^4}{6\pi}|\alpha|^2\quad[\mathrm{nm}^2])
44
+
45
+ **Absorption cross section** � power dissipated as Ohmic heat:
46
+
47
+ ![Cabs = Cext - Csca](https://latex.codecogs.com/svg.latex?C_{\mathrm{abs}}=C_{\mathrm{ext}}-C_{\mathrm{sca}}\quad[\mathrm{nm}^2])
48
+
49
+ ---
50
+
51
+ ## Install
52
+
53
+ ```bash
54
+ npm install @galihru/mnp-mie
55
+ ```
56
+
57
+ ---
58
+
59
+ ## API Reference
60
+
61
+ ### `rayleighPolarizability(radiusNm, epsParticle, epsMedium)`
62
+
63
+ Returns the complex polarizability a of a sphere.
64
+
65
+ ```js
66
+ import { complex, rayleighPolarizability } from "@galihru/mnp-mie";
67
+
68
+ const epsParticle = complex(-7.45, 1.23); // Au at 548 nm
69
+ const epsMedium = complex(1.769, 0.0); // water
70
+
71
+ const alpha = rayleighPolarizability(50, epsParticle, epsMedium);
72
+ // ? { re: ..., im: ... } [nm�]
73
+ ```
74
+
75
+ ---
76
+
77
+ ### `rayleighCrossSections(wavelengthNm, radiusNm, epsParticle, epsMedium)`
78
+
79
+ Returns extinction, scattering, and absorption cross sections in nm�.
80
+
81
+ ```js
82
+ import { complex, rayleighCrossSections } from "@galihru/mnp-mie";
83
+
84
+ const epsParticle = complex(-7.45, 1.23);
85
+ const epsMedium = complex(1.769, 0.0);
86
+
87
+ // Single wavelength
88
+ const cs = rayleighCrossSections(548.1, 50, epsParticle, epsMedium);
89
+ // ? { cExt: ..., cSca: ..., cAbs: ... } [nm�]
90
+
91
+ // Spectral scan (array input)
92
+ const cs = rayleighCrossSections(
93
+ [400, 450, 500, 548, 600, 700],
94
+ 50,
95
+ [eps400, eps450, eps500, eps548, eps600, eps700],
96
+ [em400, em450, em500, em548, em600, em700]
97
+ );
98
+ // ? [{ cExt, cSca, cAbs }, ...]
99
+ ```
100
+
101
+ ---
102
+
103
+ ### `complex(re, im)`
104
+
105
+ Constructs a complex number `{ re, im }`.
106
+
107
+ ```js
108
+ import { complex } from "@galihru/mnp-mie";
109
+
110
+ const z = complex(-5.2, 2.1);
111
+ // ? { re: -5.2, im: 2.1 }
112
+ ```
113
+
114
+ ---
115
+
116
+ ## Keywords
117
+
118
+ mie-scattering rayleigh nanoparticle � cross-section � extinction � polarizability � plasmonics � nanophotonics � lspr � absorption
119
+
120
+ ---
121
+
122
+ ## Author
123
+
124
+ **GALIH RIDHO UTOMO** � g4lihru@students.unnes.ac.id
125
+ Universitas Negeri Semarang (UNNES)
120
126
  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
-
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.3",
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",