Skip to content

Getting Started

This is the shortest path from a fresh checkout to a verified neomc build and a usable mental model for integrating it.

What You Build

The main deliverable is the library surface exposed from include/neomc/ and built by these targets:

  • neomc_core_runtime
  • neomc_data
  • neomc_geometry
  • neomc_materials
  • neomc_physics
  • neomc_scheduler
  • neomc_source
  • neomc_tally
  • neomc_transport
  • neomc_simulation
  • neomc_application
  • neomc_core

Benchmark executables exist to validate or demonstrate those libraries.

Minimal Library-Only Build

Build the core libraries without importer-backed benchmark dependencies:

bash
cmake -S . -B build \
  -DNEOMC_BUILD_IMPORTERS=OFF \
  -DNEOMC_BUILD_BENCHMARKS=OFF \
  -DNEOMC_ENABLE_BENCHMARK_CHECKS=OFF
cmake --build build --parallel

This path is useful when you want the reusable source, geometry, tally, transport, simulation, and application libraries without HDF5/Zlib benchmark setup.

Library Assembly Path

Most integrations follow this shape:

text
materials -> geometry -> tallies -> physics data -> model/session -> source -> run

Concretely, the public headers provide these entry points:

  • materials: MaterialInputDefinition, material_definitions_from_inputs
  • geometry: RectilinearGridInputDefinition, make_rectilinear_grid, GeometryHandle
  • tallies: TallySetInputDefinition, make_tally_set_definition
  • imported physics data: import_nndc_photon_runtime_table, import_endfb_eedl_electron_runtime_table, import_endfb_decay_runtime_table, import_endfb_neutron_mf3
  • models: CoupledEmModel, MixedTransportModel, SimulationTransportSession, SimulationModel, compile_simulation_model
  • sources: IndependentSourceDefinition, GeneralSourceDefinition, StaticDecayInventorySource
  • application layer: RunManager, PhysicsListBuilder, execute_application_macro

Package-level transport now includes coupled EM, proton, alpha, and experimental neutron paths. Check the reference pages before using a package as evidence for broader physics behavior.

Default Benchmark Build

The repository defaults are importer- and benchmark-enabled:

bash
cmake -S . -B build
cmake --build build --parallel
ctest --test-dir build --output-on-failure

This path expects HDF5 and Zlib for importer-backed physics data.

With defaults enabled, CTest registers lightweight benchmark execution checks for targets such as:

  • neomc_decay_source_term
  • neomc_decay_inventory_chain
  • neomc_activation_inventory
  • neomc_radioisotope_gamma_shielding
  • neomc_positron_annihilation
  • neomc_electron_range_dose
  • neomc_proton_csda_range
  • neomc_alpha_csda_range
  • neomc_neutron_microscopic_xs
  • neomc_mixed_decay_transport

Some benchmark directories also include helper scripts for parameter scans, such as Pb shielding thickness scans and beta source scans. Those scripts are benchmark workflows, not standalone product APIs.

Example Consumer Run

If you want to exercise one importer-backed benchmark consumer, the decay source-term benchmark is the smallest current example:

bash
./build/neomc_decay_source_term reference

That example prints Co-60 decay modes, emissions, source rates, and time-window decay counts, and it shows how real decay data flows into a transport-aware source summary.

NeoMC user documentation.