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.
Advanced SCONE Features
Taking Your Simulations Further
Multi-Level Universe Nesting
SCONE builds complex reactor cores from nested universes: rootUniverse fills the top-level boundary, cellUniverse groups cells, latUniverse arranges pins in a regular grid, and pinUniverse defines the pin structure (fuel, gap, clad, moderator). The BEAVRS benchmark follows this pattern: root to cellUniverse (core/structure cells) to latUniverse (assembly map) to pinUniverse (radii and fills).
! Multi-level universe nesting (BEAVRS-style)
! rootUniverse -> cellUniverse -> latUniverse -> pinUniverse
universes {
root { id 1; type rootUniverse; border 1; fill u<9999>; }
coreAndStructures {
id 8888;
type cellUniverse;
cells (7 8 9 10 11 12 13 14 15 16 17);
}
A16E31 {
id 1631;
type latUniverse;
origin (0.0 0.0 0.0);
pitch (1.26 1.26 0.0);
shape (17 17 0);
padMat Water;
map (
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31 31
... 17x17 lattice pattern ...
);
}
pin31 { id 31000; type pinUniverse;
radii (0.39218 0.40005 0.45720 0.0);
fills (UO2-31 Helium Zircaloy Water);
}
}The root universe fills the core boundary with a cellUniverse. The cellUniverse references cells that may contain latUniverse or pinUniverse directly. The latUniverse map specifies lattice positions (e.g. 31 for fuel pin type 31). Each pinUniverse defines radii and material fills for fuel, gap, clad, and moderator.
Complex Axial Layering
PWR cores have multiple axial zones: lower plenum, active fuel, upper plenum, grid spacers, control rod guide tubes. Each zone is defined by plane surfaces at different z-elevations. Cells combine planes to form axial segments; each segment can contain a different universe (e.g. different pin types or materials at axial elevations).
! Complex axial layering using plane surfaces at different elevations
! Each plane defines a z-elevation; cells combine planes for axial segments
surfaces {
plane460 { id 120; type plane; coeffs (0.0 0.0 1.0 460.0); }
plane431876 { id 121; type plane; coeffs (0.0 0.0 1.0 431.876); }
plane423049 { id 122; type plane; coeffs (0.0 0.0 1.0 423.049); }
plane419704 { id 124; type plane; coeffs (0.0 0.0 1.0 419.704); }
plane150222 { id 138; type plane; coeffs (0.0 0.0 1.0 150.222); }
plane98 { id 140; type plane; coeffs (0.0 0.0 1.0 98.025); }
plane0 { id 149; type plane; coeffs (0.0 0.0 1.0 0.0); }
}
cells {
! Axial segment: between plane98 and plane150222
lowerActive { type simpleCell; id 200; surfaces (-140 138); filltype uni; universe 31000; }
! Axial segment: between plane419704 and plane423049
upperActive { type simpleCell; id 201; surfaces (-124 122); filltype uni; universe 31000; }
}Plane surfaces use coeffs (nx ny nz d) for the plane equation nx*x + ny*y + nz*z = d. z-elevations use coeffs (0 0 1 0 z_value). Cells combine planes with surface sense (-plane inside, +plane outside) to define bounded regions.
Grid Spacer Modeling
Grid spacers are Inconel sleeves that support fuel pins. SCONE models them with zSquareCylinder surfaces (square cross-section, infinite in z). At spacer elevations, cells are split: inside the square envelope, either the spacer material (Inconel) or the pin universe (pin inside the spacer hole). Thick and thin grid types use different halfwidth values.
! Grid spacer modeling using zSquareCylinder overlaid on pin cells
! Thick and thin Inconel sleeves at spacer elevations
surfaces {
pinThickGridInner { id 90; type zSquareCylinder; origin (0.0 0.0 0.0); halfwidth (0.61015 0.61015 0.0); }
pinThickGridOuter { id 91; type zSquareCylinder; origin (0.0 0.0 0.0); halfwidth (0.62992 0.62992 0.0); }
pinThinGridInner { id 92; type zSquareCylinder; origin (0.0 0.0 0.0); halfwidth (0.61049 0.61049 0.0); }
pinThinGridOuter { id 93; type zSquareCylinder; origin (0.0 0.0 0.0); halfwidth (0.62992 0.62992 0.0); }
}
cells {
thickGrid { type simpleCell; id 55; surfaces (90); filltype mat; material Inconel; }
thinGrid { type simpleCell; id 56; surfaces (92); filltype mat; material Inconel; }
! Pin inside thick grid envelope
gridThick31 { type simpleCell; id 1310; surfaces (-90); filltype uni; universe 31000; }
gridThin31 { type simpleCell; id 2310; surfaces (-92); filltype uni; universe 31000; }
}zSquareCylinder uses origin and halfwidth (hx hy 0) for the square cross-section. Cells with surfaces (90) or (92) are pure spacer material. Cells with surfaces (-90) or (-92) contain the pin universe inside the spacer opening.
Visualization for Debugging
The viz block generates bitmap images of the geometry for debugging. Use it to verify material assignments, check for overlaps or gaps, and confirm axial layering. Output files are written at the specified resolution; centre and width define the view region.
! Visualization block for geometry debugging
! Generates material plots to verify geometry
viz {
bmpZ { type bmp; output imgZ; what material;
centre (0.0 0.0 0.0);
width (5.0 5.0);
axis z;
res (500 500);
}
bmpY { type bmp; output imgY; what material;
centre (0.0 0.0 0.0);
width (5.0 5.0);
axis y;
res (500 500);
}
}type bmp with what material produces a material-colored slice. axis z gives an xy slice; axis y gives an xz slice. Run with low pop/active/inactive for quick smoke tests when debugging geometry.
Best Practices
Start with simple geometries and add complexity gradually. Use the viz block to verify each change. Validate against known benchmarks (e.g. BEAVRS) when possible. Document surface IDs and universe numbering to avoid conflicts. Test with low population counts before production runs.