Serpent is a multi-purpose three-dimensional continuous-energy neutron and photon transport code, developed at VTT Technical Research Centre of Finland since 2004. The code is distributed with different license options for non-commercial research and educational use, and for commercial work. The distribution is handled by VTT and two data centers: the OECD/NEA Data Bank and the Radiation Safety Information Computational Center (RSICC) in the US. See the users sub-page for more information on Serpent distribution.
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.
It should be noted, however, that this review article is largely outdated, and does not cover many of the features and capabilities available in the current version.
More publications are listed on a separate sub-page.
Support for users is provided at the
Serpent Discussion Forum, and the
acts as an on-line user manual.
The continuous-energy Monte Carlo method can be used for a wide range of particle transport
applications. The physics model in Serpent covers neutron, photon and coupled
Serpent was originally developed as a reactor physics code, but the
scope has been considerably broadened over the years.
The most common applications for Serpent are introduced in the following, together with the
associated key features and capabilities.
One of the drawbacks of the Monte Carlo method is its high computational cost, which
emphasizes the significance of parallel computing. Serpent features a hybrid
MPI / OpenMP approach, which operates at CPU core and clusted node level. Modern
multi-core workstations are sufficient for most applications, but large
(full-core) burnup calculation problems, dynamic simulations and coupled multi-physics
calculations may require a large computer cluster to reach an acceptable overall running time.
Serpent has been used for the modeling of different types of
nuclear fission reactors since the beginning of the project.
The standard geometry model relies on a universe-based constructive solid geometry (CSG) type,
which is sufficient for most reactor types based on a regular geometry. Additional geometry options
include an explicit particle / pebble fuel model for high-temperature gas-cooled reactors, and a CAD-based geometry type for complicated irregular structures. The Monte Carlo method
is inherently three-dimensional, and scalable to an arbitrary level of spatial detail.
Neutron interaction physics in Serpent is based on classical collision kinematics and ENDF reaction laws.
Cross sections are read from ACE format data libraries. The format was originally developed for the MCNP code
from Los Alamos National Laboratory, and is also used by other Monte Carlo codes, such as OpenMC and Geant4.
The continuous-energy interaction data is produced from
evaluated nuclear data files without major approximations. This also means that the best available knowledge
on neutron interactions can be used in the simulations as-is. Monte Carlo codes can be used with
any reactor technology without application-specific limitations. ACE format cross section libraries
are pre-processed to a specific temperature. The temperatures can be further adjusted using
a built-in Doppler broadening routine.
Serpent features built-in burnup calculation capability for tracking the nuclide concentrations subject
to neutron interactions and radioactive decay. The methodology is applicable to nuclear fuel and
activated materials. Depletion zone division and the formation of transmutation and decay paths
is accomplished automatically, with minimal input from the user. Serpent uses the Chebyshev
Rational Approximation method for the solution of the Bateman depletion equations and provides
various time integration methods to perform the iterations between the neutronics and depletion solution.
To reduce the memory demand in burnup calculations, Serpent provides different optimization modes for small-
and large-scale systems. Features used to speed-up the transport simulation can be switched off to improve memory
efficiency. The standard methodology is
applicable up to SMR-scale full-core burnup calculations. A collision-based domain decomposition scheme enables
running burnup calculations in traditional large LWRs, albeit at high computational cost.
Standard detectors (tallies) in Serpent enable calculating flux, power and reaction rate distributions in
geometry cells and materials, as well as regular structures, such as lattices and super-imposed meshes.
In addition to the standard (space-discretized) volume- and surface-integrated detectors, Serpent provides a methodology to
reconstruct spatial distributions into functional form. Such an approach relies on the
so-called functional expansion tallies (FET), based on orthonormal polynomial bases. FET's methodology
endows Monte Carlo estimates with a deterministic/hybrid capability.
Reactor modeling covers a wide range of applications with different methodologies. Other relevant
capabilities within this scope include a dynamic simulation mode with delayed neutron physics,
methods for sensitivity and uncertainty analyses and advanced heat deposition modes with
gamma heating. Coupling to other physics solvers is addressed separately below.
Group constant generation
One of the original intended uses for Serpent was group constant generation for deterministic fuel cycle simulator and
transient analyses codes. Serpent can produce all input parameters needed for nodal diffusion calculations,
including homogenized macroscopic reaction cross sections, isotopic microscopic cross sections,
diffusion coefficients, assembly discontinuity factors, poison cross
sections and point-kinetics and delayed neutron parameters. The calculation of most parameters relies on standard Monte Carlo
tallies. For diffusion coefficients Serpent uses the cumulative migration method (CMM), and effective delayed neutron
fractions are calculated using the iterated fission probability method (IFP). Group constant generation can be performed
as infinite or critical spectrum calculation.
Group constant generation requires repeating the calculation for a large number of burnup points and variations in the
thermal hydraulic and reactivity conditions. Managing the calculation chain involving thousands of runs
becomes a formidable task, which can be considerably simplified using built-in features. Serpent provides a branch
capability to invoke small variations in the operating conditions. The casematrix feature enables organizing the
history and restart calculations in an optimal way to be run in computer clusters. With sufficient computational
resources the Monte Carlo method can be considered a viable option for group constant generation.
The methodology used for group constant generation has been designed to be compatible with VTT's Ants nodal
neutronics code, used as part of the Kraken computational framework (see below). Serpent has also been widely used
for producing input data for other nodal codes, such as DYN3D and PARCS.
Coupled multi-physics applications and the Kraken framework
Modeling of an operating nuclear reactor requires solving a coupled problem between neutronics, thermal hydraulics and fuel
behavior. One of the challenges of coupling a Monte Carlo neutronics solver to such multi-physics calculation chain
is handling the two-way data transfer between the solvers. The approach in Serpent is to completely separate the
thermal hydraulic state-point distributions from the user-defined geometry model.
Information on material temperatures and densities
is brought into the transport simulation via a universal multi-physics interface, which is essentially a three-dimensional
structure super-imposed over the underlying geometry.
For the code user this means that no modifications are needed in the geometry model when Serpent is coupled to
another solver. Internally the distributions are handled using an efficient rejection sampling based algorithm,
which allows both discretized and continuous changes in temperature and density. Temperature modifications are performed using
an on-the-fly Doppler-broadening routine, so there is no need to store cross sections at multiple
temperatures. The multi-physics interface supports several distribution types, including an unstructured OpenFOAM
mesh, and a special interface type for fuel performance code coupling.
Since 2017 Serpent has been developed as part of VTT's new Kraken computational core physics framework, where
the code can be used either for producing group constants for the Ants nodal neutronics code
(reduced-order approach), or directly coupled to the other solvers (high-fidelity approach).
Radiation transport and fusion applications
Even though Serpent was originally developed as a reactor physics code,
the implementation of new methods and capabilities has enabled applications
beyond the scope of fission reactors. The CAD-based geometry type is a practical option for
the modeling of complicated and irregular structures. Such geometries are commonly encountered
in fusion and radiation transport applications. The same neutron
and photon physics routines
developed for fission applications are similarly
valid, regardless of the source from which the particles were emitted.
One of the major advantages of Serpent in radiation transport applications is that the
built-in burnup calculation capability provides the means to generate source terms
comprised of spent nuclear fuel or neutron-activated materials.
Practical examples include radiation shielding calculations carried out for
a spent nuclear fuel storage cask, or shut-down dose rate calculations for
a fusion reactor. The source term is formed automatically using the
material compositions obtained from a burnup/activation calculation, combined with
photon emission spectra read from ENDF format decay data files. No additional processing
is required from the user.
Radiation shielding calculations often require extensive use of variance reduction,
in order to get sufficient statistics in the heavily shielded parts of the geometry.
The variance reduction scheme in Serpent is based on the conventional
weight-windows method, with weight-window boundaries defined by a super imposed
importance mesh. The importances can be read from MCNP WWINP format files, or
generated using a built-in response matrix method based solver. The built-in solver
supports calculating importances with respect to one or multiple responses, and
and global variance reduction option to populate the entire geometry. Mesh options include
rectangular and cylindrical types and self-adapted mesh that can be automatically
refined around heavily shielded structures.
Verification and validation
Throughout its development Serpent has been verified
by comparison to MCNP, in which the neutron physics model is based on the same ENDF reaction laws. The differences are generally
within the range of statistical accuracy
when the same ACE libraries are used in the calculations.
Differences to other Monte Carlo codes (Keno, OpenMC, Tripoli, etc.) are small,
but statistically significant discrepancies can be observed
in some cases. The photon physics model in Serpent differs to some extent from that in MCNP. Similar level of agreement
cannot be expected as in neutron transport simulations, but the differences should remain small.
Verification of burnup calculations becomes more complicated, due to the lack of a perfect reference code. The same applies to multi-physics simulations, in which
Serpent is coupled to thermal hydraulics and/or fuel performance codes.
In addition to discrepancies in the transport physics, there are additional factors related to data used in the calculations,
coupling algorithms, methods used in external solvers, and so on. The largest uncertainties in burnup calculations often
originate from the fundamental nuclear data, and approximations applied in the formulation of the transmutation chains.
Considerable effort from both Serpent developers and the user community has been devoted to the verification and
validation of Serpent by computational benchmarks. The calculation cases cover a wide range of applications, and some
benchmarks provide experimental data for comparison. Related publications and reports are collected in
October 4, 2022
Website for the
11th International Serpent UGM set up.
August 2, 2022
The 11th Serpent UGM announced (from August 29 to September 1).
May 23, 2022
New base version 2.2.0 released to the OECD/NEA Data Bank, contents of the website completely revised.
February 24, 2021
New code version released.
Serpent Discussion Forum
2.2.0 (see distribution)
2.2.0 (May 5, 2022)
Some recent and upcoming
August 29 - September 1, 2022
11th Serpent User Group meeting. in Garching, Germany.
July 1, 2022
VTT and Studsvik Scandpower announce collaboration on the development and distribution of an NQA-1-2015 certified version of Serpent as part of SSP's software family (see
press release for more information).
May 23, 2022
Serpent 2.2 available at the OECD / NEA Data
May 15-20, 2022
Kraken workshop at the
PHYSOR 2022 conference in Pittsburgh, PA, USA, May 15-20, 2022.
October 27-30, 2020
10th International Serpent User Group Meeting organized as an on-line event by the Technical University of Munich.
October 14-19, 2019
9th International Serpent User Group Meeting in Atlanta, GA, USA.
May 29 - June 1, 2018
8th International Serpent User Group Meeting in Espoo, Finland.
April 22-26, 2018
Serpent workshop at the
PHYSOR 2018 conference in Cancún, México, April, 22-26, 2016.
November 6-9, 2017
7th International Serpent User Group Meetingin Gainesville, 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.
September 26-29, 2016
6th International Serpent User Group Meeting in Milan, Italy.
October 13-16, 2015
5th International Serpent User Group meeting in Knoxville, TN, USA
May 8, 2015
Tuomas Viitanen defended his Doctoral Thesis:
Development of a stochastic temperature treatment technique for Monte Carlo neutron tracking at Aalto University.
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.
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
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
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
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