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