# Memory usage

## Contents

## Optimization modes

The optimization modes that affect code performance and memory usage are controlled by option:

set opti <mode>

where <mode> is the optimization mode 1 - 4. You can find some background information on this topic in my presentation at the Dresden meeting:

http://montecarlo.vtt.fi/mtg/2011_Dresden/Serpent_Leppanen2.pdf

I will also present a paper in PHYSOR-2012. In summary, the modes are (from my PHYSOR-paper):

**Mode 4**: Maximum performance at the cost of memory usage. Suitable for group constant generation and 2D assembly burnup calculations with a limited number of depletion zones. The methodology is essentially the same as that used in Serpent 1.

**Mode 3**: Similar to mode 4, but lower memory demand. CPU time required by burnup and processing routines increases steeply along with the number of depletion zones, which makes the mode better suited for small burnup calculation problems.

**Mode 2**: Good performance in burnup calculations involving several thousand depletion zones. Suitable for research reactor applications, but not the best choice for group constant generation.

**Mode 1**: Minimum optimization and small memory usage. Suitable for very large burnup calculation problems involving tens or hundreds of thousands of depletion zones.

Default is mode 4, and it is pretty much the same as Serpent 1. For large burnup calculation problems I suggest you try mode 1 or 2. Mode 2 reduces memory usage per burnable material, and mode 1 minimizes everything. Mode 3 is usable with small burnup calculation problems in machines with very limited memory.

(copied from https://ttuki.vtt.fi/serpent/viewtopic.php?f=24&t=1648)

### Memory optimization mode

### Double indexing for cross section energy grid look-up

## Cross section libraries and energy grid thinning

Useful discussion: https://ttuki.vtt.fi/serpent/viewtopic.php?f=25&t=2165&p=5695

### Unionized energy grid reconstruction parameters

## Depletion cutoffs

(from: https://ttuki.vtt.fi/serpent/viewtopic.php?f=15&t=561&p=1077#p1079)

Fission product yield cut-off (fpcut) acts on cumulative fission yields, and the given number is the lower limit for the maximum cumulative yield in each mass chain. So "set fpcut 1E-2" means that every mass chain (nuclides with same mass number) with all cumulative yields below 1% are discarded from the calculation.

The cut-off is set to zero by default. Setting the cut-off to a higher value (~1E-4 or so) is an effective way to reduce the number of nuclides in the calculation, but at some point it will start affecting the results (eventually you'll lose Xe-135 and other major fission product poisons). The cut-off affects only the cross section data, and the nuclide concentrations are still tracked if decay data is available. The code prints the number of available and included fission product nuclides (cross sections) in the _res.m output (variables FP_NUCLIDES_AVAILABLE and FP_NUCLIDES_INCLUDED), respectively.

Transmutation cross section fraction cut-off (xsfcut) terminates transmutation chains with probability lower than the given value. The cut-off is performed after each depletion step, and it does not affect the memory demand (the number of nuclides read). This is a somewhat obsolete feature that does not provide any advantage when the default CRAM method is used for solving the depletion equations because the solution is fast even with a full burnup matrix.