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.

Extending SCONE

Modifying Fortran source for new tally clerks, surfaces, and physics

This page is for users who already run standard inputs from Basics and the Examples hub and need behavior that is not exposed in the input deck.

Tally and material listings are exact excerpts from tutorial_examples_hub_testlib and tutorial_nuclear_data_basic_testlib (both in run_all.ps1). The geometry block matches tutorial_config_testlib lines 28–43 — still embed in a full deck with physics and nuclearData.

No Custom Input Blocks

SCONE does not support material { type customMaterial },tally { type meshTally }, geometry custom ... end, or any other custom input-deck type. There is no scone_interface Python module. Extensions are implemented by modifying SCONE's Fortran source code.

SCONE's Modular Architecture

SCONE is designed for extensibility through its Fortran codebase. The code uses a factory-style pattern: new tally clerks, surface types, physics packages, and transport operators can be added by implementing the appropriate interfaces and registering them. The input deck supports only the types that are compiled into the executable.

What the Input Deck Supports

Within the block-style syntax, SCONE supports predefined types. Examples of valid structures:

Tally Clerks

Tallies use collisionClerk, macroResponse, and spaceMap types. There is no meshTally or type custom.

tutorial_examples_hub_testlib (lines 17–31)
inactiveTally {}

activeTally {
  fissionRate {
    type collisionClerk;
    response (fission);
    fission { type macroResponse; MT -6; }
    map {
      type multiMap;
      maps (xax yax);
      xax { type spaceMap; axis x; grid lin; N 64; min -0.63; max 0.63; }
      yax { type spaceMap; axis y; grid lin; N 64; min -0.63; max 0.63; }
    }
  }
}

Materials

Materials are defined in nuclearData.materials with temp andcomposition (ZAID and value pairs). There is no type customMaterial orresonance_treatment block.

extensions_material_hook.inp
nuclearData {
  handles { ce { type aceNeutronDatabase; aceLibrary $SCONE_ACE; } }
  materials {
    UO2-31 {
      temp 600;
      composition { 92235.03 4.50e-02; }
    }
  }
}

Surfaces

Surfaces use predefined types such as zCylinder, plane,zSquareCylinder, zTruncCylinder. Custom shapes require source code changes.

tutorial_config_testlib (lines 28–43)
geometry {
  type geometryStd;
  boundary ( 0 0 0 0 0 0 );
  graph { type shrunk; }

  surfaces {
    boxSq { id 5; type zSquareCylinder; origin (0.0 0.0 0.0); halfwidth (0.63 0.63 0.0); }
  }

  cells { }

  universes {
    root  { id 1; type rootUniverse; border 5; fill u<31000>; }
    pin31 { id 31000; type pinUniverse; radii (0.39218 0.40005 0.45720 0.0); fills (UO2 Water Water Water); }
  }
}

Adding New Capabilities via Source Code

To extend SCONE beyond what the input deck supports, you must modify the Fortran source:

New Tally Clerk

Implement a new clerk type that extends the tally clerk interface. Register it in the factory so the input parser can instantiate it when it encounters type yourClerkName. The clerk must integrate with the collision or transport loop to score the desired quantity.

New Surface Type

Add a new surface class that implements the surface interface (e.g., distance-to-boundary, sense tests). Register it so the geometry parser can create instances from input blocks likemySurface { id N; type yourSurfaceType; ... }.

New Physics Package

Physics packages (e.g., eigenPhysicsPackage) control the overall simulation flow. Adding a new package type requires implementing the package interface and wiring it into the main driver. This is a larger change than adding a tally or surface.

What Does Not Exist

  • material { name ...; type customMaterial }
  • tally { type meshTally } or type custom
  • geometry custom ... end or any ... end block terminators
  • source custom or physics custom
  • Python scone_interface or read_results / write_results

Post-Processing Outside SCONE

SCONE writes output in its native format. For analysis and visualization, use standard tools: parse the output files with scripts (Python, MATLAB, etc.), or convert to formats supported by your analysis pipeline. There is no official Python API bundled with SCONE.