SCONE Guide
SCONE Verification Notice
SCONE is a research-oriented code with a smaller user base than MCNP, OpenMC, or SERPENT. Our examples are intended as educational guidance. For authoritative syntax, physics options, and nuclear data requirements, consult the official documentation.
Building SCONE Geometries
From simple shapes to complex systems using surfaces, cells, and universes
Read Basics first for rootUniverse, pinUniverse, and how material names tie to Materials. Below is CSG surfaces, cell sense, and lattices. The axial pin block is an illustrative excerpt; the universes listing is an exact slice from tutorial_assembly_5x5_testlib (run_all.ps1). Use Basics or scone-examples/verify/ for complete decks.
Building Blocks
SCONE uses Constructive Solid Geometry (CSG): you define surfaces, combine them into cells, and group cells into universes. A surface divides space into two half-spaces. The negative half-space (inside a cylinder, below a plane) is indicated by a minus sign before the surface ID; the positive half-space (outside) has no sign. When you list surfaces in a cell definition, the cell is the intersection of those half-spaces. Getting the signs right is critical—wrong signs create gaps or overlaps that cause lost particles and crashes.
Basic Elements
Surfaces are mathematical boundaries: planes, cylinders (zCylinder), truncated cylinders (zTruncCylinder), and square cylinders (zSquareCylinder). Cells are regions defined by combinations of surfaces, using signs to indicate inside or outside each surface. Universes group cells (or other universes) into reusable components. Lattices arrange universes in regular grids, such as the 17×17 pin layout of a PWR assembly.
Expanding Our Example
The example below shows a fuel pin with axial extent. fuelR and cladR are z-aligned cylinders (infinite along z). boxXpos, boxXneg, zTop, and zBottom are planes that define the radial and axial boundaries. The fuel cell uses surfaces (-1 -5 6): inside cylinder 1, below plane 5 (zTop), and above plane 6 (zBottom). The clad cell adds cylinder 2 to create the annular region. The water cell fills the remainder of the box.
The boundary (0 0 0 0 0 0) sets vacuum on all six faces (-x, +x, -y, +y, -z, +z). Use 1 for reflective and 2 for periodic boundaries. The graph { type shrunk; } option means each material cell shares the same unique ID across universe instances, saving memory for large lattices.
Enhanced Fuel Pin (illustrative CSG)
Not in run_all.ps1 — teaches axial planes and simpleCell sense; paste into a deck with matching nuclearData.
geometry {
type geometryStd;
boundary (0 0 0 0 0 0);
graph { type shrunk; }
surfaces {
fuelR { id 1; type zCylinder; radius 0.41; origin (0.0 0.0 0.0); }
cladR { id 2; type zCylinder; radius 0.475; origin (0.0 0.0 0.0); }
boxXpos { id 3; type plane; coeffs ( 1.0 0.0 0.0 0.63); }
boxXneg { id 4; type plane; coeffs (-1.0 0.0 0.0 0.63); }
zTop { id 5; type plane; coeffs (0.0 0.0 1.0 460.0); }
zBottom { id 6; type plane; coeffs (0.0 0.0 1.0 0.0); }
}
cells {
fuel { type simpleCell; id 10; surfaces (-1 -5 6); filltype mat; material fuel; }
clad { type simpleCell; id 11; surfaces (-2 1 -5 6); filltype mat; material clad; }
water { type simpleCell; id 12; surfaces (2 -3 -4 -5 6); filltype mat; material water; }
}
}Tutorial snippet — no separate file in examples repo
Surface combinations create regions: a cell lists surfaces with signs—minus for the negative half-space (inside a cylinder), plus for the positive half-space. The boundary condition in the geometry block controls what happens when particles reach the outer edges of the problem domain.
Universes and Lattices
Real core models reuse pins and assembly maps. The fundamental universe types are pinUniverse, latUniverse, and cellUniverse— together they let you build pins once, tile them in assemblies, and embed assemblies in core structures.
Assembly universes (verified excerpt)
universes block from tutorial_assembly_5x5_testlib lines 43–63 — 5×5 latUniverse inside the full geometry of that file.
universes {
root { id 1; type rootUniverse; border 5; fill u<1424>; }
pinFuel { id 31000; type pinUniverse; radii (0.39218 0.40005 0.45720 0.0); fills (UO2 Water Water Water); }
pinGT { id 12000; type pinUniverse; radii (0.56134 0.60198 0.0); fills (Water Water Water); }
pinIT { id 14000; type pinUniverse; radii (0.43688 0.48387 0.56134 0.60198 0.0); fills (Water Water Water Water Water); }
lat {
id 1424;
type latUniverse;
origin (0.0 0.0 0.0);
pitch (1.26 1.26 0.0);
shape (5 5 0);
padMat Water;
map (
31000 31000 31000 31000 31000
31000 12000 31000 12000 31000
31000 31000 14000 31000 31000
31000 12000 31000 12000 31000
31000 31000 31000 31000 31000
);
}
}Verify harness (testLib + run_all.ps1)
The pinUniverse defines fuel/guide/instrument patterns once and is reused at every lattice site. radii and fills must have the same length (the trailing 0.0 radius counts as its own slot). The latUniverse lists one universe ID per lattice position; PWR assemblies typically use shape (17 17 0) with 289 IDs (see Reactor Examples). padMat is the moderator material outside the mapped region. Full cores add a cellUniverse shell around the core lattice (see BEAVRS and core excerpts on Reactor Examples).
Geometry Tips
Surface sense is critical: a minus sign before a surface ID means the cell occupies the negative half-space (e.g., inside a cylinder); no sign means the positive half-space. Use the viz block to generate material plots and visually verify that regions are correct and that there are no overlaps or gaps. In pinUniverse, the radii and fills must follow the radial layering order—fuel, gap, clad, water—from center outward.