Toolkit for fast computation of near and far-field quantities for plasmonic nanoparticles in the weakly retarded regime
Project description
A Python toolkit for fast computation of near and far-field quantities for plasmonic nanoparticles in the quasistatic and weakly retarded regime.
Overview
fastplasmon is a Python library for ultrafast dipolar electrostatic modeling of plasmonic nanoparticles with arbitrary geometry.
This method assumes that the surface charge density can be expanded as a series of multipole moments:
$$ \sigma(\mathbf{s}) = \sigma_{\text{monopole}}(\mathbf{s}) + \sigma_{\text{dipole}}(\mathbf{s}) + \sigma_{\text{quadrupole}}(\mathbf{s}) + \cdots $$
and retains only the dipole component
For strongly retarded regimes or higher-order multipolar effects, full-wave solvers (e.g., BEM, FEM, DDA) remain necessary.
This package currently supports single plasmonic nanoparticles composed of a single material embedded in a homogeneous medium, allowing the calculation of:
- LSPR spectra
- Geometry-only extraction of dipolar Neumann–Poincaré (K) eigenvalues
- Near-field mapping
- Efficient refractive-index sensitivity and biosensing analysis
Citing fastplasmon
If you use fastplasmon in your research, please cite the accompanying paper:
P. S. S. dos Santos, J. P. Mendes, J. M. M. M. de Almeida, L. C. C. Coelho, "Ultrafast Dipolar Electrostatic Modeling of Plasmonic Nanoparticles with Arbitrary Geometry" (2026).
https://doi.org/10.48550/arXiv.2601.16797
Core Features
- Support for arbitrary triangulated nanoparticle meshes
- Calculation of surface charge density
- Geometry-only extraction of intrinsic dipolar eigenvalues $\kappa_n \in (-1/2, 1/2)$
- Polarizibility tensor extraction
- Spectral response: Extinction, scattering, and absorption cross sections
- Inclusion of Modified Long-Wavelength Approximation (MLWA) for weak retardation (ka<0.7)
- Near-field evaluation: Field decay profiles for conformal dielectric coatings and effective refractive-index modeling for biosensing layers
- Computation time scales with $O(N^2)$ for matrix assembly, however, runtime is nearly independent of the number of wavelengths
Algorithmic Highlights
The key algorithmic ideas implemented in fastplasmon are:
-
Dipole-subspace operator projection
The K operator is projected onto the basis ${x(s), y(s), z(s)}$, yielding a 3×3 generalized eigenproblem. -
Matrix-free K application
The K operator is applied directly to the dipole basis using Numba-accelerated kernels, avoiding dense matrix storage. -
Symmetrized reduced operators
Discrete self-adjointness is enforced at the reduced level, ensuring physically admissible eigenvalues. -
Separation of geometry and material response
All geometry-dependent quantities are computed once; material dispersion enters only through scalar expressions.
Installation
From PyPI:
pip install fastplasmon
From source:
git clone https://github.com/INESCTEC/fastplasmon.git
cd fastplasmon
pip install -e .
Basic Usage
A minimal workflow:
from fastplasmon import ArbitraryShapeDipolarSolver
solver = ArbitraryShapeDipolarSolver(
vertices, faces,
epsilon=eps_metal,
medium_epsilon=eps_host
)
# Project K operator onto dipole subspace
kappa, R_dip, a_dip, w_dip = solver.projectK_modes()
# Compute polarizability and extinction
Cext = solver.extinction(
wavelength,
eps_medium,
eps_metal
)
Authors
Paulo S. S. dos Santos
INESC TEC - Institute of Systems and Computer Engineering, Technology and Science. Porto, Portugal
License
This project is licensed under the AGPLv3 license.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fastplasmon-0.1.tar.gz.
File metadata
- Download URL: fastplasmon-0.1.tar.gz
- Upload date:
- Size: 28.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b99d600ec115ff57948119915445224bc99fc1e741c7c1a85dc2193d28b6cc6b
|
|
| MD5 |
d5f76f55b7a6f2bdd96df3ace4710e66
|
|
| BLAKE2b-256 |
8cb23b4d67603b4aa89c6cc6f4b9c0246cd5d8074c586c05f3d633c91df35807
|
File details
Details for the file fastplasmon-0.1-py3-none-any.whl.
File metadata
- Download URL: fastplasmon-0.1-py3-none-any.whl
- Upload date:
- Size: 26.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.11.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f368b1bb477b75fcdb5625297d5bc863c0b592b4b75f0a14974d457fa40383de
|
|
| MD5 |
f4e70598a3b4f9db26d3c3911ca6ce51
|
|
| BLAKE2b-256 |
3fae5438b27ea460d995f29f16018001ebab2a86ebde7c3f9a9079b97419564b
|