How A Calculation Fits Together
The User Model
SimulationModel is the complete input to one calculation:
| Question | Model field |
|---|---|
| Where do particles move? | geometry |
| What is each region made of? | materials |
| What should be measured? | observables |
| Which data and transport policies apply? | packages |
| What starts each history? | source |
| How many histories and workers are used? | run |
For one calculation:
SimulationTransportSessionResult result =
run_simulation_model(std::move(model));This call validates the model, resolves the enabled package boundary, compiles runtime geometry and observable responses, transports the histories, and returns structured results.
Data Resolution Is Part Of Setup
Transport consumes compact NeoMC tables, not ENDF, HDF5 or reference-program objects. User-facing resolvers convert a named external installation and the model's physical identities into package data. The resolved package then enters SimulationModel.
CoupledEmSimulationPackage em =
resolve_coupled_em_simulation_package(
data_library, materials, transport, material_processes);
SimulationPackageSet packages{
.coupled_em = std::move(em),
};Resolvers retain provenance and fail on unsupported versions or incomplete closure. Lower-level importers remain available for applications that deliberately construct a different data combination.
Repeated Runs
When geometry, materials, package data and observables stay fixed, compile once:
SimulationRuntimeBundle runtime =
compile_simulation_model(std::move(model));
SimulationTransportSessionResult result =
run_simulation_runtime_bundle(
runtime, std::move(source_batch), settings);The runtime is a move-only, read-only physical model. Use this path for source sweeps and repeated history counts, not as extra ceremony for a one-shot run.
Histories And Uncertainty
A source history is the statistical sample. An independent source usually emits one site; a decay event can emit several correlated particles. All descendants remain in the initiating history.
Observable means and standard errors are therefore calculated over histories, not tracks, steps or collisions.
Package Ownership
Each transportable particle has one owning package:
| Package | Particles |
|---|---|
coupled_em | photon, electron, positron |
proton | proton |
neutron | neutron |
alpha | alpha |
light_ion | deuteron, triton, helium-3 |
Mixed transport sends each secondary to its owning enabled package. If a produced particle cannot be transported, the initiating package must reject the model or apply a deliberately selected physical disposition. It is not silently dropped.
Scores And Diagnostics
An observable answers the scientific question. A package summary explains what the transport did. Deposited energy is not automatically dose, detector response, reaction rate or surface current.
Likewise, energy closure is a transport diagnostic. It does not establish that the selected cross sections, final states or physical model match experiment.