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 universe-based 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.
Geometry and neutron tracking
Serpent uses
a universe-based 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 routines 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 geometry routine has proven efficient and
well suited for lattice calculations. 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 lattice 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 the
Serpent code is not particularly well suited for shielding and detector calculations.
Particle and pebble-bed fuel models 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 Serpent code has two
geometry models for this type of fuels. The first (implicit) model samples the
positions of fuel particles inside the dispersed media
during the transport simulation. The routine works by
preserving the particle dimensions and packing fractions
(Leppänen, 2007b).
The second
(explicit) model reads the positions of fuel particles or
pebbles from a separate input file. The particle/pebble
distribution is covered by a 3D mesh used by the search
algorithm in the geometry routine. The explicit model works
on several levels (particles inside a pebble and pebbles
inside the core) and it has been tested in double-heterogeneous geometries
consisting of more than 1,000,000 randomly positioned units. The routine
makes no approximations and increases the calculation time
only by 20-50% compared to a regular-lattice configuration.
The routine also enables the calculation of pebble-wise
power distributions, written in a separate output file.
To simplify
the construction of HTGR geometries, the code has 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 and ENDF reaction laws. Unresolved resonance cross sections
can be sampled from probability tables. The most recent version has the option to
apply Doppler-broadening rejection correction on the free-gas scattering kernel (see
Becker, 2009 for the theory behind DBRC).
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
The continuous-energy cross section
data is 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 time-consuming grid search
iterations is reduced to minimum. If all the original grid
points are preserved, there is no loss of data or accuracy
in the
process.
The drawback
of the approach is
that computer memory is wasted for storing redundant data
points. The grid size may become prohibitively large in burnup
calculation, often involving over 200 actinide and
fission product nuclides. To overcome this problem the code
uses two methods for reducing the memory demand
(Leppänen, 2009b).
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). The Doppler
broadening capability was added in update 1.1.2.
Burnup calculation
Serpent is
capable of running burnup calculation both as a completely stand-alone
application and as a part of an externally-coupled sequence.
The number of depletion zones
is not restricted, although memory usage may become a
limiting factor in large systems.
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 discrete 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. 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 after the cycle from a flux
spectrum build on the unionized energy grid structure. The
indirect 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. The main drawback is that all information on the
statistical accuracy is lost. Similar methodology has been successfully
used with coupled Monte Carlo burnup calculation codes
(Haeck, 2007;
Fridman, 2008).
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 at VTT
(Pusa, 2010). The two methods have shown to yield
consistent results, both when used with Serpent
(Leppänen, 2010a)
and in separate methodological studies
(Isotalo, 2010).
Parallelization
Serpent uses
the Message Passing Interface (MPI) for parallel
calculation. Parallelization is implemented by dividing the
neutron histories to several tasks and combining the results
after the transport cycle. 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 irradiated material
and the speed-up may
become significant if the number of materials is
large. The extensive memory demand due to the use of the
unionized energy grid may become a limiting factor in
parallel burnup calculation, if several tasks are sharing
the same memory space.
Output
The Serpent
code 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 methods |
| • |
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 |
| • |
Parameters for the
six-factor formula |
| • |
Critical spectrum-corrected group
constants based on the B1 approximation (see beta features below) |
| • |
Various parameters related
to the Monte Carlo transport simulation |
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 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.
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 total and isotopic reaction cross
sections and ACE format dosimetry data.
Output for
burnup calculation consists of isotopic compositions,
transmutation cross sections, activities 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 simultaneous post-processing of several calculation
cases. 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).
Beta features
There are
various experimental features in the Serpent code that are still under
development and not thoroughly tested or documented. Some of
these features are briefly introduced in the following.
External
source simulation
The
development of an external source simulation mode began in
version 1.1.11. The mode replaces the criticality source
method and extends the simulation capabilities to
non-multiplying systems. The source routines are still under
development and the methodology requires extensive
validation.
Equilibrium xenon calculation
Version 1.1.9 of the Serpent code
includes a calculation routine that iterates the equilibrium concentration of fission product poison Xe-135 in one or
several fuel regions. The
calculation is based on the decay of the isotope and its precursors and the production and absorption rates normalized
to total power or power density. The iteration can be used in both transport and burnup calculation modes. When used with
burnup calculation, the concentration of Xe-135 is handled separate from the other nuclides.
Criticality iteration
In addition
to the conventional k-eigenvalue criticality source
calculation, Serpent has various options to iterate keff
to a user-given value. Most commonly these methods are used
to iterate criticality.
Coolant with
soluble absorber can be defined as a mixture of two separate
material compositions, most commoly water and boric acid.
The absorber concentration can be treated as a free variable
and used for keff iteration.
The second
option is the alpha eigenvalue mode, which is equivalent to
performing a time-dependent simulation
(Cullen, 2003). This method is based on introducing a
time absorption or multiplication reaction to balance the
neutron generation and loss rates. The technique is commonly
known and used in various deterministic and Monte Carlo
transport calculation codes.
Experimental leakage models
Developing a Monte Carlo based leakage correction to account for the non-zero
boundary currents in infinite lattice calculations is one of the long-term goals in Serpent development.
The code has two built-in leakage models, which should be considered
experimental, rather than standard Monte Carlo techniques since the results
are generally not satisfactory when compared to deterministic transport codes.
The first option is to use albedo boundary conditions on
reflective or periodic infinite-lattice boundaries. The
value of the albedo coefficient can be iterated to yield the
desired keff.
The second model is an attempt to perform B1 fundamental mode
calculation during the transport simulation.
The routine was originally developed for the
PSG code (see Sec. 9.5 in
Leppänen, 2007c), but not transferred to Serpent until
update 1.1.5. The method is very similar to the alpha
eigenvalue simulation, based on leakage absorption or
multiplication to balance the source and loss rates.
Critical
spectrum calculation
As an
intermediate solution to the leakage problem, Serpent version 1.1.14 has the option to homogenize cross
sections by performing a separate critical spectrum
calculation. The method follows a two-step procedure, in
which homogenized micro-group cross sections from the Monte
Carlo simulation are used to form B1
equations, which are then solved outside the main transport
loop. The procedure is very similar to the methods used in
various deterministic codes, and preliminary comparisons to
HELIOS
(Fridman, 2011)
have shown some very promising results.
So far the
methodology is used for group constant generation only, but
extending the spectrum correction to burnup calculation is
under development.
Results and validity
Serpent has
been extensively validated in LWR lattice calculations
(see
validation reports for example results).
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.
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.
The burnup calculation
capability is new and the routines have
not been thoroughly tested. The most extensive LWR
validation case carried out so far was presented at the
M&C 2009 conference in May 2009 (Leppänen,
2009a). In that study, a comparison to deterministic CASMO-4E results
shows consistent evolution of k-eff and the depletion of
U-235 and gadolinium isotopes in a PWR assembly burnup
calculation. Some small discrepancies are observed in the
buildup rates of Pu-239 and the main fission product poisons. The differences
are most likely to originate from several factors, such as the
microscopic neutron capture cross section of U-238 and the
special Xe-135 treatment used by the CASMO code.
Probability table sampling for
unresolved resonance cross sections was added in update
1.1.4 and revised in update 1.1.5. Preliminary tests show
that the method works as expected. What complicates the
validation, however, is the fact that the treatment has only
a minor impact in the results in most calculation cases. The
sampling routine slows down the transport cycle to some
extent, depending on the flux spectrum and the number of
nuclides and materials with probability table data. The
Serpent code has a few options for optimizing the
calculation.
The current code version lacks any statistical tests performed on the calculated values. All Monte Carlo results
are essentially
random variables, assumed to be normally distributed. This assumption is based on the central limit theorem,
and if the conditions of the theorem are not valid for a sequence of batch values, the confidence
intervals of the normal distribution may not be applicable. This is not considered a major problem in lattice physics
applications, and analyses performed on data produced in a series of test calculations has confirmed the validity of the
assumptions. Performance
The Serpent
code is optimized for performance in infinite lattice
calculations.
The typical 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 use of a
single unionized energy grid for all nuclides, 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 unionized energy grid approach also enables the
pre-calculation of certain material-wise cross sections used in group constant generation, so that there is no need
for summation over isotopes during the transport cycle.
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. The overall calculation time scales
linearly with respect to the number of depletion zones. 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 15 hours on a standard PC workstation. Of this time, about 60% is
contributed to the Monte Carlo calculation and the remaining part to data processing. The fraction of CPU time spent for solving
the depletion equations is practically negligible when the CRAM method is used.
The running
times can be further significantly cut down using parallelization.
Comparison to a similar
calculation using Monteburns suggests that Serpent may run over 80 times faster than coupled Monte
Carlo burnup calculation codes based on MCNP. It
should be noted, however, that the difference does not
result so much from the efficiency of the code, but rather
from the fact that MCNP tends to slow down significantly as
the number of reaction rate tallies becomes large. What is
more important is that the Serpent code can run full-scale
assembly burnup calculations similar to deterministic
transport codes, and the overall calculation time is counted
in hours or days, rather than weeks or months. |
|
|
Updates
on website |
|
April 18, 2012 |
|
• |
The Second International Serpent User Group Meeting in Madrid, Spain, September 19-21, 2012 announced. |
|
March 5, 2012 |
|
• |
New code version, manual updated, new events |
|
December 27, 2011 |
|
• |
Publications rearranged,
new publications |
|
October 10, 2011 |
|
• |
Website for the First International Serpent User
Group meeting established |
NOTE: Some of the information in this website is
outdated -- see the Serpent discussion forum (link below)
for latest news

Serpent Discussion Forum

Serpent User's
Manual
(March 5, 2012)
Base version:
Serpent 1.1.7
Current update:
1.1.17 (March 5,
2012)
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 |
September 19-21, 2012
The Second International Serpent User Group Meeting in Madrid,
Spain, organized by the Universidad Politécnica de Madrid
|
April 15-20, 2012
Several Serpent-related papers at the
PHYSOR-2012 conference |
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 Modelling 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 Nulear
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 |
|