amtsolver
Compilation of programs for the interaction between fast electrons and a spherical nanoparticle
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
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
Metadata Files
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_*.datfiles - Saves integrated angular momentum results to
DL_*.datfiles - 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
- Repositories: 1
- Profile: https://github.com/LuisBrise
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