A Python toolkit for fast computation of near and far-field quantities for plasmonic nanoparticles in the quasistatic regime.
fastplasmon is a reduced-order Neumann–Poincaré eigensolver for plasmonic nanoparticles based on geometry-adapted multipolar modes.
The framework is based on a Galerkin projection of the Neumann–Poincaré (NP) operator onto a geometry-adapted multipolar basis derived from regular solid harmonics. Instead of discretizing the full boundary integral operator using tens of thousands of mesh degrees of freedom, the plasmonic eigensystem is represented in a compact basis of physically meaningful multipolar channels.
The resulting reduced-order model provides:
- Geometry-dependent NP eigenvalues and eigenmodes
- Multipolar decomposition of plasmonic charge distributions
- Reconstruction of plasmon modes from analytical basis functions
- Polarizability tensors and far-field observables
- Efficient simulation of large nanoparticle assemblies
The approach separates geometry and material response, allowing the eigenmodes of a nanoparticle to be computed once and subsequently combined with arbitrary dielectric functions.
The surface charge density is represented as
where the basis functions are obtained from geometry-adapted solid harmonics
For spherical particles the basis reproduces the exact Neumann–Poincaré eigenfunctions, while for arbitrary geometries it provides a compact and physically interpretable representation of plasmonic modes.
- Support for arbitrary triangulated nanoparticle meshes
- Geometry-only extraction of Neumann–Poincaré eigenvalues
$\kappa_n \in (-1/2,1/2)$ - Reduced-order Galerkin eigensolver
- Geometry-adapted multipolar basis
- Multipolar decomposition coefficients
$c_{lm}$ - Invariant multipolar fractions $ \eta_l $
- Surface charge reconstruction from analytical basis functions
- Polarizability tensor extraction
- Extinction, absorption and scattering spectra
- Near-field evaluation
The key ideas implemented in fastplasmon are:
The nanoparticle surface charge density is represented in a basis constructed from solid harmonics evaluated in normalized principal coordinates. This allows smooth geometrical deformations to be captured using a small number of physically meaningful channels.
The continuous NP eigenproblem
is projected onto the multipolar basis, yielding the generalized eigenvalue problem
The NP eigenpairs
depend only on geometry.
Material properties enter only through the resonance condition
Each plasmonic mode can be characterized through invariant multipolar fractions
which quantify the contribution of each angular-momentum sector independently of the chosen basis representation.
Plasmonic charge distributions can be reconstructed from a small number of multipolar channels
providing direct physical interpretation of complex nanoparticle modes.
from core.material import *
from core.mesh_core import *
from core.fp_K import *
from core.geometries import *
factory = MeshFactory(verbose=True)
vertices, faces = factory.ellipsoid(a=10.0, c=66.0, n_theta = 25, n_phi = 40, beta = 0.75)
solver = ShapeSolver(
vertices = vertices,
faces = faces,
verbose=False,
l_modes=[1,3,5],
)
# scompute surface charge density
sigma_modes = solver.compute_sigma_modes(normalize=False)
# NP eigenvalues
kappa = solver.kappa_n
# Modal dipoles
p = solver.compute_mode_dipoles()
Paulo S. S. dos Santos
INESC TEC - Institute of Systems and Computer Engineering, Technology and Science. Porto, Portugal
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
This project is licensed under the AGPLv3 license.