Overview
Serpent is
a three-dimensional continuous-energy Monte Carlo reactor physics burnup
calculation code, developed at VTT Technical Research Centre
of Finland since 2004. The code is specialized in two-dimensional
lattice physics calculations, but the geometry description allows the modeling of
complicated three-dimensional geometries as well. The suggested
applications of Serpent include:
| • |
Generation of homogenized
multi-group constants for deterministic reactor simulator
calculations |
| • |
Fuel cycle studies
involving detailed assembly-level burnup calculations |
| • |
Validation of
deterministic lattice transport codes |
| • |
Full-core reactor physics and burnup calculations
for research reactors |
| • |
Educational purposes and
demonstration of reactor physics phenomena |
The main
features of the code, including the major limitations, are
introduced below. This website covers the capabilities of publicly distributed Serpent 1. Most of the on-going development
work is focused on
Serpent 2,
which is currently in a beta-testing phase, with public release
scheduled for 2013-2014.
Geometry and neutron tracking
Serpent uses
a universe-based CSG geometry model (similar to MCNP and Keno-VI), which allows the
description of practically any two- or three-dimensional
fuel or reactor configuration. The geometry consists of
material cells, defined by elementary and derived 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 geometries and circular cluster arrays for CANDU fuels.
The random dispersion of microscopic fuel particles in high-temperature gas-cooled reactor fuels and pebble distributions
in pebble-bed type HTGR cores can be modeled using geometry types specifically designed for the task (see below).
Woodcock delta-tracking method
An analog Monte Carlo game and the k-eigenvalue
criticality source method are used for simulating a self-sustaining chain
reaction, and an external source mode is available for sub-critical and
non-multiplying systems.
Neutron
transport is based on a combination of conventional
surface-to-surface ray-tracing and the Woodcock
delta-tracking method
(Woodcock, 1965). The tracking routine has proven efficient and
well suited for geometries where the neutron mean-free-path 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 delta-tracking in the presence of localized
heavy absorbers (Leppänen,
2010b).
The main
drawback of delta-tracking is that the track-length estimate
of neutron flux is not available and reaction rates have to
be calculated using the potentially less-efficient 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. For this reason
Serpent 1 is not particularly well suited for shielding and detector calculations.
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 fuel particles (TRISO),
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
(Suikkanen, 2010).
The computational overhead from handling the unstructured configuration is typically
20-50% 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.
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
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
(Becker, 2009).
ACE format
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
Serpent installation package. 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. The data format is shared with the
widely-used Los Alamos MCNP code and any continuous-energy MCNP data library
can be used with Serpent as well.
Unionized energy grid format
Continuous-energy cross sections
in the library files are reconstructed on a unionized
energy grid, used for all reaction modes. 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. If all original grid
points are preserved, there is no loss of data or accuracy
in the process. 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, the value can be read from a pre-generated table, which is another
effective way of improving the performance of the tracking routine.
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 problem the code
uses two methods for reducing the memory demand
(Leppänen, 2009b). Excessive memory usage can still be considered one of the main
limitations for the Serpent code, and it was one of the reasons for starting the development of
Serpent 2
in September 2010.
Built-in Doppler broadening
routine
A built-in Doppler broadening 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 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 a major
increase in the overall calculation time
(Viitanen, 2009).
Burnup calculation
The burnup capability in Serpent is entirely based on built-in calculation routines,
without any external coupling. The number of depletion zones
is not restricted, although memory usage may become a
limiting factor when the number of burnable materials is large.
Fission
products and actinide daughter nuclides are selected for the
calculation without additional user effort and fuel rods and
burnable absorber pins can be divided into annular
sub-regions to account for the rim-effects. 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 fuel pin lattices, or the values can be defined by the user.
Predictor-corrector calculation is optional and used by
default for each burnup step.
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 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 between 200 and 280.
Energy-dependent fission yields
are available for all main actinides (31 nuclides in ENDF/B-VII data).
Integral
one-group transmutation cross sections are calculated either
within the transport cycle, or by collapsing the continuous-energy 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
3-4, 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, 2008) 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). The two methods have shown to yield
consistent results, both when used with Serpent
(Leppänen, 2010a)
and in separate methodological studies
(Isotalo, 2010).
Fission product poison Xe-135 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 to several 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.
In addition
to the neutronics simulation, parallelization in the burnup calculation mode divides also the
preprocessing and depletion routines into several tasks.
Each task handles a different material
and the speed-up may
become significant if the number of depletion zones is
large. The extensive memory demand due to unionized energy grid approach
may become a limiting factor in
parallel burnup calculation, if several MPI tasks are sharing
the same memory space.
Results and output
Serpent
can be used for producing homogenized multi-group constants
for deterministic reactor simulator calculations. The
standard output includes:
| • |
Effective and infinite
multiplication factors calculated using different estimators |
| • |
Homogenized few-group cross sections |
| • |
Group-transfer
probabilities and scattering matrices |
| • |
Diffusion coefficients
calculated using two fundamentally different methods |
| • |
Pn
scattering cross sections up to order 5 |
| • |
Assembly discontinuity
factors for boundary surfaces and corners in square and
hexagonal fuel lattices |
| • |
Assembly pin-power
distributions |
| • |
Point reactor kinetics
parameters |
| • |
Physical
and effective delayed neutron fractions and decay
constants in 6 or 8 precursor groups (depending on data) |
| • |
Normalized
flux, power and reaction rates integrated over geometry |
| • |
Critical spectrum corrected group
constants based on the B1 approximation |
All result estimates are accompanied by the associated relative
statistical errors.
Homogenization can be carried out for multiple universes
simultaneously, which allows the production of group
constant data for several fuel assemblies or zones within a single
run.
The effective
delayed neutron parameters are calculated using a forward
Monte Carlo method
developed at the NRG
(Meulekamp, 2006). The
few-energy group structure for group constant generation is arbitrary and defined by the
user. The code also calculates fission source
entropies for convergence studies. The total entropy is
divided into x-, y- and z-components to monitor source convergence
separately in each direction.
The critical spectrum calculation is based on a semi-deterministic approach,
in which homogenized multi-group cross sections from the Monte
Carlo simulation are used to form B1
equations, which are then solved outside the main transport
loop. The solution yields a leakage-corrected flux spectrum, which is
used to re-homogenize the group constants. The procedure is very similar to the methods used in
various deterministic codes, and comparisons to HELIOS calculations
(Fridman, 2011;
2012) have shown good results.
User-defined detectors (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
three-dimensional super-imposed mesh. The number and
structure of detector energy bins is unrestricted. Various
response functions are available for the calculation,
including material-wise macroscopic and isotopic microscopic cross
sections and ACE format dosimetry data.
Output for
burnup calculation consists of isotopic compositions,
transmutation cross sections, activities, spontaneous fission rates and decay heat
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.
All numerical
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 in thermal systems (see the
gallery for examples).
Results and validity
Serpent has
been extensively validated for
assembly-level group constant calculations.
Effective multiplication factors and homogenized few-group
reaction cross sections are
within the statistical accuracy from reference MCNP results,
when the same ACE libraries are used in the calculations.
Validation against MCNP has also been carried out with equally good results for
individual nuclides, by comparing 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
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 the transport simulation, there are additional uncertainties coming from decay and fission yield data, methods used for solving
the Bateman equations, number of nuclide concentrations tracked for each burnable material, depletion algorithms used to
iterate between the two solutions, and so on.
The results are generally good compared to other burnup calculation codes, but there are some significant discrepancies as well.
Comparisons to CASMO-4E (Leppänen,
2009a), for example, show a consistent few-percent over-prediction in the build-up of Pu-239 and noticeable differences in the concentrations of the
main fission product poisons, Xe-135 and Sm-149. The differences most like originate from several factors relating to the methods used by the
two codes, but the root cause is yet to be discovered.
Serpent 1 lacks any statistical tests performed on the calculated results. The standard assumption is that Monte Carlo result estimates, which are essentially
random variables, follow the normal distribution according to the central limit theorem. If this is not the case, the confidence intervals of the normal
distribution do not apply, which may lead to the over-estimation of statistical accuracy. Some analysis based on a series of independent test calculations
have confirmed the statistics for the main integral parameters (multiplication factors, homogenized group constants, etc.), but there is no guarantee
that the same conclusion applies to all results and calculation cases.
Performance
Serpent 1
is optimized for performance in infinite lattice
calculations. The typical single-CPU running time on a 2.6 GHz AMD
Opteron PC varies from 5 to 20 minutes, when 3 million
neutron histories are simulated.
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 100-250 nuclides.
The situation becomes more
complicated in burnup calculation. If the number of
depletion zones is large, a significant fraction of CPU time
is contributed to data processing between the burnup steps.
An LWR assembly burnup
calculation involving 65 depleted material regions, 40 burnup steps with predictor-corrector
calculation and a total of 3 million active neutron
histories per Monte Carlo simulation can be completed in
less than 12 hours on a standard single-processor PC workstation. Of this time, about 60% is
contributed to the Monte Carlo transport simulation and the remaining part to data processing. The fraction of CPU time spent for solving
the depletion equations using the CRAM matrix exponential method is practically negligible.
Parallelization using MPI is an efficient way of reducing the overall calculation time, and the speed-up factor increases
almost linearly as a function parallel tasks. It should be noted, however, that the excessive memory usage due to the
unionized energy grid approach, together with distributed-memory parallelization using MPI seriously limits the capability to run burnup calculations
in parallel mode. This limitation has been overcome in
Serpent 2,
in which the parallelization is based on hybrid OpenMP / MPI
techniques.
|
|
|
Updates
on website |
|
May 14, 2013 |
|
• |
New events, new publications. |
|
April 2, 2013 |
|
• |
New code version, new events, new publications. |
|
February 14, 2013 |
|
• |
New publications. Directory file
conversion script updated.
See also related post
at the Serpent discussion forum. |
|
December 12, 2012 |
|
• |
New publications. |

Serpent Discussion Forum

Serpent User's
Manual
(March 6, 2013)
Base version:
Serpent 1.1.7
Current update:
1.1.19 (April 2,
2013)
Important
updates:
|
Update 1.1.11 (May 19, 2010) |
| • |
External source
simulation mode |
|
Update 1.1.7 (November 6, 2009) |
| • |
New base version,
needs to be installed in order to install later
updates |
|
Recent and upcoming
events |
May 24, 2013
Maria Pusa is defending her Doctoral Thesis on
Numerical methods for nuclear fuel burnup calculations at Aalto University.
|
May 5-9, 2013
Several Serpent-related presentations at the
International Conference on Mathematics and Computational Methods Applied to Nuclear Science and Engineering (M&C 2013),
Sun Valley, ID, USA
|
November 11-15, 2012
Presentation: "Multi-physics Coupling Scheme in the Serpent 2 Monte Carlo Code
" at
2012 ANS Winter Meeting,
San Diego, CA, USA
|
September 19-21, 2012
The Second International Serpent User Group Meeting in Madrid,
Spain, organized by the Universidad Politécnica de Madrid
(see meeting
website) |
August 16, 2012
Serpent Progress Report 2011 published |
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
website) |
April 12-13, 2011
Serpent presentation at the XV Meeting on Reactor
Physics Calculations in the Nordic Countries,
Helsinki, Finland |
April 1, 2011
Serpent Progress Report 2010 published |
February 7-8, 2011
Serpent presentations at the Workshop on Recent
Developments and Advanced Applications in the Monte
Carlo Method, UNIST, Ulsan, Korea |
October 17-21, 2010
Presentation: "Use of the Serpent Monte Carlo Reactor Physics Code for Full-Core Calculations" at the
SNA + MC 2010 Conference,
Tokyo, Japan |
October 4, 2010
Presentation on Serpent development in an
ANS Seminar at MIT |
September 20-24, 2010
Serpent presentation at the
20th Symposium of AER on VVER Physics and Safety,
Espoo, Finland |
July 12-18, 2010
Presentation: "HTGR Modeling Capabilities in the Serpent Monte Carlo Code" at the
IYNC-2010 Conference,
Cape Town, South Africa |
May 9, 2010
Presentation: "Reactor Physics Calculations with PSG2 / Serpent" at the Monte Carlo Workshop in
PHYSOR 2010,
Pittsburgh, PA, USA |
May, 2010
Article: "Performance of Woodcock Delta-Tracking in Lattice Physics Applications Using the Serpent Monte Carlo Reactor Physics Burnup Calculation Code." published
in Annals of Nuclear Energy
(Leppänen, 2010b) |
April 26-30, 2010
Poster: "New Data Processing Features in the Serpent Monte Carlo Code" at
ND2010 Conference
in Jeju, Korea (Viitanen, 2010) |
March, 2010
Serpent 1.1.7 available at RSICC
(Code Number C00757)
|
February 13, 2010
Serpent progress report 2009 completed |
January 15, 2010
Serpent cross section libraries released as a separate NEA package
(Package-ID
NEA-1854)
|
January 6, 2010
NEA Base version upgraded to 1.1.7
(Package-ID
NEA-1840)
|
January, 2010
Article: "Computing the Matrix Exponential
in Burnup Calculations" published in Nuclear
Science and Engineering
(Pusa, 2010) |
November 15-19, 2009
Presentation: "HTGR Reactor Physics and Burnup
Calculations Using the Serpent Monte Carlo Code " at
ANS Winter Meeting 2009,
Washington, DC, USA
(Leppänen, 2009d) |
October 13, 2009
M.Sc. Thesis: "Implementing a
Doppler-Preprocessor of Cross Sections in Reactor
Physics Code Serpent" completed at Helsinki
University of Technology
(Viitanen, 2009) |
September 29, 2009
Presentation: "On the use of the continuous-energy Monte Carlo method for lattice physics applications" at
INAC 2009 Conference in Rio de Janeiro, Brazil (Leppänen, 2009c) |
July, 2009
Article: "Two practical methods for unionized
energy grid construction in continuous-energy Monte
Carlo neutron transport calculation" published
in Annals of Nuclear Energy
(Leppänen, 2009b) |
May 26, 2009
Serpent 1.1.0 available at the OECD / NEA Data
Bank (Package-ID
NEA-1840)
|
May 5, 2009
Presentation: "Burnup
Calculation Capability in the PSG2 / Serpent Monte
Carlo Reactor Physics Code" at
M&C 2009 Conference in Saratoga Springs, NY (Leppänen, 2009a) |
April 8, 2009
Serpent 1.1.0 submitted
to the OECD / NEA Data Bank for public distribution |
|