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.

Radiation Shielding Examples

Fixed-source slab and cylinder problems

SCONE and Shielding

Read Basics and Settings first (eigen vs fixed-source). This page uses type fixedSourcePhysicsPackage and a source block, not k-eigenvalue decks.

SCONE's primary strength is reactor physics (k-eigenvalue, lattice cores, depletion). For shielding problems, use type fixedSourcePhysicsPackage. However, SCONE's variance reduction capabilities for deep-penetration problems are limited compared to MCNP (weight windows, CADIS, DXTRAN). For production shielding work, MCNP is the better choice.

Slab Shield Configuration

Source region (0–5 cm x), concrete (5–15), detector (15–30). Plane coeffs (nx ny nz d): F = n·r − d. The first listing matches tutorial_shielding_slab in this repo (Water in all cells for testLib). The second uses Air/Concrete and ZAID .06; it matches scone-examples/verify/tutorial_shielding_slab_production for parser checks—point SCONE_ACE at a full library (testLib fails at ACE load after geometry). domainBox id 9 = rootUniverse border. official SCONE documentation.

Verified (testLib)

tutorial_shielding_slab
// ===================================================================
// Fixed-source slab — testLib (Water stands in for Air / Concrete regions)
// Production deck: same geometry; define Air + Concrete + full aceLibrary path.
// Verified: domainBox (id 9) = rootUniverse border (enclosed model).
// ===================================================================
type fixedSourcePhysicsPackage;
pop      10000;
cycles   100;
XSdata   ce;
dataType ce;

collisionOperator { neutronCE { type neutronCEstd; } }
transportOperator { type transportOperatorDT; }

source {
  type pointSource;
  r (2.5 0.0 0.0);
  particle neutron;
  E 1.0;
}

tally {
  fluxRate {
    type collisionClerk;
    response (flux);
    flux { type fluxResponse; }
    map {
      type multiMap;
      maps (xax);
      xax { type spaceMap; axis x; grid lin; N 50; min 0.0; max 30.0; }
    }
  }
}

// ===================================================================
// GEOMETRY
// ===================================================================
geometry {
  type geometryStd;
  boundary ( 0 0 0 0 0 0 );
  graph { type shrunk; }

  surfaces {
    domainBox { id 9; type box; origin (15.0 0.0 0.0); halfwidth (15.0 10.0 10.0); }
    P1    { id 1; type plane; coeffs (1.0 0.0 0.0 0.0); }
    P2    { id 2; type plane; coeffs (1.0 0.0 0.0 5.0); }
    P3    { id 3; type plane; coeffs (1.0 0.0 0.0 15.0); }
    P4    { id 4; type plane; coeffs (1.0 0.0 0.0 30.0); }
    boxY  { id 5; type plane; coeffs (0.0 1.0 0.0 -10.0); }
    boxY2 { id 6; type plane; coeffs (0.0 1.0 0.0 10.0); }
    boxZ  { id 7; type plane; coeffs (0.0 0.0 1.0 -10.0); }
    boxZ2 { id 8; type plane; coeffs (0.0 0.0 1.0 10.0); }
  }

  cells {
    source   { type simpleCell; id 10; surfaces (1 -2 5 -6 7 -8); filltype mat; material Water; }
    shield   { type simpleCell; id 11; surfaces (2 -3 5 -6 7 -8); filltype mat; material Water; }
    detector { type simpleCell; id 12; surfaces (3 -4 5 -6 7 -8); filltype mat; material Water; }
  }

  universes {
    root  { id 1; type rootUniverse; border 9; fill u<100>; }
    inner { id 100; type cellUniverse; cells (10 11 12); }
  }
}

// ===================================================================
// NUCLEAR DATA
// ===================================================================
nuclearData {
  handles { ce { type aceNeutronDatabase; aceLibrary $SCONE_ACE; } }
  materials {
    Water { temp 293; composition { 1001.03 6.67e-02; 8016.03 3.33e-02; } }
  }
}

Production (Air / Concrete)

Not in run_all.ps1 — needs a full ACE library (see prose above); testLib fails at ACE load for these nuclides.

slab_shield_production.inp
// ===================================================================
// Fixed-source slab — source | concrete | detector (production materials)
// Geometry matches scone-examples/verify/tutorial_shielding_slab (domainBox = root border).
// ===================================================================
type fixedSourcePhysicsPackage;
pop      100000;
cycles   200;
XSdata   ce;
dataType ce;

collisionOperator { neutronCE { type neutronCEstd; } }
transportOperator { type transportOperatorDT; }

source {
  type pointSource;
  r (2.5 0.0 0.0);
  particle neutron;
  E 1.0;
}

tally {
  fluxRate {
    type collisionClerk;
    response (flux);
    flux { type fluxResponse; }
    map {
      type multiMap;
      maps (xax);
      xax { type spaceMap; axis x; grid lin; N 50; min 0.0; max 30.0; }
    }
  }
}

// ===================================================================
// GEOMETRY
// ===================================================================
geometry {
  type geometryStd;
  boundary ( 0 0 0 0 0 0 );
  graph { type shrunk; }

  surfaces {
    domainBox { id 9; type box; origin (15.0 0.0 0.0); halfwidth (15.0 10.0 10.0); }
    P1    { id 1; type plane; coeffs (1.0 0.0 0.0 0.0); }
    P2    { id 2; type plane; coeffs (1.0 0.0 0.0 5.0); }
    P3    { id 3; type plane; coeffs (1.0 0.0 0.0 15.0); }
    P4    { id 4; type plane; coeffs (1.0 0.0 0.0 30.0); }
    boxY  { id 5; type plane; coeffs (0.0 1.0 0.0 -10.0); }
    boxY2 { id 6; type plane; coeffs (0.0 1.0 0.0 10.0); }
    boxZ  { id 7; type plane; coeffs (0.0 0.0 1.0 -10.0); }
    boxZ2 { id 8; type plane; coeffs (0.0 0.0 1.0 10.0); }
  }

  cells {
    source   { type simpleCell; id 10; surfaces (1 -2 5 -6 7 -8); filltype mat; material Air; }
    shield   { type simpleCell; id 11; surfaces (2 -3 5 -6 7 -8); filltype mat; material Concrete; }
    detector { type simpleCell; id 12; surfaces (3 -4 5 -6 7 -8); filltype mat; material Air; }
  }

  universes {
    root  { id 1; type rootUniverse; border 9; fill u<100>; }
    inner { id 100; type cellUniverse; cells (10 11 12); }
  }
}

// ===================================================================
// NUCLEAR DATA
// ===================================================================
nuclearData {
  handles { ce { type aceNeutronDatabase; aceLibrary /path/to/your.aceXS; } }
  materials {
    Air {
      temp 293;
      composition {
        7014.06 3.9016E-05;
        8016.06 1.0409E-05;
      }
    }
    Concrete {
      temp 293;
      composition {
        1001.06  1.3742E-02;
        8016.06  4.5953E-02;
        14028.06 1.6619E-02;
        20040.06 1.5025E-03;
      }
    }
  }
}

Tutorial snippet — no separate file in examples repo

Geometry Notes

  • Plane coeffs (nx ny nz d): F(r)=n·r−d; (1 0 0 0)=x=0; (1 0 0 5)=x=5
  • Cell surfaces use signed IDs: -1 = inside, +1 = outside (for planes)
  • rootUniverse border and cellUniverse fill follow the same pattern as eigenvalue inputs
  • Ensure the point source r (x y z) is inside a cell; SCONE validates at init. Cell surfaces (1 -2 5 -6 7 -8) define 0<x<5 for source region.
  • Root border must encompass all cells; otherwise escaping particles hit undefined material. Use a box surface for bounded domains.

Cylindrical Shield Snippet

Excerpt only — paste surfaces and cells inside a full geometry block with graph, universes, and nuclearData. For cylindrical regions, use zCylinder surfaces: inner radius = source; annulus = shield; outside = detector/air. Add axial planes for finite height.

Not a complete input; not in run_all.ps1.

cylinder_shield_snippet.inp
// Cylindrical shield (zCylinder surfaces)
surfaces {
  innerR { id 1; type zCylinder; radius 5.0; origin (0.0 0.0 0.0); }
  outerR { id 2; type zCylinder; radius 20.0; origin (0.0 0.0 0.0); }
  topZ { id 3; type plane; coeffs (0.0 0.0 1.0 50.0); }
  botZ { id 4; type plane; coeffs (0.0 0.0 1.0 -50.0); }
}
cells {
  source { type simpleCell; id 10; surfaces (-1 4 -3); filltype mat; material Air; }
  shield { type simpleCell; id 11; surfaces (-2 1 4 -3); filltype mat; material Lead; }
  outside { type simpleCell; id 12; surfaces (2 4 -3); filltype mat; material Air; }
}

Tutorial snippet — no separate file in examples repo

When to Use MCNP Instead

For shielding problems requiring:

  • Deep penetration (many mean free paths)
  • Weight windows or CADIS variance reduction
  • Photon transport or coupled n-gamma
  • Streaming through ducts and penetrations

MCNP provides mature, well-documented variance reduction and is the industry standard for shielding.