CudaMONSEL is a full-fledged electron tracker based on first physical principles. Its primary application is to carry out Monte Carlo simulation of SEM Signals. It can be ran on CPUs using a thread pool, as well as GPUs using the CUDA framework for increased computational efficiency.
CudaMONSEL is a direct port of JMONSEL; the original Java version of the model developed by J.S. Villarrubia and Nicholas Ritchie of NIST. CudaMONSEL aims to speed up the original simulation with native code & mass produce SEM images for ML training. It also includes extra functionalities to describe the geometry of the simulation target. For example, 2D projections of the outline of shapes on an arbitrary plane.
If you use CudaMONSEL in your research, please cite with:
@misc{villarrubia2015jmonsel,
title={Scanning electron microscope measurement of width and shape of 10 nm patterned lines using a JMONSEL-modeled library},
author={J.S. Villarrubia et. al.},
howpublished={\url{https://ws680.nist.gov/publication/get_pdf.cfm?pub_id=916512}},
year={2015}
}
@misc{zeng2019cudamonsel,
title={CudaMONSEL},
author={Ruizi, Zeng},
howpublished={\url{https://github.com/zengrz/CudaMONSEL/}},
year={2019}
}
Amphibian is an initiative to build a library of data structures and algorithms that can be used on both host and device. Can be useful when transitioning from CPU to CUDA code.
@misc{zeng2019amphibian,
title={Amphibian},
author={Zeng, Ruizi},
howpublished={\url{https://github.com/zengrz/Amphibian/}},
year={2019}
}
CudaMONSEL appears to have had an interesting history, the original author took down the repo and has since posted the following response in an issue within a repository for the Amphibian dependency. Odd situation, but fortunately the repo was forked before any of this took place. Some additional insight into CudaMONSEL's original objectives and design choices can be found in the (unfortunately incomplete) whitepaper.
Tip
The most promising replacement I have found thus far is Nebula; an open-source simulator of electron-matter interaction published by L. van Kessel and C.W. Hagen of TU Delft's ImPhys (Microscopy Instrumentation & Techniques) department. Their paper shows simulation of SE & BSE signals and importantly it remains based on first-principle physical models. If that wasn't enough to convince you it's apparently "used within ASML to obtain a better understanding of SEM signal formation" according to an old PhD position listing 👀...
Since 2019, further open-source1 C++/CUDA backed Monte Carlo simulations tailored to modeling electron scattering & secondary electron generation were published. If you happen to stumble upon this repo I'd recommend first exploring some solutions listed in the table2 below.
Name | Open Source |
Bulk | Layers | GUI | Complex Samples |
X-Ray Spectra |
Programmable |
---|---|---|---|---|---|---|---|
CASINO | ❌ | ✔️ | ✔️ | ✔️ | ✔️ - ver. 3 | ❌ | ✔️ - PyPI |
Win X-Ray | ❌ | ✔️ | ✔️ | ✔️ | ❌ | ✔️ | ❌ |
MC X-Ray | ❌ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ |
NISTMonte | ✔️ - Java | ✔️ | ✔️ | ❌ | ✔️ | ✔️ | ✔️ |
Penelope | ✔️ - Fortran | ✔️ | ✔️ | ❌ | ✔️ | ✔️ | ✔️ |
LMS-MC | ✔️ - Fortran | ✔️ | ✔️ | ❌ | ❌ | ❌ | ❌ |
NBSMonte | ✔️ - Fortran | ✔️ | ❌ | ❌ | ❌ | ❌ | ❌ |
EFS | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ❌ | ❌ |
MC-SET | ✔️ - C++ | ✔️ | ✔️ | ✔️ | ❌ | ✔️ | ✔️ |
MONCA2 | ✔️ - Matlab | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ✔️ |
MONCA | ✔️ - Matlab | ✔️ | ❌ | ✔️ | ❌ | ❌ | ✔️ |
CHARIOT | ❌ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ❌ |
GEANT4 | ✔️ - C++ | ✔️ | ✔️ | ❌ | ✔️ | ✔️ | ✔️ |
EISS | ✔️ - Java | ✔️ | ✔️ | ✔️ | ❌ | ❌ | ❌ |
MCSEM | ✔️ - C++ | ✔️ | ✔️ | ✔️ | ✔️ | ❌ | ✔️ |
Footnotes
-
Unfortunately, without direct ties to academia some tend to be "open-source" on paper only & are quite hard to obtain. ↩
-
Table transcribed from Radim Skoupý's doctoral thesis on "Quantitative imaging in scanning electron microscope" ↩