1.1 Introduction

Neutron transport is relevant in a variety of applications as, for instance, in medicine, industrial applications, radiation protection and nuclear energy production among others. In this context, the present work reports on the development of a simulator for neutron transport considering continuous energy dependence of cross sections [CaEtAl11, CaEtAl13]. As a progress in comparison to other implementations, the cross sections are parametrisations in the range between 0 MeV and 20 MeV, including resolved and unresolved resonances, and with a maximum deviation smaller than ∼ 1% from measured data. Other implementations may be found in the literature such as Serpent [Le15], MCNP [Mo03], Tripoli [BoEtAl03], OpenMC [RoFo13], Keno [PeCo75], GEANT [AgEtAl03], MCBend [CoEtAl13], where cross sections are determined from interpolation of cross section from databases.

In the present contribution we report on an optimisation of a Monte Carlo simulator based on the interaction and tracking philosophy also found in GEANT. In the former neutrons are classified according to three overlapping energy distributions (fission, intermediate and thermal). Neutrons from fission and during slowing down suffer predominantly down-scattering, whereas in the thermal region neutrons may gain kinetic energy from collisions with nuclei and molecules due to their thermal motion. To circumvent simulating thermal up- and down-scattering that do not significantly change properties of the thermal neutron population, we introduce a statistical treatment reducing the problem by considering reaction rates only. The fission and the thermal distributions preserve shape, but their respective integrals may vary with time, whereas the intermediate distribution has unknown shape and integral. It is noteworthy that all distributions are continuous over the whole energy range and thus one faces the challenge to determine for a neutron with given kinetic energy to which distribution it belongs.

1.2 Neutron Transport by a Monte Carlo Method

The underlying philosophy of the present simulator follows the paradigm of the GEANT platform, which besides efficient geometry resource makes use of tracking and interaction algorithms. The present simulator considers the same degrees of freedom as the Boltzmann transport equation, namely position, time, propagation direction and kinetic energy. Different than deterministic models found in the literature such as diffusion theory, the P N and S N approximation for the transport equation [Sj13] and the references therein, the method employed here to attain physical information of the transport phenomenon is by sampling of a sufficiently high number of neutron histories from a physical Monte Carlo procedure that allows to determine quantities such as the spectral neutron population, the angular or scalar flux depending on the specific tags that are being used either in the simulation or in a posterior data evaluation. With the present contribution we simulate a simplified reactor neutron problem and focus on the question of identifying the distribution a neutron with a specific energy belongs to. The problem of identification arises due to the fact that two adjacent distributions overlap significantly in certain energy regions.

1.3 Program Description

The C++ Monte Carlo simulator in development features sectionally analytical functions for the energy dependent microscopic cross sections in the range from 0 MeV to 20 MeV. In the present case 200 executions were performed, each starting with 5000 neutrons, and ending up with 106 neutron histories. For tallying reasons linked to computer hardware constraints each execution was limited to 5000 Monte Carlo steps, and these were segmented in 50 intervals of 100 steps each, i.e. after 100 steps the simulation reached a checkpoint, where it was halted and the respective dataset was saved. The subsequent run then used these data as the initial condition for the following 100 steps.

At the beginning of each Monte Carlo step, neutrons created by fission are given two random angles (between [0, 2π] and [−π∕2, π∕2], respectively) that define their direction and further a random energy that obeys the fission distribution and the positions are given by coordinates of the fission reaction.

$$\displaystyle{ \chi (E) = 0.453\,e^{-1.036\;MeV ^{-1}\,E }\sinh \sqrt{2.29\;MeV ^{-1 } \,E} }$$
(1.1)

Note, the tracking and the interaction scheme was optimised in the sense that each Monte Carlo step has an interaction, which increases computational efficiency, but at the cost of loosing a unique relation between Monte Carlo step and corresponding time interval. Thus, a Monte Carlo step may be related only to an average of a time interval distribution that may be reconstructed from the tallies. After the displacement of the neutron its position is checked in order to evaluate whether it remains still in the reactor core volume or whether it escaped, where in the latter case the history of the neutron ends and a new neutron is selected. Finally, the type of neutron interaction is selected, which is based on both region and neutron energy.

In the case of radiative capture the procedure is the same as for escape, the neutron’s history ends and a new neutron is chosen. In case that fission occurs, the history of the fission inducing neutron ends and a multiplicity of new neutrons is generated. In case of scattering the energy and the direction angles are updated for the next step. The main structure of the program is shown on the flowchart in Figure 1.1.

Fig. 1.1
figure 1

Program flowchart with its principal instances

As a simplified case study, we consider the geometry of the reactor by a cube with edges of dimensions 400 cm × 400 cm × 400 cm. The inner part contains three regions, where region 1 measures 250 cm × 250 cm × 400 cm and contains a homogeneous mixture of water and uranium dioxide enriched to 0. 73% and the latter occupies 25% of the respective volume. Around the central box there is a hollow box, i.e. region 2, with extensions 350 cm × 350 cm × 400 cm and is composed of water. There is a second hollow box, allocated in region 3 with a homogeneous mixture of water and uranium dioxide, but with completely depleted uranium dioxide which occupies 45% of the respective volume. For convenience we adopted periodic boundary conditions in the vertical direction (aligned with the zaxis). The program executes the tracking and interaction of neutrons in the whole volume.

The position in which a reaction will occur at the end of a Monte Carlo step depends on the kinetic energy of the neutron, its position at the beginning of the step, the direction of movement and the total macroscopic cross sections of the chemical composition of the reactor core material along the trajectory. The final position of the track will then be determined by a stochastic selection for the length of the travelled path. To this end a multiple S of the mean free path is generated by a random number, following a standard procedure S = −ln(1 − a) and a ∈ [0, 1]. Consequently the length of the path is L = t −1 where Σ t is the microscopic total cross section characteristic for the path. In case a neutron crosses a boundary between sub-domains the path length is calculated by a weighted sum of cross section contributions characteristic for the respective regions L = i P i SΣ t −1, where P i is the fraction of S that corresponds to the trajectory segment within the i-th sub-domain. After updating the position, a verification checks whether the neutron remains inside the boundaries of the reactor core volume, and thus whether the neutron tally continues inside or terminates outside the domain.

After the position of the interaction is defined, the target involved in the reaction is chosen. In Region 2 the target is a water molecule or one of its constituents (H and O), whereas in regions 1 or 3 a random number is generated and compared to the volume proportions of water and uranium dioxide, more specifically to its constituents. The subsequent step is then to select the type of interaction by generating a random number which is compared to the stoichiometric ratio of the cross section of all possible targets. As an example, the probability of a reaction in uranium dioxide (UO 2) is given by \(p_{i} = \frac{\sigma _{i}} {2\,\sigma _{t,O}+e\,\sigma _{t,U-235}+(1-e)\,\sigma _{t,U-238}}\), in which e is the enrichment, σ t, O is the total cross section of oxygen-16, σ t, U−235 the total cross section of uranium-235, σ t, U−238 the total cross section of uranium-238 and σ i is the cross section of a specific neutron reaction in one of the nuclei.

1.4 Nuclear Reactions

If the chosen reaction is fission two stochastic operations are in order. The first one is to decide the number of neutrons born from fission, and the second is to define their energies. In order to define the number of neutrons from fission a random number ν is generated between 0 and 0. 972. The upper limit was chosen such as to guarantee that the average number of neutrons created in fission coincides with the expected value of ν = 2. 48 for fission induced by thermal neutrons and nuclear fuel U-235. It is noteworthy that the huge bulk of fission reactions releases either two or three neutrons, so that to a good approximation only these two cases are taken into account. These neutrons have energies roughly in the range between 100MeV up to 101MeV as given by Equation (1.1). The position of the fission reaction is also recorded for it is the initial position of the next Monte Carlo step of the newly generated neutrons. At the present state of developments no contributions due to delayed neutrons are considered, this pertinent issue will be included in the next version of the simulator.

In case of scattering, a new energy and a new direction in agreement with energy and momentum conservation must be given to the neutron. A simplification of the program is that it considers the scattering as isotropic in the centre of mass system. Strictly speaking, scattering is isotropic for low kinetic energies and small nuclei, however, as the collision energies become higher and/or target nuclei become larger, anisotropy increases. So far the described processes treat down-scattering only, i.e. energy loss of neutrons in their interactions with their respective targets [GlSe94].

$$\displaystyle{ \frac{E^{{\prime}}} {E} = \frac{A^{2} + 2\,A\,cos(\theta ) + 1} {(A + 1)^{2}} }$$

Here E is the energy of the neutron in the Laboratory system before the collision, E is the energy of the neutron in the Laboratory system after the collision and θ is the angle of scattering measured in the Centre-of-Mass system and that is in the plane that contains both vectors of incident direction and scattered direction of the neutron. However, the closer neutrons approach thermal energies also up-scattering is important, due to the thermal motion of the target nuclei which is no longer negligible. As soon as neutrons may be classified as thermal they are in equilibrium with the environment which allows to simplify the tracking and interaction procedure. Equilibrium implies conservation of the respective energy distribution, so that the only relevant stochastic quantity that shall be determined is the reaction rate.

The procedure to determine whether a neutron belongs to the thermal distribution is as follows. A random number between 0 and 1 is generated and compared to the Maxwell-Boltzmann cumulative distribution with an equilibrium temperature of 568 K. Should the random number be larger than the cumulative distribution, then the neutron is considered to be in thermal equilibrium with the moderator. Neutrons that are part of the thermal population are assigned a new energy, sampled from the Maxwell-Boltzmann probability distribution.

The procedure to find the new neutron direction after scattering is determined in a complete three-dimensional fashion, although cylinder symmetry would allow a reduction into a plane. Let the unit vector \(\vec{\varOmega }_{i}\) be the direction of the incoming neutron with α ∈ [0, 2π] and β ∈ [−π∕2, π∕2] angles with respect to the laboratory reference frame (see Equation (1.2)). For convenience one may construct one possible final direction \(\vec{\varOmega }_{f}^{{\ast}}\) (see Figure 1.2). All remaining possible final vectors in agreement with cylinder symmetry may be generated with two auxiliary orthogonal vectors \(\vec{\varOmega }_{P}\) and \(\vec{\varOmega }_{Q}\) that by construction are symmetrical on either side of the scattering plane defined by \(\vec{\varOmega }_{i}\) and \(\vec{\varOmega }_{f}^{{\ast}}\) (see Equation (1.3)). The vector \(\vec{\varOmega }_{P} +\vec{\varOmega } _{Q}\) lies then in the scattering plane, whereas \(\vec{\varOmega }_{P} -\vec{\varOmega }_{Q}\) is perpendicular to the latter. The plane by \(\vec{\varOmega }_{P}\) and \(\vec{\varOmega }_{Q}\) defines the rotation plane that contains the circle with all possible outcomes for the final direction \(\vec{\varOmega }_{f}\) of the neutron after scattering (see Figure 1.2).

$$\displaystyle{ \vec{\varOmega }_{i} = \left (\begin{array}{*{10}c} \cos (\alpha )\,\cos (\beta ) \\ \sin (\alpha )\,\cos (\beta ) \\ \sin (\beta ) \end{array} \right ),\qquad \vec{\varOmega }_{f}^{{\ast}} = \left (\begin{array}{*{10}c} \cos (\alpha )\,\cos (\beta +\psi ) \\ \sin (\alpha )\,\cos (\beta +\psi ) \\ \sin (\beta +\psi ) \end{array} \right ) }$$
(1.2)
$$\displaystyle{ \begin{array}{rl} & \frac{\sin (\psi )} {\sqrt{2}}\,(\vec{\varOmega }_{P} -\vec{\varOmega }_{Q}) =\vec{\varOmega } _{i} \times \vec{\varOmega }_{f}^{{\ast}} \\ & \frac{\sin (\psi )} {\sqrt{2}}\,(\vec{\varOmega }_{P} +\vec{\varOmega } _{Q}) =\vec{\varOmega }_{ f}^{{\ast}}-\cos (\psi )\,\vec{\varOmega }_{i} \\ \end{array} }$$
(1.3)
$$\displaystyle{ \vec{\varOmega }_{f} =\cos (\psi )\,\vec{\varOmega }_{i} +\sin (\psi )\,(\cos (\varPhi )\,\vec{\varOmega }_{P} +\sin (\varPhi )\,\vec{\varOmega }_{Q}) }$$
Fig. 1.2
figure 2

Sketch of the neutron scattering scheme

Here Φ ∈ [0, 2π] is a random angle. A necessary feature of scattering not implemented yet is due to the fact that approximately below 1 eV instead of a single free nuclide one has to consider whether the atom is a constituent of a molecule or solid state, so that in the previous case molecular degrees of freedom such as rotation and vibration shall be considered, whereas in a solid state phonon degrees of freedom shall be taken into account.

1.5 Coupled Distributions

Several features that characterise the simulator are new and different to the other aforementioned neutron transport codes. Since none of them makes use of properties such as shape preservation of distributions or the fact that in the thermal regime consequences of thermal equilibrium may be explored, as a consistency test of the present implementation we compare a linearised model for the coupled distributions with direct findings from the simulation. To this end the following system of differential equations is considered and solved.

$$\displaystyle{ \frac{\partial } {\partial t}\left (\begin{array}{*{10}c} D_{1} \\ D_{2} \\ D_{3} \end{array} \right ) = \left (\begin{array}{*{10}c} -\lambda _{f,c,e,1} & \lambda _{t(2,1)} & 0 \\ 0 &-\lambda _{f,c,e,2} -\lambda _{t(2,1)} & \lambda _{t(3,2)} \\ \nu \lambda _{f,1} & \nu \lambda _{f,2} & \nu \lambda _{f,3} -\lambda _{f,c,e,3} -\lambda _{t(3,2)} \end{array} \right )\left (\begin{array}{*{10}c} D_{1} \\ D_{2} \\ D_{3} \end{array} \right ) }$$
$$\displaystyle{ \lambda _{f,c,e,i} =\lambda _{f,i} +\lambda _{c,i} +\lambda _{e,i}\qquad \mbox{ for }i \in 1,2,3 }$$

Here D is the total number of particles in each distribution, λ is the mean rate of each interaction per Monte Carlo step, ν is the mean number of neutrons emitted by fission, the subscripts 1, 2 and 3 represent, respectively, the thermal, intermediate and fission distribution, and the subscripts f, c, e and t(i, j) represent, respectively, the fission reaction, radiative capture reaction, neutron leakage and the transition of a neutron from distribution i to distribution j. The aforementioned interaction rates are computed after the simulation is completed.

1.6 Results

Results were obtained for a starting population of 106 neutrons. The behaviour of the total population along all 5000 Monte Carlo steps is shown in Figure 1.3.

Fig. 1.3
figure 3

Total number of neutrons per Monte Carlo step

By inspection of Figure 1.3 one identifies a sub-critical regime, this will also be supported by the computation of the neutron multiplication factor. It is also possible to note an increase of the number of neutrons during the first steps of the simulation. This behaviour, apparently in contrast to the sub-critical tendency, is attributed to the fact that the simulation is started with a fission distribution only. Criticality can be evaluated by dividing the number of fissions caused by neutrons of one generation by the number of fissions caused by neutrons of the previous generation, in such a way that each time neutrons are created by fission they belong to a generation that follows the generation of the neutron that induced the fission reaction. Along the 5000 Monte Carlo step 252 neutron generations were identified. The resulting neutron multiplication factor is presented in Figure 1.4.

Fig. 1.4
figure 4

Multiplication factor from the neutron life cycle

Figure 1.4 shows that after generation 200 the neutron multiplication factor deviates from the behaviour presented in previous steps. This can be explained by the fact that neutrons of different generations are present in the same Monte Carlo step and, as the simulation is stopped at step 5000, the number of neutrons in a generation that causes fission diminishes for the subsequent generations, and thus the decay of the multiplication factor is an artefact of the way the simulation terminates. The first generations are also less representative, for they are influenced by the specific conditions that define initialisation. For the generations 20 to 200 the geometric mean of the neutron multiplication factor was calculated with numerical value k eff = 0. 998417.

In Figure 1.5 the ratios of the populations of each of the three distributions by the total population for each step are shown.

Fig. 1.5
figure 5

Ratios of each distribution population to the total population from the simulation

In Figure 1.5 it is perceivable that, even though the total population varies, the proportions of the distributions are relatively constant for steps larger than ∼ 500. The preservation of these ratios is due to the fact that the neutron spectrum remains stationary along the Monte Carlo steps. The rates of the different interactions were computed and this information was used in the differential equation system. Due to the fact that the computed rates are mean values per step and that initialisation of the program induces a bias in the results, the initial condition for the system was taken from the respective population of each distribution at step 500. The solution is presented in Figure 1.6 as ratios to the total population, comparing the ratios from the linearised coupled distribution equation system to findings from the Monte Carlo simulation, which shows fairly good agreement and thus shows consistency of the implementation.

Fig. 1.6
figure 6

Ratios of each distribution population to the total population from the linearised model

1.7 Conclusions and Future Work

The simulator in development is able to solve neutron transport problems in the complete phase space of the Boltzmann equation without simplifications or discretisations. It can successfully track and tag particles and their respective properties, allowing thus for the construction of physically relevant probability distribution functions, such as neutron density, angular and scalar fluxes. We showed results for the proportions of the fission, intermediate and thermal distributions, where a results from Monte Carlo simulated ratios were compared to the analytical result of the linearised model and showed fairly good agreement thus confirming consistency of the implementation. As a next step in the development of the simulator we will use resources of power computing to accelerate the simulation execution runs and prepare the playground for more complex future extensions.