Defining material volumes
Getting the right volumes for burnable materials is crucial for normalizing the reaction rates in burnup calculation. If the volume used in the calculation is incorrect, the reaction rates are over- or under-estimated, which leads to accumulating errors in material compositions as they are burnt. This can be pretty confusing for the user, since the results are correct for the initial composition, and if the volumes are not off by several factors, it may take several burnup steps before the errors become apparent. Serpent tries to calculate the volumes automatically, and can do that pretty well for 2D assembly geometries constructed using the "pin" geometry type. If burnable regions are more complex, the code prints out an error message saying that the volumes must be entered manually, which is usually not a major problem either.
The real danger lies in geometries in which the code thinks that the volumes are appropriately calculated, and has no way of telling the user that something may be wrong. The most typical case where this happens is that the burnable regions are defined using the pin-structure, but some of the pins are cut by the boundaries of a universe at another geometry level. Imagine, for example, a 1/4 model of a PWR fuel assembly:
This type of geometry model would give correct results for k-eff, group constants and everything that does not need to be normalized to something that depends on volume. Flux used for burnup calculation, however, depends on global normalization (flux, power, power density, etc.) and the volume of the burnable material relative to the total volume. In this case, the code would be able to calulate the volume of all three fuel regions by calculating the volume of a single pin, and counting the number of pins in the lattice. What the code would not see, however, is that two rows of pins are cut in half by the outer (reflective) geometry boundary.
An easy way to check that the volumes used in the calculation are correct is to run the Monte Carlo based volume checker routine:
sss2 -checkvolumes <N> <input>
The code samples <N> points in the geometry, and by counting the number of hits in each material region determines a stochastic estimate for the volumes. For the PWR case above the output looks like:
... Material FUE1 : 9.0920E+00 8.5550E+00 (0.001) : -0.059 Material FUE2 : 1.3905E+01 1.3368E+01 (0.001) : -0.039 Material FUE3 : 1.5510E+01 1.3367E+01 (0.001) : -0.138 Material can : 1.3719E+01 1.2251E+01 (0.001) : -0.107 Material water : N/A 6.7527E+01 (0.000) : N/A ...
The first column of values is the volume that will be used by Serpent in the transport calculation. The second column shows the Monte Carlo volume estimates along with the relative statistical errors, and the last column shows the relative difference between the two. So if this input was used in a burnup calculation, the volumes of materials FUE1, FUE2 and FUE3 would be over-estimated by about 6%, 4% and 14%, respectively, which would result in significant errors in the material compositions at later burnup steps.
In this type of geometry the volumes of the materials would be easy to calculate by hand, and they could be entered in the material cards in the input (see Sec. 4.1.2 in Serpent Manual). In more complicated geometries, however, and especially using the new automated divisor feature, determining and entering the correct volumes becomes much more difficult. For more complicated cases version 2.1.6 offers the capability to use the Monte Carlo volume checker routine for calculating the volumes for the transport calculation. When run, the routine produces an output file "<input>.mvol", which for the example PWR case looks like: