a multi-purpose three-dimensional continuous-energy Monte Carlo particle transport
code, developed at VTT Technical Research Centre
of Finland, Ltd. The development started in 2004, and the code has been publicly distributed by the OECD/NEA Data Bank and RSICC since 2009.
Serpent started out as a simplified reactor physics code, but the capabilities of the current development version, Serpent 2, extend well beyond reactor
modeling. The applications can be roughly divided into three categories:
||Traditional reactor physics applications, including spatial homogenization,
criticality calculations, fuel cycle studies, research reactor modeling, validation of deterministic transport codes, etc.
||Multi-physics simulations, i.e. coupled calculations with thermal hydraulics,
CFD and fuel performance codes
||Neutron and photon transport simulations for radiation dose rate calculations, shielding, fusion research and medical physics
features and capabilities of the code are
introduced below. Support for users is provided at the
Serpent Discussion Forum, and the
acts as an on-line user manual.
The recommended publication for referencing Serpent is:
Leppänen, J., et al. (2015)
"The Serpent Monte Carlo code: Status, development and applications in 2013."
Ann. Nucl. Energy, 82 (2015) 142-150.
although it should be noted that this review article does not cover some of the latest features, including
photon transport mode and advanced geometry types.
NOTE: Please report any scientific publications where you have extensively used Serpent to the developer team, so we can include them on the
list of publications. This is important especially for theses, which are otherwise
difficult to keep track of.
Geometry and particle tracking
Similar to other Monte Carlo codes
the basic geometry description in Serpent relies on
a universe-based constructive solid geometry (CSG) model, which allows the
description of practically any two- or three-dimensional
fuel or reactor configuration. The CSG geometry consists of homogeneous
material cells, defined by elementary and derived surface
types that are combined using Boolean operators (intersections, unions and complements).
Serpent supports conventional square and hexagonal lattices, and provides
special geometry types for CANDU and randomly-dispersed particle fuels. In addition to CSG-type universes Serpent has the option to
import CAD and unstructured mesh based geometries.
Woodcock delta-tracking method
transport in Serpent is based on the combination of conventional
surface-tracking and the Woodcock
(Woodcock, 1965). The tracking routine has proven efficient and
well suited for geometries where the neutron or photon mean-free-path is long compared to the dimensions. This
is typically the case in reactor physics calculations involving
fuel assemblies and especially HTGR micro-particle fuels. Complex geometries with highly-refined spatial detail are
also encountered in various fusion applications. The traditional delta-tracking method is subject to certain
efficiency problems related to localized heavy absorbers, which in Serpent are avoided by switching to
surface-tracking when necessary (Leppänen, 2010b).
drawback of delta-tracking is that the track-length estimate
of particle flux is not available, and reaction rates have to
be calculated using the potentially less-efficient collision
estimator. This is usually not a problem at all in reactor calculations
when reaction rates are scored in regions of high collision
density. When the collision rate is low, the efficiency of the estimator can be improved by
introducing additional virtual collisions over the particle flight path.
Serpent also provides a special detector type based on the track-length estimator for
calculating reaction rates in small or optically thin volumes, in which the efficiency of the collision
estimator is often poor (Leppänen, 2017a).
Explicit particle and pebble-bed fuel model for HTGR calculations
High-temperature gas-cooled reactor geometries differ
significantly from conventional light water reactors. The fissile material
is encapsulated inside microscopic tristructural-isotropic (TRISO) fuel particles,
randomly dispersed in fuel compacts or pebbles made of
graphite. In pebble-bed type geometries the spherical fuel
pebbles are piled inside the reactor core, which brings
another level of random heterogeneity in the calculation.
The explicit HTGR
geometry model in Serpent reads the coordinates of fuel particles or
pebbles from a separate input file, and generates the geometry as it is
defined, without any approximations. The model works
on several levels (particles inside a pebble and pebbles
inside the core) and it has been tested in realistic double-heterogeneous
reactor configurations consisting of over 60 million randomly positioned units
The computational overhead from handling the unstructured configuration is moderate
compared to a similar regular-lattice model.
The routine also enables the calculation of pebble-wise
power distributions over the reactor core without defining additional tallies.
the construction of HTGR geometries, Serpent provides a separate
command line routine that generates random particle
distribution files for the explicit geometry model.
CAD and unstructured mesh-based geometry types
Serpent has the capability to import CAD and unstructured mesh based
geometries as part of the universe structure. CAD models are read in the stereolitography (STL) format, in which the
surfaces of geometry bodies are represented by a mesh of flat triangles. The STL file format is widely used for 3D printing,
and therefore supported by most CAD tools. The geometry type was introduced in Serpent 2 in 2014
(Leppänen, 2014f), and it has been used
for modeling complicated structures in fusion
Sirén, 2016) and
The unstructured mesh based geometry type
(Leppänen, 2014d) was developed as a by-product of
the multi-physics interface used for coupling Serpent 2 to OpenFOAM CFD calculations (see below).
The geometry consists of a three-dimensional tetra-, hexa- or polyhedral mesh read in the standard
OpenFOAM mesh file format.
continuous-energy cross sections from ACE format
data libraries. The
interaction physics is based on classical collision
kinematics, ENDF reaction laws and probability table sampling in the unresolved
resonance region. Improved treatment for the free-gas scattering kernel near resonances
is also available, based on the DBRC Doppler-broadening rejection correction method
cross section libraries based on JEF-2.2, JEFF-3.1, JEFF-3.1.1, ENDF/B-VI.8
and ENDFB/B-VII evaluated data files are included in the
installation package of Serpent 1. Interaction data is available for 432
nuclides at 6 temperatures between 300 and 1800K. Thermal
bound-atom scattering data is included for light and heavy
water and graphite. Since the data format is shared with MCNP, any continuous-energy ACE format data library generated for MCNP
can be used with Serpent as well. The data format determines the "laws of physics" for neutron interactions, and the results from
Serpent calculations can be expected to agree with MCNP to within statistics.
Unionized energy grid format
Continuous-energy cross sections
read from the library files are reconstructed on a unionized
energy grid, used for all reaction modes
(Leppänen, 2009b). The use of a
single energy grid results in a major speed-up in
calculation, as the number of CPU time consuming grid search
iterations is reduced to minimum.
Macroscopic cross sections for each material are pre-generated
before the transport simulation. Instead of calculating the cross sections by summing over
the constituent nuclides during tracking, the values are read from pre-generated tables, which is another
effective means to improve the performance.
of the unionized energy grid approach is
that computer memory is wasted for storing redundant data
points. The grid size may become prohibitively large in burnup
calculations, often involving more than 250 actinide and
fission product nuclides. To overcome this issue, Serpent 2 provides different optimization modes for
small and large burnup calculation problems, in which the the unionized energy grid approach is used selectively
(Leppänen, 2012a). The lowest optimization modes allow running large burnup calculation problems
with tens or hundreds of thousands of depletion zones, while the higher modes provide considerable speed-up in assembly-level calculations.
Doppler-broadening of cross sections
A built-in Doppler-broadening preprocessor routine (Viitanen, 2009) allows
adjusting the temperatures of ACE format cross sections.
This capability results in a more accurate description of the
interaction physics in temperature-sensitive applications,
as the data in the cross section libraries is available only
in 300K intervals. The method has been validated with good
results and the routine works efficiently without significant computational overhead.
Another option for adjusting the material temperatures is the target motion sampling (TMS) on-the-fly temperature treatment routine
Instead of averaging the cross sections over the Maxwellian distribution (actual Doppler-broadening), the TMS method accounts for
thermal motion explicitly, by making a coordinate transformation in the target-at-rest frame before handling the collision physics.
The method was developed especially for the purpose of multi-physics coupling (see below), where it can be used for modeling a wide variation
of material temperatures or even continous temperature distributions.
The adjustment of neutron thermal scattering cross section and energy-angle distributions in S(α,β) format is based on interpolation between tabular data.
This can be performed in a pre-processing stage or on-the-fly during the transport simulation
The most significant limitation in the temperature treatment routines is that the adjustments cannot be currently applied to
unresolved resonance probability table sampling.
Photon transport mode
Photon physics routines were implemented in Serpent 2 in 2015
The physics model currently covers the basic interactions (Rayleigh and Compton scattering, photoelectric effect and electron-positron pair production)
for photon energies ranging from 1 keV to 100 MeV. Secondary photons are produced by atomic relaxation and bremsstrahlung, handled using the
thick-target bremsstrahlung (TTB) approximation. The physics model is comparable to the methods used in other Monte
Carlo transport codes (e.g., MCNP6, PENELOPE, Geant4, EGS5, EGSnrc, FLUKA). In addition to the standard ACE format cross section libraries Serpent reads
photon interaction data from supplementary data files, which is why the physics model is not fully compatible with that used in MCNP.
The source distribution for photon transport simulations can be obtained from a radioactive decay source. In this source mode Serpent combines the compositions of activated materials
into photon emission spectra read from ENDF format radioactive decay data files. Source generation can be combined with a burnup or activation calculation performed using built-in automated
calculation routines (see below). The methodology has been applied, for example, to spent fuel transport cask calculations and the
the evaluation of shut-down dose rates following a plasma shot in the ITER fusion reactor
The original incentive for developing a photon transport mode was to account for gamma heating in coupled multi-physics simulations. Modeling of accurate heat deposition in coolant
and structural materials requires accounting for the direct contribution of neutrons and fission and capture gammas. A coupled neutron-photon transport mode was implemented in Serpent 2 in
2017, and the development of advanced heat deposition models is under way. The implementation of photon physics routines has also allowed broadening the scope of Serpent applications from traditional
reactor physics calculations to radiation transport and shielding.
The burnup calculation capability in Serpent was established early on, and is entirely based on built-in calculation routines,
without coupling to any external solvers. The number of depletion zones
is not restricted, although memory usage may require reducing the optimization when
the number of burnable materials is large.
Fission and activation
products and actinide daughter nuclides are selected for the
calculation without additional user effort, and burnable materials can be sub-divided into depletion zones automatically.
history is defined in units of time or burnup. Reaction
rates are normalized to total power, specific power density, flux, fission or
source rate, and the normalization can be changed by
irradiation cycle into a number of separate depletion intervals.
A restart features allows performing fuel shuffling or applying any modifications in the input by dividing the
calculation into several parts.
masses needed for the normalization are calculated
automatically for simple geometries, such as 2D fuel pin lattices. The values can also be obtained from a Monte Carlo based volume calculation routine or
decay and fission yield data used in the calculation is read
from standard ENDF format data libraries. The
decay libraries may contain data for almost 4000 nuclides
and meta-stable states, all of which is available for the
calculation. The total number of different nuclides produced
from fission, transmutation and decay reactions is generally
lower, in the order of 1500. The concentrations of all included nuclides with decay data are tracked in the burnup calculation, and the number of nuclides with cross sections typically ranges from 200 to 300.
Energy-dependent fission yields
are available for all main actinides (31 nuclides in ENDF/B-VII data).
Isomeric branching ratios for neutron reactions are not included in the ACE format data libraries. Serpent uses fixed ratios
for the most important nuclides (e.g Am-241 and Pm-147) by default, and has the option to read energy-dependent data from ENDF format files.
one-group transmutation cross sections are calculated either
during the transport simulation, or by collapsing the continuous-energy reaction cross
sections after the calculation has been completed using a flux
spectrum collected on the unionized energy grid. The
spectrum collapse method speeds up the calculation by a factor of
3-4, and due to the high energy resolution of the flux
spectrum, the errors in the results are practically
Similar methodology has been
used with other coupled Monte Carlo burnup calculation codes
two fundamentally different options for solving the Bateman
depletion equations. The first method is the
Transmutation Trajectory Analysis (TTA) method
(Cetnar, 2006), based on the analytical solution of
linearized depletion chains. The second option is the
Chebyshev Rational Approximation Method (CRAM), an advanced
matrix exponential solution developed for Serpent at VTT
The two methods have shown to yield
consistent results, both when used with Serpent
and in separate methodological studies
Burnup algorithms include the conventional explicit Euler and predictor-corrector methods, but Serpent 2 also offers various higher-order
methods and sub-step solutions for burnup calculation
The stability of 3D burnup calculations can be improved by implicit algorithms
Fission product poisons Xe-135 and Sm-149 can be handled separately from the other nuclides,
and iterated to their equilibrium concentration during the transport simulation.
The equilibrium calculation is independent of the depletion routine, and the iteration can
also be performed in transport mode without burnup calculation.
Coupled multi-physics simulations
Two-way coupling to thermal hydraulics, CFD and fuel performance codes has been a major topic in Serpent development for the past several years.
The multi-physics coupling scheme in Serpent 2
is designed to operate on two levels:
|| Internal coupling to
built-in solvers for fuel behavior and thermal hydraulics
External coupling via a universal multi-physics interface
The built-in solvers are integrated to the transport simulation at source code level, and designed to provide solutions to coupled problems at a relatively low computational cost. The solvers include
-- a thermo-mechanical fuel behavior module for the modeling of temperature feedback
inside fuel pins in steady-state and transient conditions, and COSY
-- a three-dimensional system/component scale thermal hydraulics solver based on a porous medium
three-field flow model. The FINIX solver is available by request, but the development of COSY is still under way.
The multi-physics interface is designed for coupling Serpent to external solvers. The interface has
several structured mesh formats for coupling to thermal hydraulics codes, and additional interface types are
available for fuel performance
and CFD (Leppänen, 2014e) code coupling.
The CFD interface is based on an unstructured tetra-, hexa- or polyhedral mesh read in the standard
OpenFOAM mesh file format.
The purpose of the multi-physics interface is essentially to separate the state variables from the geometry description,
which allows handing all data flow between
the coupled codes without modifications in the main input files. The methodology relies heavily on
the capability to model continuously-varying density distributions
and the on-the-fly temperature treatment routines (see description above).
Work on coupled multi-physics applications continues.
Coupled calculations have been carried out in steady-state, transient and burnup modes. The transient capability in Serpent
allows the modeling of both prompt super-critical reactivity excursions and slow transients below prompt criticality.
A delayed neutron model
allows the tracking of precursor concentrations over long time periods.
In addition to fission reactor applications, Serpent has also been coupled to plasma scenario simulations to provide a
realistic source distribution for fusion neutronics calculations
(Sirén, 2016). This work is an essential part of
expanding the use of Serpent to fusion research.
When Serpent started out as a reactor physics code, obtaining sufficient statistics for the results was just a matter of running a
sufficient number of neutron histories. The uniform fission site method was later implemented to improve the statistical accuracy in
full-core calculations, in which the outermost fuel pins in assemblies located at the core-reflector boundary typically receive
a low number of scores. Similar methodology is also used in the MC21 code
The implementation of more efficient general-purpose variance reduction techniques was started fairly recently, along with the effort to
broaden the scope of applications to radiation transport and shielding calculations. The methodology relies on a conventional
super-imposed weight-window mesh. The importances used for obtaining the weight-window boundaries can be produced by
state-of-the-art calculation tools, such as ADVANTG or MAVRIC, or using a built-in light-weight solver based on the response-matrix method.
Serpent can read standard MCNP WWINP format files, although the methodology is still under development and subject to several
Serpent can be run in parallel in computer clusters and multi-core workstations. Parallelization at
core level is handled by thread-based OpenMP, which has the advantage that
all CPU cores within the computational node are accessing the same memory space. Calculations can
be divided into several nodes by distributed-memory MPI parallelization.
to the particle transport simulation, parallelization in the burnup calculation mode divides also the
preprocessing and depletion routines between several CPU's.
Results and output
Spatial homogenization was the main intended application for Serpent when the project was started in 2004.
The group constant generation capability in Serpent 2 currently covers
Homogenized few-group reaction cross sections
||Scattering and scattering production matrices
||Transport cross sections and diffusion coefficients calculated using several methods
||Form factors for pin-power reconstruction
||Albedos and partial albedos
||Poison cross sections for Xe-135 and Sm-149 and their precursors
||Effective delayed neutron fractions
||Transmutation cross sections for micro-depletion
Homogenization can be performed in infinite spectrum, or using a leakage correction based on the deterministic solution of the B1 equations.
Serpent also has a built-in homogeneous diffusion flux solver for calculating discontinuity factors in regions where the net current over the
boundaries is not reduced to zero by reflective boundary conditions. This is the case, for example, in reflectors and assembly colorset configurations.
The calculation of homogenized group constants is fully automated, and Serpent provides an automated burnup sequence capable of performing branch calculations
for state-point variation.
User-defined detectors (tallies) can be set up for
calculating various integral reaction rates for neutrons and photons. The spatial
integration domain can be defined by a combination of cells,
universes, lattices and materials, or using a
three-dimensional super-imposed mesh. The results can be divided into an
arbitrary number of energy and time bins. The standard tally types are based on the
collision estimate of particle flux, and
special detectors are available for
calculating surface currents and reaction rates inside simple surface types using the
track-length estimator. Photon tallies also include a pulse-height detector.
response functions are available for the calculation of integral reaction rates,
including material-wise macroscopic and isotopic microscopic cross
sections, ACE format dosimetry data and user-defined functions. Built-in mass-energy attenuation coefficients
are available for calculating photon dose rates. Energy deposition and radiation dose can also be evaluated using analog
detector types, which in some case provide more physical results compared to the use of flux-to-dose conversion factors.
Serpent calculates adjoint-weighted point kinetics parameters and effective delayed neutron fractions using
the iterated fission probability (IFP) method (Leppänen, 2014b),
relying on an implementation similar to that developed for the MCNP code
burnup calculation consists of isotopic compositions,
activities, spontaneous fission rates, decay heat and radiotoxicity
data. The results are given both as material-wise and total
values. Group constants and all the other output parameters
are calculated and printed for each burnup step.
output is written in Matlab m-format files to simplify
the post-processing of the results. The code also has a geometry plotter feature and a
reaction rate plotter, which is convenient for visualizing
the neutronics and tally results (see the
gallery for examples).
Each Serpent update is checked by comparison to MCNP by running a
standard set of assembly calculation problems.
Effective multiplication factors and homogenized few-group
reaction cross sections are
within the statistical accuracy from the reference results,
when the same ACE libraries are used in the calculations.
Validation against MCNP has also been carried out with equally good results for calculations involving
individual nuclides, by comparing the flux spectra produced by the two codes.
Differences to other Monte Carlo codes (Keno-VI) are small,
but statistically significant discrepancies can be observed
in some cases. Differences to deterministic lattice codes
larger, mainly due to the fundamental differences between
the calculation methods.
Validation of burnup calculation routines is considerably more difficult, due to the lack of a perfect reference code. In addition
to discrepancies in the transport simulation, there are additional factors related to decay, fission yield and isomeric branching ratio data,
formulation of transmutation and decay chains, depletion algorithms, and so on. Comparison of
effective multiplication factors and other integral parameters shows generally good agreement between different calculation codes,
but significant discrepancies can be found in the concentrations of individual nuclides. Burnup calculations are extremely sensitive to
differences in the fundamental physics data, and changing one decay library to another can alone result in orders of magnitude discrepancies
for some radionuclides. The lack of high-quality experimental reference data is a common problem in the validation of all burnup calculation codes.
Systematic validation for criticality safety analyses using experimental configurations and data from the
International Handbook of Evaluated Criticality Safety Benchmark Experiments
is currently under way. Similar validation project is planned for radiation shielding calculations.
Serpent-generated group constants have been used as the input data for various nodal diffusion codes, such as PARCS, DYN3D, and several in-house codes developed at VTT.
The best way to validate the Monte Carlo based code sequence is to compare the results to reference Serpent full-core calculations. This approach has been applied, for example, for the
Serpent-ARES code sequence, using the MIT BEAVRS Benchmark as the test case. The study
involved initial core HZP and HFP calculations and fuel cycle simulations, with comparisons to 3D Monte Carlo calculations and experimental results
2016b). The calculations also demonstrated the practical feasibility of using the continuous-energy
Monte Carlo method for producing the full set of group constants for full-scale PWR fuel cycle simulations.
June 12, 2017
New code version, list of publications updated.
February 15, 2017
List of publications updated.
February 6, 2017
New code version, website content brought up to date.
November 8, 2016
Serpent Discussion Forum
Serpent 1 User's
(March 6, 2013)
NOTE: This manual covers only the basic features in Serpent 1. The capabilities of Serpent 2 are
described at the on-line Wiki and the discussion forum.
Serpent 1 base version:
1.1.7 (NEA / RSICC)
1.1.19 (April 2, 2013)
NOTE: Serpent 1 is no longer actively maintained, and all users are strongly encouraged to switch to Serpent 2 instead.
Serpent 2 base version:
2.1.0 (available by request)
2.1.29 (Jun. 12, 2017)
Some recent and upcoming
November 6-9, 2017
7th International Serpent User Group Meeting in Gainsville, FL, USA.
May 19, 2017
Ville Valtavirta defended his Doctoral Thesis:
Development and applications of multi-physics capabilities in a continuous energy Monte Carlo neutron transport code at Aalto University.
October 10-14, 2016
Serpent workshop at the
26th Symposium of AER on VVER Reactor Physics and Reactor Safety in Helsinki, Finland.
September 26-29, 2016
6th International Serpent User Group Meeting in Milan, Italy.
May 1, 2016
Serpent multi-physics workshop at the
PHYSOR 2016 conference in Sun Valley, Idaho, May 1-5, 2016. Presentations available for
December 7, 2015
Presentation on the past, present and future challenges of developing the Serpent code in an ANS Seminar at MIT
October 21, 2015
Serpent workshop at the
7th International Conference on Modeling and Simulation in Nuclear Science and Engineering in Ottawa, ON, Canada
October 13-16, 2015
5th International Serpent User Group meeting in Knoxville, TN, USA
June 11-12, 2015
Serpent and fusion neutronics workshop at the University of Cambridge, UK
May 8, 2015
Tuomas Viitanen defended his Doctoral Thesis:
Development of a stochastic temperature treatment technique for Monte Carlo neutron tracking at Aalto University.
February 26-27, 2015
Serpent and multi-physics workshop at LPSC - Grenoble, France
September 28 - October 3, 2014
Serpent workshop at the
PHYSOR-2014 conference in Kyoto, Japan
September 17-19, 2014
4th International Serpent User Group meeting in Cambridge, UK
November 6-8, 2013
The Third International Serpent User Group Meeting in Berkeley, California, USA,
organized by the University of California, Berkeley.
October 27-31, 2013
Serpent contribution in a Monte Carlo codes invited session and several Serpent-related presentations at the Joint International Conference on Supercomputing in Nuclear Applications + Monte Carlo 2013 (SNA+MC 2013),
May 24, 2013
Maria Pusa defended her Doctoral Thesis on
Numerical methods for nuclear fuel burnup calculations at Aalto University.
September 19-21, 2012
The Second International Serpent User Group Meeting in Madrid,
Spain, organized by the Universidad Politécnica de Madrid
April 30 - May 2, 2012
Serpent workshop at UC Berkeley, USA
April 15-20, 2012
Several Serpent-related papers at the
PHYSOR-2012 conference in Knoxville, TN, USA
January 31, 2012
Beta-testing phase of Serpent 2 started
September 15-16, 2011
2011 Serpent International User Group Meeting, Dresden,
Germany (also see the
topic at the discussion forum and the meeting
February 7-8, 2011
Serpent presentations at the Workshop on Recent
Developments and Advanced Applications in the Monte
Carlo Method, UNIST, Ulsan, Korea
October 4, 2010
Presentation on Serpent development in an
ANS Seminar at MIT
Serpent 1.1.7 available at RSICC
(Code Number C00757)
January 15, 2010
Serpent cross section libraries released as a separate NEA package
January 6, 2010
NEA Base version upgraded to 1.1.7
October 13, 2009
M.Sc. Thesis: "Implementing a
Doppler-Preprocessor of Cross Sections in Reactor
Physics Code Serpent" completed at Helsinki
University of Technology
May 26, 2009
Serpent 1.1.0 available at the OECD / NEA Data
April 8, 2009
Serpent 1.1.0 submitted
to the OECD / NEA Data Bank for public distribution