Sjoerd de Haan, DataDrivenLab · July 2025 · ML for materials and measurement

Modeling Gold Nanosphere UV/Vis with SCUFF-EM and GMSH

Electromagnetic Modeling of Gold Nanospheres

Today I’m exploring computational electromagnetic simulation of gold nanoparticles to predict their UV/Vis absorption spectra. This connects to my previous work on gold nanorod optical profiles - but instead of using existing quantum simulation data, I’m trying to model the physics directly.

The Setup: 20nm Gold Sphere in Water

Gold nanoparticles exhibit strong surface plasmon resonance (SPR) that creates characteristic absorption peaks in the UV/Vis spectrum. For a 20nm diameter gold sphere in water, we expect:

Tools: SCUFF-EM + GMSH

SCUFF-EM (Surface CUrrent/Field Formulation - ElectroMagnetics):

GMSH:

Geometry Definition

The sphere geometry is defined in sphere.geo:

// Sphere.geo - Creates a sphere of radius 10 nm (20 nm diameter)
SetFactory("OpenCASCADE");

// Create a sphere centered at origin (radius in nanometers)
Sphere(1) = {0, 0, 0, 10e-9};

// Set mesh characteristic length 
Characteristic Length{:} = 1e-10;

// Define physical surface (for SCUFF-EM)
Physical Surface("sphere_surface") = {1};

Key considerations:

Expected Physics

For a 20nm gold sphere in water, the dominant physics is:

  1. Mie scattering: Exact analytical solution exists for spheres
  2. Localized Surface Plasmon Resonance (LSPR): Collective electron oscillation
  3. Size effects: Small particles → broader resonances
  4. Environment: Water shifts resonance vs vacuum

The resonance frequency depends on: ωLSPR∝nbulknmedium2+2nbulk\omega_{\text{LSPR}} \propto \sqrt{\frac{n_{\text{bulk}}}{n_{\text{medium}}^2 + 2n_{\text{bulk}}}}

Where nbulkn_{\text{bulk}} is the bulk gold permittivity and nmediumn_{\text{medium}} is water’s refractive index.

Complete Workflow Implementation

Based on the detailed blueprint, I’ve created a complete SCUFF-EM simulation workflow:

Files

  1. nanosphere_water.scuffgeo - SCUFF-EM geometry file defining:
    • Gold nanoparticle with Drude model optical properties
    • Water environment with Sellmeier dispersion
    • Alternative materials (silver, TiO2) commented out
  2. generate_frequencies.py - Python script to generate angular frequencies:
    • UV/Vis range: 200-800 nm in 10 nm steps
    • Converts wavelengths to SCUFF-EM angular frequency format
    • Creates omega_UVVis.dat input file
  3. run_uvvis.sh - Bash script for complete simulation:
    • Generates frequencies and mesh automatically
    • Runs scuff-scatter with appropriate parameters
    • Calculates extinction, absorption, and scattering
  4. process_uvvis.py - Results analysis script:
    • Extracts cross sections from SCUFF-EM output
    • Plots extinction, absorption, scattering spectra
    • Calculates efficiency factors and identifies plasmon peak
    • Saves data and publication-quality figures

Usage

# Run complete simulation
./run_uvvis.sh

# Process results and create plots
./process_uvvis.py

Expected Output

For a 10nm radius gold sphere in water:

Physics Validation

The simulation includes:

This provides a direct computational path from nanoparticle geometry to UV/Vis spectrum, complementing the experimental data analysis from the previous nanorod work.

Working on a simulation or measurement pipeline that is too slow to iterate on? Book Free Consultation.