Skip to main content

Toolkit for fast computation of near and far-field quantities for plasmonic nanoparticles in the weakly retarded regime

Project description

logo

A Python toolkit for fast computation of near and far-field quantities for plasmonic nanoparticles in the quasistatic and weakly retarded regime.

PyPI version PyPI downloads License

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

paulo.s.santos@inesctec.pt

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

This version

0.1

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

fastplasmon-0.1.tar.gz (28.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

fastplasmon-0.1-py3-none-any.whl (26.5 kB view details)

Uploaded Python 3

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

Hashes for fastplasmon-0.1.tar.gz
Algorithm Hash digest
SHA256 b99d600ec115ff57948119915445224bc99fc1e741c7c1a85dc2193d28b6cc6b
MD5 d5f76f55b7a6f2bdd96df3ace4710e66
BLAKE2b-256 8cb23b4d67603b4aa89c6cc6f4b9c0246cd5d8074c586c05f3d633c91df35807

See more details on using hashes here.

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

Hashes for fastplasmon-0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f368b1bb477b75fcdb5625297d5bc863c0b592b4b75f0a14974d457fa40383de
MD5 f4e70598a3b4f9db26d3c3911ca6ce51
BLAKE2b-256 3fae5438b27ea460d995f29f16018001ebab2a86ebde7c3f9a9079b97419564b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page