@galihru/mnp-mie
v0.1.4
Published
Rayleigh quasi-static scattering: polarizability and electromagnetic cross sections for spherical nanoparticles.
Downloads
535
Maintainers
Readme
@galihru/mnp-mie
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 << lambda.
Physical Background
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 alpha, 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.
Implemented Formulations
1. Quasi-static Polarizability (Clausius-Mossotti)
For a sphere of radius a with permittivity eps_p in an embedding medium with permittivity eps_m:
The Frohlich resonance (LSPR condition) occurs when:
2. Wave Number in the Embedding Medium
where lambda is the free-space wavelength in nanometres.
3. Electromagnetic Cross Sections
Extinction cross section -- total power removed from the incident beam:
Scattering cross section -- power re-radiated as scattered light:
Absorption cross section -- power dissipated as Ohmic heat:
Install
npm install @galihru/mnp-mieAPI Reference
rayleighPolarizability(radiusNm, epsParticle, epsMedium)
Returns the complex polarizability alpha of a sphere.
import { complex, rayleighPolarizability } from "@galihru/mnp-mie";
const epsParticle = complex(-7.45, 1.23); // Au at 548 nm
const epsMedium = complex(1.769, 0.0); // water
const alpha = rayleighPolarizability(50, epsParticle, epsMedium);
// -> { re: ..., im: ... } [nm^3]rayleighCrossSections(wavelengthNm, radiusNm, epsParticle, epsMedium)
Returns extinction, scattering, and absorption cross sections in nm^2.
import { complex, rayleighCrossSections } from "@galihru/mnp-mie";
const epsParticle = complex(-7.45, 1.23);
const epsMedium = complex(1.769, 0.0);
// Single wavelength
const cs = rayleighCrossSections(548.1, 50, epsParticle, epsMedium);
// -> { cExt: ..., cSca: ..., cAbs: ... } [nm^2]
// Spectral scan (array input)
const scan = rayleighCrossSections(
[400, 450, 500, 548, 600, 700],
50,
[eps400, eps450, eps500, eps548, eps600, eps700],
[em400, em450, em500, em548, em600, em700]
);
// -> [{ cExt, cSca, cAbs }, ...]complex(re, im)
Constructs a complex number { re, im }.
import { complex } from "@galihru/mnp-mie";
const z = complex(-5.2, 2.1);
// -> { re: -5.2, im: 2.1 }Author
GALIH RIDHO UTOMO | [email protected] Universitas Negeri Semarang (UNNES) License: GPL-2.0-only
