How fortune12376/monte-carlo-electron-avalanche works
This is a scientific Monte Carlo electron-avalanche simulator for helium in a cylindrical proportional counter. A user selects voltage, starting radius, seed, electron cap, and backend in the Streamlit app, runs transport, then inspects avalanche, chamber, 3D, and cross-section views. The Python/Numba and C99 engines implement the model; the ctypes wrapper adapts C results to the shared Python result interface. The C engine also uses helium physics functions and dynamic storage. Unsampled details are represented only where the README documents them.
Main entry points: app.py Controls and results UI · simulation.py Numba transport engine · simulation_c.py ctypes adapter · simulation.c C transport engine
Components 10
Interactive interface
- Controls and results UI
app.py - Scientific visualizations
app.py
Python backend
- Numba transport engine
simulation.py - Python cross-section model
simulation.py
C99 backend
- ctypes adapter
simulation_c.py - C transport engine
csrc/simulation.c - C helium physics
csrc/physics.c - Electron and point storage
csrc/simulation.c
Shared model contract
- Simulation result interface
simulation.py
Other components
- Simulator user
Connections 11
- Simulator user → Controls and results UI: sets parameters
app.py - Controls and results UI → Numba transport engine: runs Numba
app.py - Controls and results UI → ctypes adapter: runs C99
app.py - Numba transport engine → Simulation result interface: returns result
simulation.py - ctypes adapter → C transport engine: calls native
simulation_c.py - ctypes adapter → Simulation result interface: builds result
simulation_c.py - C transport engine → C helium physics: calls physics
csrc/simulation.c - C transport engine → Electron and point storage: uses storage
csrc/simulation.c - Controls and results UI → Scientific visualizations: renders views
app.py - Controls and results UI → Simulation result interface: reads metrics
app.py - Numba transport engine → Python cross-section model: uses cross sections
simulation.py