Overview
Serpent is
a threedimensional continuousenergy Monte Carlo reactor physics burnup
calculation code, developed at VTT Technical Research Centre
of Finland since 2004. The publicly available Serpent 1 has been distributed by the OECD/NEA Data Bank and RSICC since 2009, and next version of the code, Serpent 2,
is currently in a betatesting phase and available to registered users by request.
The suggested
applications of Serpent include:
• 
Spatial homogenization and group constant generation for deterministic reactor simulator
calculations 
• 
Fuel cycle studies
involving detailed assemblylevel burnup calculations 
• 
Validation of
deterministic lattice transport codes 
• 
Fullcore modeling of research reactors, SMR's, and other closely coupled systems

• 
Coupled multiphysics applications (Serpent 2) 
• 
Educational purposes and
demonstration of reactor physics phenomena 
The main
features of the code, including the major limitations, are
introduced below. For ongoing and future work, see the separate section on Serpent 2.
NOTE: This website is currently not uptodate on some of the more recently implemented features of Serpent 2, in particular related to photon transport and coupled multiphysics simulations. For more information see the
Serpent Discussion Forum and the
Serpent Wiki
Geometry and neutron tracking
Similar to other Monte Carlo codes, such as MCNP and KenoVI,
Serpent uses
a universebased combinatorial solid geometry (CSG) model, which allows the
description of practically any two or threedimensional
fuel or reactor configuration. The geometry consists of
material cells, defined by elementary quadratic and derived macrobody surface
types.
The code also provides some additional geometry
features specifically for fuel design. These features
include simplified definition of cylindrical fuel pins and
spherical fuel particles, square and hexagonal lattices
for LWR and fast reactor geometries, and circular cluster arrays for CANDU fuels.
The random dispersion of microscopic fuel particles in hightemperature gascooled reactor fuels and pebble distributions
in pebblebed type HTGR cores can be modeled using geometry types specifically designed for the task (see below).
Woodcock deltatracking method
The Monte Carlo simulation can be run in keigenvalue
criticality source or external source mode.
Neutron
transport is based on a combination of conventional
surfacetosurface raytracing and the Woodcock
deltatracking method
(Woodcock, 1965). The tracking routine has proven efficient and
well suited for geometries where the neutron meanfreepath is long compared to the dimensions,
which is typically the case in fuel assemblies, and especially in HTGR particle fuels. The combination of two
tracking methods overcomes the efficiency problems normally
encountered with deltatracking in the presence of localized
heavy absorbers (Leppänen,
2010b).
The main
drawback of deltatracking is that the tracklength estimate
of neutron flux is not available and reaction rates have to
be calculated using the potentially lessefficient collision
estimator. This is usually not a problem in reactor calculations
when reaction rates are scored in regions of high collision
density. However, the efficiency of the collision estimator
becomes poor in small or optically thin volumes located far
or isolated from the active source. Methods for obtaining better statistics for detector calculations are being developed for Serpent 2, but in
general the code is not the best choice for shielding applications.
Explicit particle and pebblebed fuel model for HTGR calculations
Hightemperature gascooled reactor geometries differ
significantly from conventional light water reactors. The fissile material
is encapsulated inside microscopic tristructuralisotropic (TRISO) fuel particles,
randomly dispersed in fuel compacts or pebbles made of
graphite. In pebblebed 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 doubleheterogeneous
reactor configurations consisting of over 60 million randomly positioned units
(Suikkanen, 2010).
The computational overhead from handling the unstructured configuration is typically
2050% compared to a similar regularlattice model.
The routine also enables the calculation of pebblewise
power distributions over the reactor core without defining additional tallies.
To simplify
the construction of HTGR geometries, Serpent provides a separate
command line routine that generates random particle
distribution files for the explicit geometry model.
Interaction physics
Serpent reads
continuousenergy 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 freegas scattering kernel near resonances
is also available, based on the DBRC Dopplerbroadening rejection correction method
(Becker, 2009).
ACE format
cross section libraries based on JEF2.2, JEFF3.1, JEFF3.1.1, ENDF/BVI.8
and ENDFB/BVII evaluated data files are included in the
installation package of Serpent 1. Ineraction data is available for 432
nuclides at 6 temperatures between 300 and 1800K. Thermal
boundatom scattering data is included for light and heavy
water and graphite. Since the data format is shared with MCNP, any continuousenergy ACE format data library generated for MCNP
can be used with Serpent as well.
Unionized energy grid format
Continuousenergy cross sections
in 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 speedup in
calculation, as the number of CPU time consuming grid search
iterations is reduced to minimum.
Macroscopic cross sections for each material are pregenerated
before the transport simulation. Instead of calculating the cross sections by summing over
the constituent nuclides during tracking, the values are read from pregenerated tables, which is another
effective way of improving the performance.
The drawback
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 over 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).
Dopplerbroadening
of cross sections
A builtin Dopplerbroadening preprocessor routine allows
the conversion of ACE format cross sections into a higher
temperature. This capability results in a more accurate description of the
interaction physics in temperaturesensitive 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 a major
increase in the overall calculation time
(Viitanen, 2009). In addition to the preprocessor routine, Serpent 2 has the option to adjust nuclide temperatures
onthefly (see description of ongoing work in Serpent 2)
. Both methodologies are
currently limited to continuousenergy cross sections, and do not cover unresolved resonance probability tables or S(α,β) scattering data.
Burnup calculation
The burnup capability in Serpent is entirely based on builtin calculation routines,
without any external coupling. The number of depletion zones
is not restricted, although memory usage becomes a
limiting factor for Serpent 1 when the number of burnable materials is large.
Fission
products and actinide daughter nuclides are selected for the
calculation without additional user effort and burnable materials can be subdivided into depletion zones automatically.
The irradiation
history is defined in units of time or burnup. Reaction
rates are normalized to total power, specific power density, flux or
fission rate and the normalization can be changed by
dividing the
irradiation cycle into a number of separate depletion intervals. Volumes and
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
entered manually.
Predictorcorrector calculation is optional and used by
default for each burnup step. In addition to the conventional predictorcorrector method based on linear interpolation, Serpent 2 offers various higherorder
methods and substep solutions for burnup calculation
(Isotalo, 2011b;
2011c;
2013b).
Radioactive
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 metastable 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.
Energydependent fission yields
are available for all main actinides (31 nuclides in ENDF/BVII data).
Integral
onegroup transmutation cross sections are calculated either
within the transport cycle, or by collapsing the continuousenergy reaction cross
sections after the cycle using a flux
spectrum collected on the unionized energy grid. The
spectrum collapse method speeds up the calculation by a factor of
34, and due to the high energy resolution of the flux
spectrum, the errors in the results are practically
negligible.
Similar methodology has been successfully
used with coupled Monte Carlo burnup calculation codes
(Haeck, 2007;
Fridman, 2008a;
2008b)
before
it was implemented in Serpent.
Serpent has
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
(Pusa, 2010;
2011;
2012;.
2013a;.
2013b;.
2013c).
The two methods have shown to yield
consistent results, both when used with Serpent
(Leppänen, 2009a)
and in separate methodological studies
(Isotalo, 2011a).
Fission product poison Xe135 can be handled separately from the other nuclides,
and iterated to its 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.
Parallelization
Serpent 1 uses
the Message Passing Interface (MPI) for parallel
calculation. Parallelization of the transport routine is implemented by dividing the
neutron histories between the parallel tasks and combining the results
after the simulation has been completed. This approach is simple and
efficient, but it lacks error tolerance and dynamic load sharing. The
overall calculation time is dependent on the slowest task,
which is why the method is best applied in a symmetric
parallel environment.
Parallelization in Serpent 2 is based on a hybrid OpenMP / MPI approach. The main advantage of threadbased OpenMP is that all CPU cores within the computational node are accessing the same
memory space, which makes it possible to use all available cores in the calculation without running into problems with excessive memory usage.
In addition
to the neutronics 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 work is still in progress, and the group constant generation capability in Serpent 2 currently covers:
• 
Homogenized fewgroup reaction cross sections 
• 
Scattering and scattering production cross sections and matrices up to Legendre order 7 
• 
Diffusion coefficients 
• 
Assembly discontinuity
factors (ADF's), surface and corner fluxes and currents for square and
hexagonal fuel lattices 
• 
Groupwise peaking factors for pinpower reconstruction 
• 
Poison cross sections for Xe135 and Sm149 and their precursors 
Homogenization can be performed in critical spectrum, or using a leakage correction based on the deterministic solution of B_{1} equations
(Fridman, 2011;
2012). Work is currently under way for the calculation of adjointweighted time constants for transient simulator codes, and
ADF's in reflector regions and colorset configurations, which requires the explicit solution of local homogeneous flux, as the net current over the
homogenized region is not reduced to zero.
Userdefined tallies can be set up for
calculating various integral reaction rates. The spatial
integration domain can be defined by a combination of cells,
universes, lattices and materials, or using a
threedimensional superimposed mesh. The number and
structure of detector energy bins is unrestricted. Various
response functions are available for the calculation,
including materialwise macroscopic and isotopic microscopic cross
sections and ACE format dosimetry data.
Serpent 2 calculates adjointweighted 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 in MCNP5
(Kiedrowski, 2011).
Output for
burnup calculation consists of isotopic compositions,
activities, spontaneous fission rates and decay heat
data. The results are given both as materialwise and total
values. Group constants and all the other output parameters
are calculated and printed for each burnup step.
All numerical
output is written in Matlab mformat files to simplify
the postprocessing 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).
Validation
Each Serpent update is validated by comparison to MCNP by running a
standard set of assembly calculation problems.
Effective multiplication factors and homogenized fewgroup
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 (KenoVI) are small,
but statistically significant discrepancies can be observed
in some cases. Differences to deterministic lattice codes
are generally
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 and fission yield data, methods used for solving
the Bateman equations, number of nuclide concentrations tracked for each burnable material, depletion algorithms, and so on.
The results are generally good compared to other burnup calculation codes, but there are some significant discrepancies as well.
Comparisons to CASMO4E (Leppänen, 2009a),
for example, show a consistent fewpercent overprediction in the buildup of Pu239 and noticeable differences in the concentrations of the
main fission product poisons, Xe135 and Sm149. The differences most like originate from several factors related to the data and methods used by the
two codes, but the root cause is yet to be discovered.
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. Another validation project, in which Serpentgenerated group constants are used for fuel cycle and transient simulator calculations by nodal diffusion ARES, HEXBU3D, TRAB3D and
HEXTRAN, developed at VTT and the Finnish Radiation and Nuclear Safety Authority (STUK), was recently started. The first study involved the SerpentARES code sequence for the calculation of a hot zeropower initial
core configuration of a commercial PWR (MIT BEAVRS Benchmark). The results showed good agreement compared to
experimental measurements and reference 3D Monte Carlo calculations (Leppänen, 2014b).
Performance
Serpent 1
is optimized for performance in infinite lattice
calculations. The typical singleCPU running time on a 2.6 GHz AMD
Opteron PC varies from 5 to 20 minutes when 3 million
neutron histories are simulated, although it should be noted that the performance depends on several factors.
Owing to the unionized energy grid approach, the running time is not
strongly dependent on the complexity of the material
compositions. Compared to fresh fuel calculations, the transport cycle usually
slows down by less
than a factor of 1.5 when modeling irradiated fuels consisting
of 100250 nuclides.
The main factor limiting the performance of Serpent 1 is that the parallelization is based on distributedmemory MPI, which means that
the memory demand is multiplied by the number of parallel tasks.
Serpent 2 currently runs slower with a single CPU, but the capability to run parallel calculation with OpenMP without limitations in memory demand
means that the code clearly outperforms Serpent 1 by making more efficient use of computational resources.
Studies on the parallel scalability of Serpent 2 are currently under way.


Updates
on website 
May 9, 2016 
• 
Presentations from Serpent Workshop at PHYSOR 2016 available for download 
• 
New code version, registration to the 6th International Serpent UGM open,
List of publications updated 
February 23, 2016 
• 
New code version, Serpent Wiki set up,
List of publications updated 
November 8, 2015 
• 
List of publications updated 
Serpent Discussion Forum
Serpent Wiki
Serpent 1 User's
Manual
(March 6, 2013)
Serpent 1 base version:
1.1.7 (NEA / RSICC)
Current update:
1.1.19 (April 2,
2013)
Serpent 2 base version:
2.1.0 (available by request)
Current update:
2.1.26 (Apr. 21, 2016)
Some recent and upcoming
events 
September 2629, 2016
The 6th International Serpent User Group Meeting in Milan, Italy.
Registration open.

May 1, 2016
Serpent multiphysics workshop at the
PHYSOR 2016 conference in Sun Valley, Idaho, May 15, 2016. Presentations available for
download. 
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 1316, 2015
5th International Serpent User Group meeting in Knoxville, TN, USA 
June 1112, 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 2627, 2015
Serpent and multiphysics workshop at LPSC  Grenoble, France

September 28  October 3, 2014
Serpent workshop at the
PHYSOR2014 conference in Kyoto, Japan 
September 1719, 2014
4th International Serpent User Group meeting in Cambridge, UK 
November 68, 2013
The Third International Serpent User Group Meeting in Berkeley, California, USA,
organized by the University of California, Berkeley.
(see meeting
website)

October 2731, 2013
Serpent contribution in a Monte Carlo codes invited session and several Serpentrelated presentations at the Joint International Conference on Supercomputing in Nuclear Applications + Monte Carlo 2013 (SNA+MC 2013),
Paris, France.

May 24, 2013
Maria Pusa defended her Doctoral Thesis on
Numerical methods for nuclear fuel burnup calculations at Aalto University.

September 1921, 2012
The Second International Serpent User Group Meeting in Madrid,
Spain, organized by the Universidad Politécnica de Madrid
(see meeting
website) 
April 30  May 2, 2012
Serpent workshop at UC Berkeley, USA 
April 1520, 2012
Several Serpentrelated papers at the
PHYSOR2012 conference in Knoxville, TN, USA 
January 31, 2012
Betatesting phase of Serpent 2 started 
September 1516, 2011
2011 Serpent International User Group Meeting, Dresden,
Germany (also see the
topic at the discussion forum and the meeting
website) 
February 78, 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 
March, 2010
Serpent 1.1.7 available at RSICC
(Code Number C00757)

January 15, 2010
Serpent cross section libraries released as a separate NEA package
(PackageID
NEA1854)

January 6, 2010
NEA Base version upgraded to 1.1.7
(PackageID
NEA1840)

October 13, 2009
M.Sc. Thesis: "Implementing a
DopplerPreprocessor of Cross Sections in Reactor
Physics Code Serpent" completed at Helsinki
University of Technology
(Viitanen, 2009) 
May 26, 2009
Serpent 1.1.0 available at the OECD / NEA Data
Bank (PackageID
NEA1840)

April 8, 2009
Serpent 1.1.0 submitted
to the OECD / NEA Data Bank for public distribution 
