@galihru/mnp-mie 0.1.1 → 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 -55
  2. package/package.json +14 -2
package/README.md CHANGED
@@ -1,56 +1,126 @@
1
- # @galihru/mnp-mie
2
-
3
- Rayleigh-limit scattering formulas for small spherical particles.
4
- JavaScript port of the [mnpbem-mie](https://pypi.org/project/mnpbem-mie/) Python module.
5
-
6
- ## Implemented Formulations
7
-
8
- ### Polarizability
9
-
10
- ![α = 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})
11
-
12
- ### Wave Number in Medium
13
-
14
- ![k = (2π/λ)√εm](https://latex.codecogs.com/svg.latex?k=\frac{2\pi}{\lambda}\sqrt{\varepsilon_m})
15
-
16
- ### Cross Sections
17
-
18
- Extinction:
19
-
20
- ![C_ext = k Im(α)](https://latex.codecogs.com/svg.latex?C_{\mathrm{ext}}=k\,\mathrm{Im}(\alpha))
21
-
22
- Scattering:
23
-
24
- ![C_sca = |k|⁴/(6π)|α|²](https://latex.codecogs.com/svg.latex?C_{\mathrm{sca}}=\frac{|k|^4}{6\pi}|\alpha|^2)
25
-
26
- Absorption:
27
-
28
- ![C_abs = C_ext − C_sca](https://latex.codecogs.com/svg.latex?C_{\mathrm{abs}}=C_{\mathrm{ext}}-C_{\mathrm{sca}})
29
-
30
- ## Install
31
-
32
- ```bash
33
- npm install @galihru/mnp-mie
34
- ```
35
-
36
- ## API
37
-
38
- ```js
39
- import { complex, rayleighPolarizability, rayleighCrossSections } from "@galihru/mnp-mie";
40
-
41
- const epsParticle = complex(-5.2, 2.1);
42
- const epsMedium = complex(1.77, 0.0);
43
-
44
- // Polarizability (radius in nm)
45
- const alpha = rayleighPolarizability(50, epsParticle, epsMedium);
46
-
47
- // Cross sections (wavelength in nm, radius in nm)
48
- const cs = rayleighCrossSections(548.1, 50, epsParticle, epsMedium);
49
- console.log(cs); // { ext: ..., sca: ..., abs: ... }
50
- ```
51
-
52
- ## Author
53
-
54
- **GALIH RIDHO UTOMO** — g4lihru@students.unnes.ac.id
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)
55
126
  License: GPL-2.0-only
56
-
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@galihru/mnp-mie",
3
- "version": "0.1.1",
4
- "description": "Rayleigh-limit scattering formulations for spherical particles.",
3
+ "version": "0.1.3",
4
+ "description": "Rayleigh quasi-static scattering: polarizability and electromagnetic cross sections for spherical nanoparticles.",
5
5
  "type": "module",
6
6
  "main": "./src/index.js",
7
7
  "exports": {
@@ -11,6 +11,18 @@
11
11
  "src",
12
12
  "README.md"
13
13
  ],
14
+ "keywords": [
15
+ "mie-scattering",
16
+ "rayleigh",
17
+ "nanoparticle",
18
+ "cross-section",
19
+ "extinction",
20
+ "polarizability",
21
+ "plasmonics",
22
+ "nanophotonics",
23
+ "scattering",
24
+ "absorption"
25
+ ],
14
26
  "author": "GALIH RIDHO UTOMO <g4lihru@students.unnes.ac.id>",
15
27
  "license": "GPL-2.0-only",
16
28
  "repository": {