Skip to content

Transport And Models

This page summarizes the public transport and model assembly surface reflected by the current headers.

Package Registry

Transport-package ownership is explicit. The registry currently exposes:

PackageAvailabilityStatusSupported scope
coupled_emavailableapproximatephoton_electron_positron_coupled_em_transport
protonavailableapproximateproton_csda_em_stopping_only
alphaavailableapproximatealpha_csda_electronic_stopping_only
neutronavailableexperimentalneutron_data_driven_free_flight_elastic_capture_gamma_thermal

Important helpers:

  • transport_package_registry
  • find_transport_package_descriptor
  • available_transport_packages
  • transport_package_availability_name
  • owning_transport_package
  • transport_package_accepts
  • require_transport_package_particle
  • partition_source_sites
  • partition_secondary_bank_items

These helpers are used by mixed-package source batches, secondary-bank partitioning, and simulation sessions.

Coupled EM Transport

CoupledEmTransportDriver owns photon, electron, and positron transport. Its model layer is CoupledEmModel.

The main configuration surface is CoupledEmTransportConfig, which includes:

  • runtime backend: currently cpu_reference
  • run controls: seed, max steps, boundary push, collision-distance floor
  • tracking-kill and active-transport floor energies
  • production cuts for electrons, positrons, and photons
  • secondary transport thresholds
  • charged stepping controls, continuous loss, loss fluctuations, and MSC
  • physics policies for ionization, bremsstrahlung, positron handling, and annihilation
  • cut-energy policy

The result surface reports detailed counters for photon, electron, and positron collisions, charged continuous loss, MSC, production cuts, escape, kill, secondary production, relaxation, and energy accounting.

Proton Transport

ProtonTransportDriver implements a CSDA-style charged-particle path with explicit policy fields.

ProtonTransportConfig exposes:

  • master_seed
  • max_steps_per_history
  • boundary_push
  • max_step_cm
  • max_energy_loss_fraction
  • active_transport_floor_energy
  • nuclear_reaction_policy
  • stopping_model
  • energy_straggling_model
  • multiple_scattering_model

Supported stopping-model choices include:

  • bethe_bloch_approximation
  • nist_pstar_water
  • nist_pstar_water_bethe_high_energy

The current supported interpretation is proton electronic stopping and range transport. Nuclear reactions are not implemented; they must fail closed or be explicitly ignored for CSDA-only runs.

Alpha Transport

AlphaTransportDriver implements the current alpha CSDA path.

AlphaTransportConfig exposes:

  • master_seed
  • max_steps_per_history
  • boundary_push
  • max_step_cm
  • max_energy_loss_fraction
  • active_transport_floor_energy
  • nuclear_reaction_policy
  • stopping_model

AlphaStoppingModel currently includes:

  • nist_astar_water
  • material_electronic_stopping_table

AlphaTransportPhysicsData can carry per-material electronic stopping tables. The package should still be read as electronic-stopping / range transport. It does not validate straggling, multiple scattering, charge-state evolution, or alpha nuclear reactions.

Neutron Transport

NeutronTransportDriver implements an experimental data-driven neutron free-flight path.

The required physics data is:

  • NeutronTransportPhysicsData
  • one or more NeutronMicroscopicCrossSectionTable records
  • optional NeutronCaptureGammaLineTable records

NeutronTransportConfig exposes:

  • master_seed
  • max_steps_per_history
  • boundary_push
  • unsupported_reaction_tolerance_barn
  • elastic_policy
  • thermal_scattering_policy
  • unsupported_reaction_policy
  • capture_policy
  • capture_gamma_energy_ev
  • thermal_scattering_cutoff_ev
  • material_temperature_kelvin
  • reaction_coverage_min_energy_ev
  • reaction_coverage_max_energy_ev

Current capabilities are deliberately narrow:

  • MF3 total / elastic / capture microscopic XS interpolation
  • macroscopic XS sampling for neutral free flight
  • capture sink accounting or local incident-neutron kinetic deposit
  • configured single prompt gamma or ENDF MF6/MF12 capture gamma line emission
  • approximate elastic final states using no-loss options or isotropic center-of-mass kinematics with local recoil deposit
  • free-gas Maxwellian thermal energy exchange with explicit accounting

Unsupported areas include S(alpha,beta) thermal scattering law data, temperature-dependent evaluated data, resonance treatment, inelastic reactions, fission, particle-emission reactions, and full correlated capture gamma cascade semantics.

Mixed Transport

MixedTransportDriver and MixedTransportModel route source batches across enabled transport packages and return one combined result.

The current model definition can hold:

  • one geometry
  • one material set
  • one tally set
  • coupled-EM physics data and transport configuration
  • proton transport configuration
  • alpha transport configuration
  • alpha transport physics data
  • neutron physics data and transport configuration
  • an explicit enabled package list

MixedTransportResult reports:

  • per-package summaries for coupled EM, proton, alpha, and neutron
  • unified tally results
  • unified source, deposited, escaped, and accounted energy
  • unified energy-balance residual

Use mixed_transport_source_from_static_decay when a static decay source should carry source-rate metadata into mixed transport.

Simulation Transport Session

simulation/transport_session.hh adds the higher-level model / runtime-bundle surface:

  • SimulationModel
  • SimulationPackageSet
  • SimulationTransportSessionDefinition
  • SimulationPackageResultSummary
  • SimulationRuntimeBundle
  • SimulationTransportSession
  • find_simulation_package_result
  • require_simulation_package_result
  • find_simulation_package_result_detail
  • require_simulation_package_result_detail
  • compile_simulation_model
  • run_simulation_model

SimulationTransportMode can be:

  • coupled_em
  • proton
  • alpha
  • neutron
  • mixed

This is the current path closest to the intended product model:

text
SimulationModel -> validate/compile -> SimulationRuntimeBundle -> result

Application Layer

application/ provides reusable run assembly above simulation/.

The main public surfaces are:

  • RunManager
  • DetectorConstruction
  • PhysicsList
  • PhysicsListBuilder
  • CoupledEmPhysicsPackage
  • ProtonPhysicsPackage
  • AlphaPhysicsPackage
  • NeutronPhysicsPackage
  • PhysicsDataRegistry
  • PrimaryGenerator
  • PrimaryBatchGenerator
  • ScoringSetup
  • ActionInitialization
  • execute_application_macro

This layer is useful when a user wants package-based physics setup, source / scoring configuration, macro execution, and summary output without wiring every transport driver directly.

NeoMC user documentation.