amtsolver

Compilation of programs for the interaction between fast electrons and a spherical nanoparticle

https://github.com/luisbrise/amtsolver

Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (8.5%) to scientific vocabulary
Last synced: 6 months ago · JSON representation ·

Repository

Compilation of programs for the interaction between fast electrons and a spherical nanoparticle

Basic Info
  • Host: GitHub
  • Owner: LuisBrise
  • License: mit
  • Language: C++
  • Default Branch: main
  • Size: 1.86 MB
Statistics
  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 0
Created 11 months ago · Last pushed 10 months ago
Metadata Files
Readme License Citation

README.md

AMTsolver - Angular Momentum Transfer Solver

Overview

AMTsolver is a C++ program that calculates the spectral angular momentum (dL/dω) transferred to a nanoparticle (NP) due to interaction with a fast-moving electron. The calculation is performed by analytically solving the closed surface integral, resulting in a double multipolar sum expression. The program focuses exclusively on the external field contribution and calculates the total angular momentum transfer (ΔL) for different values of the impact parameter b.

Features

  • Computes frequency integrals using Gauss-Kronrod quadrature with adaptive partition
  • Saves spectral results to dldw_*.dat files
  • Saves integrated angular momentum results to DL_*.dat files
  • Supports multiple parameter sets via CLI
  • Automatic convergence checking with configurable threshold
  • Parallel computation support (via OpenMP)

Prerequisites

  • C++17 compatible compiler (g++ recommended)
  • Boost libraries (version 1.70+)
  • complex_bessel library
  • CLI11 (for command line parsing)

Installation

bash git clone https://github.com/yourusername/AMTsolver.git cd AMTsolver mkdir build

Standard build

bash g++ -Iinclude -c src/IN51.cpp -o build/IN51.o g++ -Iinclude -Iinclude/Dielectric/DrudeAl -c src/main.cpp -o build/main.o -lcomplex_bessel g++ build/IN51.o build/main.o -o bin/AMTsolver -lcomplex_bessel

Parallel build (OpenMP)

bash g++ -fopenmp -O2 -std=c++17 -Iinclude -c src/main.cpp -o build/main.o -lcomplex_bessel g++ build/IN51.o build/main.o -o bin/AMTsolver -lcomplex_bessel -fopenmp ```

Basic Command (example)

bash ./AMTsolver -a <radius_nm> -b <impact_param_nm> -v <velocity>

Single Calculation

bash ./AMTsolver -a 50.0 -b 55.0 -v 0.7

Velocity Scan (20 points)

bash ./AMTsolver -a 50.0 -b 55.0 --vscan -n 20

Impact parameter scan

bash ./AMTsolver -a 50.0 -v 0.7 --bscan -n 30 -e 1e-5

Command Line Options

| Option | Description | Default Value | Constraints | |--------------|--------------------------------------------------|---------------|----------------------------------| | -a <float> | Nanoparticle radius (nm) | 1.0 | Must be > 0 | | -b <float> | Impact parameter (nm) | 1.5 | Must be > NP radius (-a) | | -v <float> | Electron velocity (fraction of c) | 0.7 | 0.0 ≤ v ≤ 0.999 | | --vscan | Enable velocity scan mode | false | Requires -n for point count | | --bscan | Enable impact parameter scan mode | false | Requires -n for point count | | --contour | Enable velocity vs. impact parameter contour | false | Combines --vscan and --bscan | | -e <float> | Convergence threshold | 1e-4 | Must be > 0 | | -n <int> | Number of points in scans | 9 | Must be ≥ 2 | | -m <int> | Minimum multipole order (ℓ) | 1 | Must be ≥ 1 |

Notes: - All numerical values must be positive - Scans generate data files in the output directory structure - Contour mode generates 2D parameter space analysis

Output structure

text results/ └── material=<material>/ └── a=<radius>nm/ └── <timestamp>/ ├── v_scan_for_b=<impact_param>nm/ # Velocity scans │ ├── Lmax=<value>/ │ │ ├── DLy_<params>.dat │ │ └── error_DLy_<params>.dat │ └── MultipolarConvergence/ │ └── MultipolarConvergence_<params>.dat ├── b_scan_for_v=<velocity>c/ # Impact param scans │ └── ... └── simulation_parameters.txt # Metadata

For citations

@software{AMTsolver, author = {Jorge Luis Briseño-Gómez}, title = {AMTsolver: Angular Momentum Transfer Calculator}, year = {2023}, publisher = {GitHub}, journal = {GitHub repository}, howpublished = {\url{https://github.com/LuisBrise/AMTsolver}}

Owner

  • Login: LuisBrise
  • Kind: user

Citation (CITATION.cff)

# This CITATION.cff file was generated with cffinit.
# Visit https://bit.ly/cffinit to generate yours today!

cff-version: 1.2.0
title: >-
  Angular momentum transfer from swift electrons to
  spherical nanoparticles
message: 'If you use this software, please cite it as below.'
type: software
authors:
  - given-names: Jorge Luis
    family-names: Briseño-Gómez
    email: jorgeluisbrisenio@ciencias.unam.mx
    affiliation: UNAM
    orcid: 'https://orcid.org/0000-0001-8412-4868'
repository-code: 'https://github.com/LuisBrise/NPs'
url: 'https://github.com/LuisBrise/NPs'
abstract: >-
  This repository contains a code developed for the
  theoretical study of angular momentum transfer (AMT) from
  swift electrons to spherical nanoparticles using classical
  electrodynamics. The code efficiently computes the
  integrals of the Maxwell stress tensor in frequency space
  through quadrature methods and applies it to various
  materials, including plasmonic and dielectric NPs.
  Designed to handle nanoparticles up to 50 nm in radius, it
  enables the study of AMT across the entire nanoscale,
  offering both analytical solutions and numerical
  implementations for precise calculations.
version: 1.0.0
date-released: '2024-10-16'

GitHub Events

Total
  • Push event: 9
  • Create event: 2
Last Year
  • Push event: 9
  • Create event: 2