Geant4 · MFEM · Magboltz · Shockley–Ramo

From neutron
to pulse.

Geant4 Linked Electron–Ion Plasma, Neutron Interaction & Response

GLEIPNIR simulates what happens inside a neutron-irradiated gas detector, from the first neutron down to every ionization electron and the pulse on the readout electrode. BIFROST lets you watch it happen in the browser.

coaxial chamber · P-10 · +300 Vr = 3 → 25 mm
169.1MeV
²³⁵U thermal fission ⟨TKE⟩
literature ~168 MeV
4.12×10⁶
ion pairs, one fragment stopped
E/W = 3.85×10⁶ · +7.2 %
321fC
induced charge, reference event
152 fC with recombination
6.1×10⁻⁴
Shockley–Ramo closure
exact theorem · tol 10⁻²

The pipeline

One config. Five stages.
Every electron accounted for.

Each stage hands a well-defined data product to the next. A single JSON file describes geometry, materials, source, physics and numerics for all of them, and every stage closes its own energy or charge ledger.

1

Transport

Geant4 · reference physics lists · evaluated neutron data

Neutrons react in the detector; recoils, alphas and fission fragments are tracked step by step, and every ionization electron is recorded at birth.

2

Space charge

finite elements · parallel Poisson solve

Ionization becomes charge density on a mesh (cloud-in-cell); the Poisson equation gives the bias + space-charge potential on a conforming annulus mesh.

3

NIDHOGG

transient Monte Carlo · Magboltz cross sections

Every electron is degraded through the gas (elastic, excitation, ionization, attachment, Penning transfer) until it thermalizes, escapes or attaches.

4

EIR

Onsager → Jaffé → Boag

Optional recombination, applied as a survival chain in timescale order: geminate, columnar, then volume. Off means an exact pass-through.

5

Signal

Shockley–Ramo · preamp · shaper · ADC

Carrier motion induces current on the readout electrode; an idealized instrumentation chain turns it into waveforms and pulse observables.

Three example detectors ship with it, a gas box, an ionization chamber and a fission chamber, and every run is deterministic for a fixed seed.

The electron engine

NIDHOGG

Non-equilibrium Ionization & Degradation of High-energy electrons in Gaseous Geometries

Stage 3 of GLEIPNIR, and a complete code in its own right. Give it electrons with positions, times and energies inside a gas volume, and it follows every one of them, and every electron they knock free, until each one thermalizes, escapes or is captured.

“Something is eating my electrons.”

That is how the name began. Charge born in the gas kept going missing before it reached the electrode: captured, recombined, gone. And when the electron paths were finally drawn, they did not fly. They slithered, thousands of short flights broken by collisions, coiling through the gas like a snake. In Norse myth the serpent gnawing in the dark at the roots of the world tree is Níðhöggr. The name fit.

source electronsionization secondariesPenning electrons
Not an illustration. Event 0 of the bundled demo: 25 source electrons of 1–200 eV and every secondary they set free, in P-10 at 200 V/cm, positions latched every 2 ps (x–z projection). On average an electron ends up 50 µm from where it was born, none further than 0.2 mm, all within 5 ns.
Gleipnirthe fetter that bound the wolf Fenrir, woven from things that do not exist
Bifröstthe burning rainbow bridge between the worlds
Níðhöggrthe serpent gnawing at the roots of the world tree

What it does, on its own

Transient, bounded, individualElectrons enter where and when a source says, inside a box or a tube, and each one is followed on its own, with full provenance back to its parent.
Real cross sectionsMagboltz data for any mixture, checked against argon's Ramsauer minimum and ionization peak. Approximate built-in tables for Ar, CH₄, N₂, O₂, CO₂ and He as a clearly flagged fallback.
Every processElastic scattering, excitation level by level, ionization with the Opal–Peterson–Beaty secondary spectrum, attachment, and Penning transfer.
FieldsUniform, analytic coaxial, or any tabulated map such as a finite-element solution; magnetic fields with a Boris pusher.
An energy ledger that closesInjected + field work = deposited by channel + attached + escaped + final kinetic, to about 10⁻¹³ relative. The tests fail above 10⁻⁹.
Outputs you can useElectron histories, collision statistics by process and level, a time-sampled EEDF, the W-value, and trajectory chords for signal induction.
A swarm reference alongsideOptionally, a standard Magboltz swarm run at the same field is written next to the results as an independent check.
Deterministic, ready for couplingSame seed, same result, and the transport steps in time under whatever field it is given: the shape a self-consistent space-charge loop needs.

Swarm codes (Magboltz)

Steady state, unbounded

  • An infinite gas at one fixed reduced field
  • Integrate until the swarm reaches equilibrium
  • Out come transport coefficients: drift, diffusion, Townsend
  • No way to inject a given electron at a given place and time

NIDHOGG

Transient, bounded, per electron

  • A finite volume, with walls electrons can escape through
  • Electrons injected at their own positions, times and energies
  • Out come histories, collision tallies, the EEDF, W and trajectories
  • Magboltz supplies what it is authoritative for: cross sections and a reference swarm

Electron energy distribution

Time-sampled over the whole degradation, which is unbiased because null-collision flights end uniformly in time. Bundled demo: 60 electrons of 1–200 eV in P-10 at 200 V/cm, run with both cross-section sets.

Magboltz cross sectionsbuilt-in tables

Where the energy goes

Energy handed to the gas, by channel, for the same demo with each cross-section set. Ionization thresholds take more than half; methane's low vibrational levels take roughly a sixth to a fifth.

Magboltz cross sectionsbuilt-in tables

Hundreds of thousands of collisions, a few hundred ionizations

Why electron degradation is expensive: slow electrons bounce elastically again and again, losing a tiny fraction each time, while ionizations are rare. Logarithmic scale.

Magboltz cross sectionsbuilt-in tables

The demo in numbers

Same electrons, same seed, two cross-section sets.

Use it without GLEIPNIR

NIDHOGG has its own command line and knows nothing about GLEIPNIR: a gas and a list of electrons in, results out. Anything can feed it: Geant4, another transport code, or a hand-written file. It may be useful to:

  • gas-detector developers choosing a fill gas, who need W-values, excitation branching and the effect of Penning transfer for a mixture;
  • anyone who needs where and when electrons thermalize, as the starting point for drift, diffusion or recombination models;
  • radiation chemists and plasma physicists who need excitation and ionization yields by process and level;
  • teachers, with a readable, deterministic Monte Carlo whose energy books balance to 10⁻¹³;
  • code developers who want a transient reference next to a steady-state swarm code.

Results

A fission chamber, end to end.

A coaxial chamber with a 2 µm U₃O₈ deposit (90 % ²³⁵U) on a 3 mm anode at +300 V, P-10 out to r = 25 mm, and a thermal neutron beam. 10 000 neutrons, seed 12345. Every number below comes from the project's committed run.

Comparison with published values

Deviation of each simulated quantity from its reference, with the accepted tolerance band. Tolerances are set before the comparison and never widened afterwards. All eight are inside their band. This is benchmarking and verification, not validation (see V&V).

simulated − referenceaccepted tolerance
Show as table

Pulse charge per fission event

Induced charge for each fission event, without and with recombination (EIR). Columnar recombination removes a larger share of the bigger pulses.

EIR offEIR on (Onsager + Jaffé + Boag)
Show as table

Where the ion pairs go

Reference event 1714: 101.6 MeV deposited in the gas. Ion pairs reaching the signal stage, split into what recombination removes and what survives.

survivingJaffé (columnar)Onsager (geminate)
Show as table
3.96×10⁶
pairs reach Stage 4
96 %
of Egas/W
49 %
survive EIR

Fission

Geant4 HP fission with fragment ions from G4NDL yields.

37
fissions / 10⁴ n
94.6 · 138
light · heavy peak (u)
100.4
light-fragment ⟨E⟩, MeV
68.8
heavy-fragment ⟨E⟩, MeV

Fragments in the gas

22 mm of P-10 stops a fragment, so the pair count follows the whole fragment energy.

14.6 mm
mean track length
86 %
stop in the gas
72.9
mean Edep, MeV
28
fragments entered

Electron swarm

P-10, 152 V/cm, 760 Torr, 20 °C: the drift-velocity plateau.

5.48
drift velocity, cm/µs
24.6 eV
W-value (rP = 0.45)
0.337 eV
mean electron energy
9 295
electrons tracked

The visualizer

BIFROST

Bridged Interactive Framework for Rendering, Observation & Simulation Telemetry

A bidirectional visualizer that runs in the browser. It shows a simulation while it runs, in 3-D and in live charts, and it talks back: which case to run, with which settings, and when to start, pause, resume or stop. A finished run replays the same way.

Two-wayWatch a run arrive, and steer it: pick a ready-made case, set its knobs, then start, pause, resume or abort.
Never in the wayIt costs nothing when unused, and if it is not there when a run starts, the run goes on exactly as it would have.
Record and replayEvery session can be replayed later, and a finished run opens the same way.
Engine-agnosticIt knows nothing about any particular simulation. GLEIPNIR is simply the first one it talks to.
bifrost · fields · fc-600V
BIFROST: the coaxial fission chamber of the fc-600V case with the bias potential drawn on two axial cut planes and a mid-plane disc
Screenshot not available.
01 · FIELDS

See the field the electrons drift in

Before anything runs, Draw fields solves the bias field of the chosen case in seconds and paints the potential on cut planes through the chamber: two axial half-planes and a mid-plane disc, over the translucent anode, U₃O₈ coating, fill gas and housing. Here the fc-600V case, from 0 to 600 V.

  • Drawn before a run, from a solve of the bias alone
  • In the benchmarked run the solved field follows the analytic 1/r law to a median 0.25 %
  • One switch hides it; a new geometry clears it
bifrost · tracks · fc-600V
BIFROST: fission-fragment tracks bursting out of the coated anode of the fc-600V chamber, with secondary electrons where they were born
Screenshot not available.
02 · TRACKS

Watch fission fragments leave the anode

After the run, Draw tracks shows what happened in the gas: all 3 632 heavy charged tracks, with fission fragments bursting out of the coated anode, and an even sample of 50 000 of the 847 717 secondary electrons, where they were born. The same fc-600V run, 10 000 neutrons.

  • A time slider with Play walks the history on one shared clock
  • Sampling and time steps trade detail for speed, on the fly
  • Every layer has its own colour and switch
bifrost · detectors · fc-600V
BIFROST Detectors tab for the fc-600V run: 1492 MeV total energy deposited, 126 events with a deposit, 37 neutron-induced fissions, and fifteen charts of energy, pulse height, interactions, tracks and electrons
Screenshot not available.
03 · DETECTORS

Every virtual detector, charted as the run goes

GLEIPNIR aggregates its virtual detectors as the run goes and BIFROST charts them live on the Detectors tab. For this fc-600V run of 10 000 neutrons: 1492 MeV deposited, 126 events with a deposit, 37 neutron-induced fissions; then per-event energy and pulse-height spectra, energy by volume and by particle, neutron interactions by process, heavy charged tracks by class, electron energy and birth radius, the run's history, and heavy-track length against energy. Each chart carries one sentence on what it measures. Scroll inside the frame to see all fifteen.

Figures

The charts the pipeline draws.

Drawn by the project's own analysis from the committed run, and shown in the page's theme. Click a figure to enlarge it.

F1 · The pulse. Induced current, integrated charge, preamp and CR-(RC) shaper output for event 1714, with EIR off and on.
F2 · Pulse-height spectrum. Per-event charge, and the fraction surviving columnar recombination against pulse size.
F6 · Charge ledger. Pair budget, what each recombination model removes, and Ramo closure for every fission event.
F3 · Fission physics. Fragment energies, the asymmetric mass split and fragment range in the gas, against literature markers.
F5 · Field check. The Stage-2 MFEM field against the analytic coaxial 1/r law.
F4 · Benchmarks. The same eight comparisons as the interactive chart above.
G1 · Evidence forest. The reference data behind every comparison, with provenance tier, quality weighting and the Set-A consensus.
G2 · Error summary.
G3 · Quality sensitivity.
G4 · Evidence census.

Honest by construction

Four words, kept apart.

Testing, verification, benchmarking and validation answer different questions. The repository uses each one strictly, labels every claim with one of them, and states its gaps.

Testing

Does the code do what its author intended?

~380 unit, integration, golden-output and determinism tests across the packages.

in place

Verification

Are the mathematics solved correctly?

Energy ledger closed to < 10⁻⁹, Ramo closure, exact EIR bookkeeping, analytic field laws.

in place

Benchmarking

Does it agree with other codes and published numbers?

W-value, drift velocity, fission TKE and mass peaks, ion pairs per fragment.

8 / 8 within tolerance

Validation

Does it agree with independent experimental measurements?

Needs tier-1 experimental input; every Set-A record today is tier 2.

none yet

GLEIPNIR has, at present, no validated component. The P-10 W-value, scored against a population of published values under ISO 13528, sits just outside the band at Eₙ = −1.24. The project says so openly rather than widening a tolerance to hide it: it is work in progress, and the first thing we are improving.

Direction

Built to be general.
Proven on one chamber.

GLEIPNIR was designed as a general response model for gas volumes under irradiation. So far one configuration has been driven end to end. This is the distance between the two, and the plan for closing it.

01

What it is meant to be

A general response model for any gas volume under irradiation: fission chambers, ionization chambers, gas targets, beam-pumped gas cells. Nothing about a detector is compiled in. A chamber is a JSON file, and every stage after Geant4 reads positions, times and energies, never what produced them.

GeometryAny number of boxes and tube shells, placed freely and overlap-checked at start-up.
MaterialsGas mixtures of 15 built-in species plus any NIST element, at any pressure and temperature; NIST materials; solids with per-element isotopic composition.
PhysicsAny Geant4 reference physics list, with high-precision neutron data below 20 MeV, and EM variants by name.
FieldsBox or conforming-cylinder meshes, any electrode potentials, an MPI-parallel Poisson solve.
ElectronsMagboltz cross sections for any mixture, Penning transfer, uniform, analytic or solved electric fields, magnetic fields.
SignalShockley–Ramo on the readout electrode with an idealized electronics chain; any electrode shape once the MFEM weighting solve lands.
02

What it is today

Three example configurations ship with the code. One of them, the fission chamber above, has been driven through every stage with its results committed and benchmarked. The other two exercise the first stages. Everything else the design allows is, so far, untested ground.

Which configuration has been through which stage

From the shipped configurations and the committed results. The state is spelled out in every cell, not carried by colour.

configurationTransportSpace chargeNIDHOGGEIRSignalBenchmarks
Gas box10 cm P-10 cube · 2.45 MeV neutronsrunsrunsrunsnot yetnot yetnot yet
Ionization chamberair · 30 mm parallel plate · 300 Vrunsrunsnot yetnot yetnot yetnot yet
Fission chamberP-10 coax · U₃O₈ · thermal neutronscommitted resultscommitted resultscommitted resultscommitted resultscommitted resultscommitted results

Scored the metrology way

ISO 13528 En compares a value with the consensus of the reference data using expanded (k = 2) uncertainties; |En| ≤ 1 passes. Three pass. The W-value, NIDHOGG's own gas physics, sits just outside the band at En = −1.24, 6 % low: it is work in progress and our clearest area for improvement, shown below. And because every reference record is still tier 2, even a pass is benchmarking, not validation.

Eₙ score|Eₙ| ≤ 1 passes
How the W-value really affects the results ↓
Show as table

The domain a validation would cover today

Everything exercised so far fits in these six lines. High flux, current mode, other gases, magnetic fields, sub-millimetre gaps and ultra-high dose rates all lie outside.

P-10
fill gas (dry air configured)
0.025 eV
thermal neutrons only
3–25 mm
coaxial radii; one 30 mm parallel plate
300 V
bias; no magnetic field
pulse mode
no pile-up, no Campbelling
≤ 20 keV
electrons in the degradation MC
area for improvement

The ion-pair yield: our next step up

Every pulse starts from one division: ion pairs = deposited energy ÷ W. The Eₙ test above shows where that division can get better, and the numbers below show the gain is within reach.

W: a 6 % offset with a clear lever

NIDHOGG gives 24.64 eV per ion pair in P-10, 6 % below the 26.21 eV consensus of the reference data, so today it counts about 6 % too many pairs per MeV. The main lever is a single, well-understood number, the Penning transfer probability, now set to a mid-range literature value. Pinning it against primary W measurements needs data, not new code.

Deposited energy: our own stopping model

How much energy a fission fragment leaves in the gas, and how far it travels, is set by its stopping power. Geant4 ships no tabulated stopping power for a fission fragment in any gas, so today that energy loss is an extrapolation from lighter ions.

We are working on our own stopping model for fission fragments in gas.

How much it really moves the results

The committed reference event (101.6 MeV in the gas), rescaled with N = E/W to the consensus W. A rescaling, not a new run; the pulse is taken to scale with its pairs.

published: 100 MeV / 26 eVas simulated, W = 24.64 eVwith the consensus W = 26.21 eV
+7.2 % → +0.7 %
ion-pair benchmark: nearly all of its deviation is the W offset
−6.0 %
pairs created, once W matches the reference data
321 → 315 fC
pulse charge, only −2.0 %: two thirds of its pairs already use 26 eV
03

Where it is going

The first step has a written plan. The order after it is a reading of the backlog, the validation plan and the FLASH note, sorted by what each step unblocks.

  1. NowFission chamber, end to endFive stages, eight benchmarks, NIDHOGG standalone, BIFROST with cases, run control and detector charts on development branches. Our own stopping model is in progress.
  2. NextPluggable pump sourcesNeutrons, electron beams and ion beams through one unchanged chain.
  3. ThenValidation and cross-code checksTier-1 data for W, drift and swarm energies; Geant4 EM variants and an independent heavy-ion code as cross-checks.
  4. LaterFLASH and self-consistent physicsUltra-high dose-rate pulses, space charge acting back on transport, collisional-radiative kinetics.
in progress

Our own stopping model

A fission fragment's stopping power decides how much energy it leaves in the gas and how far it gets, and so, divided by W, how many ion pairs every pulse starts from. Geant4 has no tabulated stopping power for a fission fragment in any gas, and today's energy loss is an extrapolation from lighter ions. We are building our own model to replace it.

  • What it sets: deposited energy, fragment range, and the ion-pair count every pulse starts from.
  • How it will be checked: against an independent heavy-ion stopping code, and against measured fragment energy loss and range in argon (V7).
  • Why it matters: fragment stopping is one of the two largest physics uncertainties the project has identified, and it sits right at the start of the fission-chamber signal.
next · written plan

Pluggable pump sources

Today the source is hard-wired to neutrons. A pluggable source adds electron and ion beams with a pulse time structure, selected in the configuration. Then one gas, one geometry, one seed, run twice with only the source changed: fission fragments and a fast electron beam deposit the same energy with very different track structure, and the difference becomes a measurement.

Should match

  • W-value
  • ionization and excitation branching
  • secondary spectrum above ~100 eV

Should differ

  • ionization density along a track
  • columnar recombination survival
  • collected charge per unit deposited energy

An electron beam through a foil window is something an ordinary laboratory has; a reactor is not. The gate comes first: the neutron path must not move by one digit.

open

Seven comparisons to a first “validated”

Each names an observable, the measurement to obtain, and what the code would need. None is claimed done.

observableneeds
V1W-value of P-10 for fast electrons, from primary measurementsdata only
V2drift velocity against E/p, as a curvedata only
V3EEDF, mean energy and transverse diffusion at matched E/Ndata only
V4fission-fragment ionization yield: the pulse-height defectcode change
V5collected charge and pulse-height spectrum of a published chambermatched config
V6collection efficiency against field: saturation curvescode change
V7fragment energy loss and range in argondata only

V1–V3 need only data files and would give the first honest “validated” label, to the Stage-3 swarm physics. V4 and V6 are where the physics is genuinely uncertain, and where validation would move the results most.

opportunity

FLASH dosimetry: where the measured curves already exist

FLASH radiotherapy delivers dose at ultra-high rates, with single microsecond pulses of up to several gray where conventional beams deliver about a milligray. At that dose per pulse the air-filled ionization chambers of clinical dosimetry lose charge to recombination before it is collected, and the Boag correction the protocols rely on stops being accurate.

For GLEIPNIR that is an opening. Collection efficiency against dose per pulse is published for standard commercial chambers by several groups: exactly the independent experimental observable the project lacks. Most of the chain already has the right shape: an air-chamber config, Boag's model in EIR, the MFEM field solve, and charge collection. Six things stand in the way:

  1. B1 the primary particle is hard-wired to neutrons (the pump plan fixes this);
  2. B2 no pulse time structure: every event is one primary at t = 0;
  3. B3 an event is not a pulse: a FLASH pulse is 10⁷–10⁹ primaries sharing one charge cloud;
  4. B4 space charge acts one way only, and at FLASH dose the field collapses during the pulse;
  5. B5 no free-electron fraction for air in Boag's model;
  6. B6 the shipped gap is 30 mm, while FLASH chambers are 1–2 mm.

Why the gap matters

In Boag's model the recombination parameter grows with the square of the electrode gap, u ∝ d². Against a 1 mm Advanced Markus chamber, the shipped 30 mm configuration has 900 times the u.

backlog

Deeper physics

  • Self-consistent space charge. Re-solve the field as the charge moves and feed it back into transport; the coupling point is already in place and tested.
  • Relativistic electrons. Extend the degradation MC beyond 20 keV, so MeV Compton electrons are transported instead of excluded.
  • MFEM weighting field. Solve the weighting potential for arbitrary electrodes, not only the analytic plate and coax.
  • Campbell and current modes. Superpose events at a continuous rate on the existing per-event current layer.
  • Real ion transport. Replace constant-mobility ions with diffusion, collisions and recombination.
  • Fragment ionization defect. An ion-dependent W for fission-fragment deposits, probably the largest error in collected charge.
  • Recombination beyond closed forms. An explicit drift–diffusion–reaction solver, ion–ion recombination, per-gas coefficients.
  • State kinetics. Excitations observed collision by collision in a modified Magboltz-based swarm code, toward a collisional-radiative model.
on development branches

BIFROST: from a viewer to a control room

The main line draws geometry and records and replays sessions. The development branches go much further:

  • Cases: ready-made runs with safe knobs, launched from the page
  • Run control: start, pause, resume, abort, hold
  • Draw geometry and fields before a run
  • Draw tracks after a run, with a time slider and Play
  • Detectors tab: every virtual detector, charted
  • Compare runs: summaries, provenance, pooled statistics
  • Stream fields and tracks live, not only after a run
  • One run-level timeline across Geant4, NIDHOGG, EIR and the signal
backlog

Engine and cross-code checks

A faster NIDHOGG

Its core loops move one at a time into a native engine, each behind a bit-exact parity gate; the first is done. The whole engine moves only once every loop has.

Geant4 EM variants

option3 and option4 against the default: a config-only change, and the cheapest cross-code check available.

An independent heavy-ion check

CATIMA, an independent heavy-ion stopping code, to test our own stopping model against before it replaces today's extrapolation.