Structure#
Each benchmark in Openmc Fusion Benchmarks (OFB) is defined by a single specifications.yaml file located at the root of its benchmark folder:
src/openmc_fusion_benchmarks/benchmarks/benchmark_name/
└── specifications.yaml
The specifications.yaml file is at the core of each benchmark. It follows a modular, schema-validated, and code-independent structure, making benchmarks consistent, extensible, and easy to maintain. Designed to be human-readable and automation-ready, it enables the OFB Python API to generate transport-specific models directly from the specification. Each section is described below with minimal examples. Its modular design also supports future extensions for testing advanced neutronics workflows.
Sections Overview#
Metadata#
General information such as benchmark name, description, references, authors, and version. Example:
metadata:
title: Example Benchmark
type: experimental
category: fusion
version: 1.0.0
description: >
The Example Benchmark is just for documentation.
date: "2025-01-01"
location:
facility: MIT
city: Cambridge, MA
country: US
references:
- title: "A Reference Paper"
doi: "https://doi.org/a_doi_code"
Materials#
It is a list of material objects. Each one contains, composition, temperature, density, and other nuclear properties defined in a structured format.
Example:
Materials:
- id: 1
name: Water
composition:
composition_type: element
fraction_type: atomic
data:
H: 0.67
O: 0.33
density:
value: 0.997
units: g/cm3
- id: 2
name: Aluminum
composition:
composition_type: nuclide
fraction_type: atomic
data:
Al27: 1.0
density:
value: 2.7
units: g/cm3
Geometry#
The geometry object links to a .step file located in the repository’s lfs submodule and includes information on material assignment and suggested meshing parameters, such as the maximum element size.
Example:
geometry:
cad_file: benchmark_name/benchmark_name.step
meshing:
global_mesh_size_min: 0.1
global_mesh_size_max: 10
volumes:
- id: 1
material: void
- id: 3
material: Aluminum
mesh_size: 0.5
Sources#
List of source objects. Provides specification of the neutron or photon source, including spatial, angular, and energy distributions.
sources:
- particle: neutron
strength: 1.0
spatial_distribution:
type: point
center: [0.0, 0.0, 0.0]
angular_energy_distribution:
polar_direction: [0.0, 1.0, 0.0]
dims: ["angle", "energy"]
angle:
bins: [0.0, 360.0]
units: degrees
energy:
values: [0.1, 1, 100000, 10000000, 14100000]
units: eV
interpolation : linear-linear
weights:
- [0.01, 0.01, 0.01, 0.01, 0.95]
strength:
dims: ["angle"]
data: [1.0] # Must match len(angle)
attrs:
units:
description: "Relative strength of source in each angular bin"
attrs:
units:
description: "Neutron source probability distribution as a function of emission angle and energy"
Settings#
Code-independent configuration of simulation controls, such as number of particles, batches, source distribution settings, and physics options. These parameters define how the simulation should be run, regardless of the underlying transport code.
settings:
run_mode: fixed_source
batches: 100
particles_per_batch: 10000000
photon_transport: true
Tallies#
List of tally objects. Definition of observables to be recorded during the simulation (e.g., flux, dose, reaction rates), including spatial, energy, and material filters. Tallies are structured to ensure consistent output formats across different transport codes.
- name: neutron_spectrum
description: "Total neutron current leaving the outer surface"
particle: neutron
scores: [current]
filters:
- type: surface
values: [7] # CAD-file surface ID
- type: energy
values: []
units: particle/src/cm**2
- name: photon_flux
description: "Total photon current leaving the outer surface"
particle: photon
scores: [flux]
filters:
- type: cell
values: [1] # CAD-file cell ID
Uncertainty Quantification#
Setup for input perturbations, sampling strategies, and metrics for uncertainty propagation. Features a total Monte Carlo engine and supports perturbation of main input data, such as nuclear data, material data (density, composition, temperature) and other relevant input data.
uncertainty_quantification:
- type: nuclear_data
description: "Uncertainty in nuclear data"
nuclides: [[Al27]]
reactions: [total]
realizations: [500]
Irradiation Schedule#
Time-dependent irradiation and cooling sequences for activation and shutdown dose rate analysis.
Notes#
All sections are optional unless required by the schema.
All paths are relative to the benchmark folder.
Additional keys may be added to support custom workflows, but they will be ignored during validation unless explicitly included in the schema.
For a section-by-section explanation, see overview.md.