# Chapter 9 Energy-Resolved Diffusive Transport

When there are strong processes that drive the velocity distribution function away from equilibrium, it is generally important to account for the full distribution of velocities of particles to understand their transport. Sources of particles with kinetic energy substantially higher than the typical (e.g. thermal) energy will have this effect. Examples include all sorts of reactions; for example the chemical reactions that occur in combustion, or, as we will address in this chapter, the nuclear reactions that involve neutrons.${}^{47}$

## 9.1  Collisions of Neutrons

Neutrons experience no net electric or magnetic forces, because they are uncharged, and usually gravity is ignorable; so in Boltzmann's equation the term proportional to the acceleration $\mathbit{a}$ can usually be neglected. Self-collisions are also negligible. It is the background matter through which the neutrons are moving that provides the targets with which the neutrons collide. It can be taken to consist of practically stationary atoms.
Collisions give the crucial terms in Boltzmann's equation. They arise from a whole host of different nuclear species, and the relevant cross-sections have very strong dependence on neutron kinetic energy (or equivalently speed, $v$). We generally sum over all the relevant species to give appropriate total source and sink rates per unit phase-space volume. In addition to the sink of neutrons, $-{\mathit{\Sigma }}_{t}\mathit{vf}$ from all possible collisions, there are sources arising from scattering, and from fission reactions.${}^{48}$ For fission and scattering, as illustrated by Fig. 9.1, we consider an incoming neutron denoted with a prime ($\text{'}$), having velocity given by speed $v\text{'}$, and direction unit vector $\mathbit{\Omega }\text{'}$ (so $\mathbit{v}\text{'}=v\text{'}\mathbit{\Omega }$) giving rise to an outgoing (sourced) neutron with speed $v$, and direction $\mathbit{\Omega }$. The "macroscopic cross-sections" are written respectively ${\mathit{\Sigma }}_{f}$ and ${\mathit{\Sigma }}_{s}$. They are functions of both incoming and outgoing velocity, which is denoted $\left(v\text{'}\to v,\mathbit{\Omega }\text{'}\to \mathbit{\Omega }\right)$. Figure 9.1: Collisions give a source of particles in ${\mathit{dvd}}^{2}\mathit{\Omega }$ as a result of particles that (before the collision) are in $\mathit{dv}\text{'}{d}^{2}\mathit{\Omega }\text{'}$. Both induced fissions (weighted by the average neutron yield $\mathit{\nu }$) and scattering events contribute. The sink term in ${\mathit{dvd}}^{2}\mathit{\Omega }$ is the sum of all collisions that remove a particle from ${\mathit{dvd}}^{2}\mathit{\Omega }$.
Possible spatial dependence (on $\mathbit{x}$) is implicit. Each fission gives rise to an average number of outgoing neutrons $\mathit{\nu }$ typically greater than one, so for source the quantity required is actually $\mathit{\nu }{\mathit{\Sigma }}_{f}$. Also, to calculate the source we must integrate over all possible incoming velocities, for which we write the flux density${}^{49}$ as $v\text{'}f\text{'}$ and the velocity element as ${d}^{3}v\text{'}={v\text{'}}^{2}{d}^{2}\mathit{\Omega }\text{'} \mathit{dv}\text{'}$. Thus Boltzmann's equation becomes the neutron transport equation:
 $\begin{array}{c}\frac{\partial f}{\partial t}+v\mathbit{\Omega }.\frac{\partial f}{\partial \mathbit{x}}=\underset{\mathrm{sink}}{\underset{⏟}{-{\mathit{\Sigma }}_{t}\mathit{vf}}}+\hfill \\ \mathrm{ }\int \left[\underset{\mathrm{fission}}{\underset{⏟}{\mathit{\nu }{\mathit{\Sigma }}_{f}\left(v\text{'}\to v,\mathbit{\Omega }\text{'}\to \mathbit{\Omega }\right)}}+\underset{\mathrm{scattering}}{\underset{⏟}{{\mathit{\Sigma }}_{s}\left(v\text{'}\to v,\mathbit{\Omega }\text{'}\to \mathbit{\Omega }\right)}}\right]v\text{'}f\text{'}{v\text{'}}^{2}{d}^{2}\mathit{\Omega }\text{'} \mathit{dv}\text{'}.\hfill \end{array}$ $\left(9.1\right)$
This specific form of the collision term can also be used to treat collisions and chemical reactions between neutral molecules in a gas mixture${}^{50}$. For neutrons, the cross-sections are very complicated functions of speed $v\text{'}$, and require extensive data and careful integration to produce accurate collision terms, even when $f$ is known. What's more, we have to deal with an integro-differential equation. It is not obvious how to solve it to find $f$ self-consistently.

## 9.2  Reduction to multigroup diffusion equations

Solving six- or seven-dimensional integro-differential equations numerically is a major undertaking. If we just simple-mindedly discretize the distribution function $f\left(\mathbit{v},\mathbit{x},t\right)$ on finite grids in each dimension, the amount of data quickly gets out of hand. Grids of length 100 require multiple terrabytes of representation ${100}^{6}={10}^{12}$, and solving for all of the discrete elements in phase-space becomes a grand computing challenge. Although there are some reasons to tackle that challenge, it is more usual, and historically more useful, instead to reduce the dimensionality of the problem by making appropriate choices of representation.
When the distribution function is nearly thermal, it is reasonable to describe it by just a few, low-order, moments of the velocity. This has the effect of reducing the three-dimensions of velocity-space to just a few dependent parameters. They are the density $n=\int f{d}^{3}v$, the mean velocity $\int \mathbit{v}f{d}^{3}v/n$, and the mean kinetic energy per particle, equivalent to the temperature: $\int \frac{1}{2}m{v}^{2}f{d}^{3}v/n=3T/2$. Formally, taking the corresponding moments of Boltzmann's equation ends up giving us the standard fluid equations; continuity, momentum, and energy conservation. Thus, solving such a reduction has already been addressed in our discussion of numerical treatment of fluid problems.
What do we do, though, when the velocity distribution is far from thermal, as it is in a reactor? We must keep account of that velocity dependence, because collision cross-sections depend upon it. A different type of approximation, useful in cases like neutron transport, because collisions are dominant, is to take the velocity anisotropy to be small. The distribution function $f$ is nearly spherically symmetric: nearly independent of $\mathbit{\Omega }$; and it is unnecessary to represent the velocity-direction dependence of $f$ in any detail. Figure 9.2: Illustrating the spherical volume in velocity-space over which the directional integral is performed.
It is necessary to retain just enough information about the anisotropy of $f\left(\mathbit{v}\right)$ to represent the directed flux density of neutrons, which is what determines their transport. Consider neutrons of a specific speed $v$ (i.e. in the element $\mathit{dv}$ at $v$). Integrate the full transport equation (9.1) ${v}^{2}{d}^{2}\mathit{\Omega }$ ($={d}^{3}v/\mathit{dv}$ since ${d}^{3}v={v}^{2}{d}^{2}\mathit{\Omega }\mathit{dv}$) over the spherical velocity space element, as illustrated in Fig. 9.2. We will denote that element just $\mathit{dv}$, to remind us of the speed choice, although its total velocity-space-volume is $4\mathit{\pi }{v}^{2}\mathit{dv}$. Now we denote the distribution function integrated over direction as
 $F\left(v\right)={\int }_{\mathit{dv}}f{v}^{2}{d}^{2}\mathit{\Omega }={\int }_{\mathit{dv}}f{d}^{3}v/\mathit{dv}.$ $\left(9.2\right)$
So the number of particles per unit volume in the speed range $\mathit{dv}$ is $F\left(v\right)\mathit{dv}$.
The first term in the angle-integrated Boltzmann equation becomes $\frac{\partial F}{\partial t}$. The second term becomes
 ${\int }_{\mathit{dv}}v\mathbit{\Omega }.\nabla f {d}^{3}v/\mathit{dv}=\nabla .\left[{\int }_{\mathit{dv}}\mathbit{\Omega }\mathit{vf} {d}^{3}v/\mathit{dv}\right]=\nabla .\mathbit{\Gamma }\left(v\right).$ $\left(9.3\right)$
Here, $\mathbit{\Gamma }\left(v\right)\mathit{dv}={\int }_{\mathit{dv}}\mathbit{\Omega }\mathit{vf} {d}^{3}v$ is the flux-density of the particles in the speed element $\mathit{dv}$; so $\mathbit{\Gamma }\left(v\right)$ is the speed distribution of the flux-density, a vector quantity.
Since all $\mathit{\Sigma }$ are independent of $\mathbit{\Omega }$ (only the difference $\mathbit{\Omega }-\mathbit{\Omega }\text{'}$ matters), the first (sink) term on the right of eq. (9.1) becomes $-{\mathit{\Sigma }}_{t}vF\left(v\right)$ and the second (source term) can be written
 $Q\left(v\right)=\int \left[\mathit{\nu }{\mathit{\Sigma }}_{f}\left(v\text{'}\to v\right)+{\mathit{\Sigma }}_{s}\left(v\text{'}\to v\right)\right]v\text{'}F\left(v\text{'}\right)\mathit{dv}\text{'},$ $\left(9.4\right)$
in terms of ${\mathit{\Sigma }}_{f}$ and ${\mathit{\Sigma }}_{s}$ integrated over direction.
The direction-integrated transport equation is then
 $\frac{\partial F\left(v\right)}{\partial t}+\nabla .\mathbit{\Gamma }\left(v\right)=-{\mathit{\Sigma }}_{t}\mathit{vF}\left(v\right)+Q\left(v\right),$ $\left(9.5\right)$
This equation becomes a diffusion equation if the flux-density is proportional to the gradient of the density, an approximation usually called Fick's law. Written in terms of $F\left(v\right)$, this proportionality is
 $\mathbit{\Gamma }\left(v\right)=-D\nabla F\left(v\right),$ $\left(9.6\right)$
where $D$ is the "diffusion coefficient". The value of $D$ is approximately $v/3{\mathit{\Sigma }}_{t}$, as outlined at the end of this section.
We then have the speed-resolved (or equivalently energy-resolved) diffusion equation
 $\frac{\partial F\left(v\right)}{\partial t}-\nabla .\left[D\nabla F\left(v\right)\right]=-{\mathit{\Sigma }}_{t}vF\left(v\right)+Q\left(v\right).$ $\left(9.7\right)$
The lowest-order anisotropy of $f\left(\mathbit{v}\right)$ is contained in $\mathbit{\Gamma }=D\nabla F\left(v\right)$, but the collision terms in this approximation are independent of any anisotropy. The equation applies for all values of the speed, $v$.

Enrichment: Derivation of Diffusion Coefficient.
The neutron (kinetic) transport equation (9.1) can be turned into a spatial diffusion equation by considering a fixed speed $v$. To lowest order, we approximate the angular dependence of $f$ as being a constant plus a term proportional to $\mathit{\mu }=\mathrm{cos}\mathit{\theta }$; i.e.  as $f={f}_{0}+{f}_{1}\mathit{\mu }$, where ${f}_{0}$ and ${f}_{1}$ are independent of $\mathbit{\Omega }$. These are the first two terms of an expansion of the angular dependence in spherical harmonics. Reactor physics literature calls this the ${P}_{1}$ Approximation. Obviously this approximation only makes sense if the distribution has an approximate axis of (velocity) cylindrical symmetry, relative to which the polar angle $\mathit{\theta }$ is measured. In the absence of inherent material anisotropy, the local axis of symmetry must be in the direction of of the density gradient $\nabla {f}_{0}$.

 Integration over a spherical velocity element with $\mathit{\mu }=\mathrm{cos}\mathit{\theta }$ and the angle $\mathit{\theta }$ measured from the direction $\nabla {f}_{0}$. If we substitute into eq.  (9.1) and equate orders of $\mathit{\mu }$, ignoring the partial time derivative (since we presume the distribution in angle relaxes quickly), we then obtain at order $\mathit{\mu }$
 $|\nabla {f}_{0}|=\left(-{\mathit{\Sigma }}_{t}+{\mathit{\Sigma }}_{s1}\right){f}_{1},$

where ${\mathit{\Sigma }}_{s1}$ is the part of the scattering term proportional to $\mathit{\mu }$, which is always smaller than ${\mathit{\Sigma }}_{t}$. (Sometimes ${\mathit{\Sigma }}_{s1}$ is approximately ignorable.) Unlike scattering, fission does not contribute to this anisotropic component, except from its part in ${\mathit{\Sigma }}_{t}$, because it is generally presumed that there is no significant correlation between the direction of neutron emission from a fission event and the incoming neutron. [The degree of anisotropy in neutrons from fission reactions is low but formally non-zero, especially at higher incoming neutron energy.]
The contribution from the speed element $\mathit{dv}$ to the directed spatial flux density (which is along the symmetry axis direction) is
 $\mathit{\Gamma }\left(v\right)\mathit{dv}=\int fv\mathit{\mu }{d}^{3}v=\int \mathit{fv}\mathit{\mu } 2\mathit{\pi }{v}^{2}d\mathit{\mu }\mathit{dv}=2\mathit{\pi }{v}^{3}\mathit{dv}\int \left({f}_{0}+{f}_{1}\mathit{\mu }\right)\mathit{\mu }d\mathit{\mu }=\frac{1}{3}{\mathit{vf}}_{1} 4\mathit{\pi }{v}^{2}\mathit{dv}.$

Incorporating the previous equation, we then have
 $\mathbit{\Gamma }\left(v\right)=-\frac{v}{3\left({\mathit{\Sigma }}_{t}-{\mathit{\Sigma }}_{s1}\right)}\nabla \left({f}_{0}4\mathit{\pi }{v}^{2}\right).$

This is Fick's law relating a flux density $\mathbit{\Gamma }\mathit{dv}$ to the gradient of a density $f4\mathit{\pi }{v}^{2}\mathit{dv}$, times a diffusivity
 $D=\frac{v}{3\left({\mathit{\Sigma }}_{t}-{\mathit{\Sigma }}_{s1}\right)}.$

## 9.3  Numerical Representation of Multigroup Equations

We've made substantial progress in making the transport equation more managable, lowering its dimensionality from six phase-space dimensions to four (3 space and 1 speed). Even so, we have to choose how to represent the distribution in speed (or energy), as well as the spatial representation.

### 9.3.1  Groups Figure 9.3: Groups are ranges in speed (equivalently energy) into which the neutrons are lumped. They are very rarely of equal width in speed or energy.
The natural discretization in speed is to use ranges of speed, or equivalently energy. In reactor physics the ranges are called "groups". It is like representing the speed distribution as a histogram (see Fig. 9.3). A point in phase space (particle, if you like) belongs to the (integer) group $g$ if its speed satisfies ${v}_{g-1/2}\le v<{v}_{g+1/2}$. The half-integer-index speeds are the extrema of the speed range belonging to group $g$, and this group is regarded as having a typical or average speed ${v}_{g}$. Put another way, the group can be considered to be the integral over the finite speed element $\mathit{\Delta }{v}_{g}={v}_{g+1/2}-{v}_{g-1/2}$. Take there to be ${N}_{G}$ groups in all. Then each neutron group separately satisfies a diffusion equation like (9.7), except that the source integral $Q\left(v\right)$ for each group contains, in its integral, contributions from all the other groups, corresponding to fission neutrons appearing in one group when they were caused by another group, or scattering directly from one speed (group) to another.
 $\frac{\partial {F}_{g}}{\partial t}-\nabla .\left[{D}_{g}\nabla {F}_{g}\right]+{\mathit{\Sigma }}_{\mathit{tg}}{v}_{g}{F}_{g}={Q}_{g}.$ $\left(9.8\right)$
Since $Q$ depends linearly on the ${F}_{g}$, through the integrals $\int v\text{'}F\left(v\text{'}\right)\mathit{dv}\text{'}$, the discretized equations are naturally expressed in terms of a matrix equation acting on a column vector of group fluxes
 $\frac{\partial \mathbf{F}}{\partial t}+\left(-\mathbf{L}+{\mathbit{\Sigma }}_{t}\mathbf{V}\right)\mathbf{F}=\mathbf{Q}=\mathbf{A}\mathbf{F}.$ $\left(9.9\right)$
The ${N}_{G}×{N}_{G}$ matrices $\mathbf{L}$, ${\mathbit{\Sigma }}_{t}$ and $\mathbf{V}$ are diagonal, and their $g$th diagonal elements are $\nabla .{D}_{g}\nabla$, ${\mathit{\Sigma }}_{\mathit{tg}}$, and ${v}_{g}$, respectively. Matrix $\mathbf{A}$, which multiplies $\mathbf{F}$ to provide the source term $\mathbf{Q}$, is not diagonal. It couples together the different rows of the matrix equation, the different groups. The crucial point is that the collision matrices ${\mathbit{\Sigma }}_{t}$ and $\mathbf{A}$ can be calculated at any position $\mathbit{x}$ by performing appropriate integrals over speed $v$ and then sums over different nuclear species. These require extensive information about the cross-sections for different types of collisions, but the velocity integrals only have to be done once.
Spatially Uniform Problem   If we are treating an idealized "infinite homogeneous" reactor, then all the coefficients of the "leakage operator" $\mathbf{L}$ are zero: $\nabla .{D}_{g}\nabla =0$. The spatial derivative terms are negligible. We need not represent more than one position in space, so the multiple group fluxes represent the only different dependent variable components we need to solve for. We have a first order ordinary differential vector equation with time as the only independent variable${}^{51}$. In such a situation one might use a large number of speed groups ${N}_{G}$. The system can be solved by the methods of chapter 2.
Non-uniform Problem   In an inhomogeneous or finite sized reactor, the diffusive transport terms cannot be ignored. In principle, we can then discretize the reactor in space, producing a total of (say) ${N}_{S}$ elements. Of course for a stuctured two dimensional mesh ${N}_{S}={N}_{1}×{N}_{2}$ or three dimensional ${N}_{S}={N}_{1}×{N}_{2}×{N}_{3}$. At each of the ${N}_{S}$ spatial elements there are ${N}_{G}$ groups, each of which has a speed-distribution component ${F}_{g}$. So there are a total of ${N}_{S}×{N}_{G}$ ${F}_{g}\left(\mathbit{x}\right)$-values to solve for${}^{52}$. In principle, we can line all these values up into a single column vector, then we can express the diffusion term ($\mathbf{L}\mathbf{F}$) as finite differences between components adjacent in space. So it becomes a true multiplicative matrix rather than a matrix of differential operators.
We can in principle then advance the diffusion equation in time using an explicit scheme. In this situation the stability of our numerical scheme depends upon the diffusive nature of the $D$ term. We need to recall the considerations for parabolic diffusion equations from Chapter 5. An explicit FTCS scheme, requires us to satisfy the stability condition $\mathit{\Delta }t\le \mathit{\Delta }{x}^{2}/2{N}_{d}D$ where ${N}_{d}$ is the number of space dimensions. Now $D\approx \frac{1}{3}v{\mathit{\ell }}_{c}$, where ${\mathit{\ell }}_{c}$ is the collision mean-free-path. Consequently the stability condition can be considered to be
 $\mathit{\Delta }\mathit{\ell }\equiv v\mathit{\Delta }t\le \frac{3}{2{N}_{d}}\frac{\mathit{\Delta }x}{{\mathit{\ell }}_{c}}\mathit{\Delta }x.$ $\left(9.10\right)$
The distance a neutron travels during the timestep must be less than $\mathit{\Delta }x$ times a factor $3\mathit{\Delta }x/2{N}_{d}{\mathit{\ell }}_{c}$, for stability. Superthermal neutrons are liable to be the most limiting of $\mathit{\Delta }t$, because their speed $v$ is greater (higher energy), and their ${\mathit{\ell }}_{c}$ is longer (smaller collision cross-section).

The most significant aspect of the neutron diffusion equation, as applied to a fission reactor, is that it is a homogeneous equation${}^{53}$, meaning that every term in eq. (9.9) is proportional to $\mathbf{F}$. That is because in a reactor essentially all the neutrons are generated by the fission reactions caused by the neutron flux itself. The steady state solution of a homogeneous equation is identically zero unless the multiplying matrix happens to be singular; in other words unless its determinant is zero. So the condition for there to be a non-trivial steady solution, representing a steadily operating reactor, to the multigroup diffusion equations is:
 $det\left(\mathbf{L}-\mathbit{\Sigma }\mathbf{V}+\mathbf{A}\right)=0.$ $\left(9.11\right)$
Such a condition does not come about by luck. It must be carefully arranged by adjusting the reactivity of the reactor using control rods and so on. If this condition of "criticality" is not satisfied, then the solution is not steady, the power is either increasing or decreasing with time. The way the condition is generally represented in the mathematics is by the idealized supposition that one has a way to adjust the effective neutron yield of all fission reactions; in particular, that they can be multiplied by a reactivity factor $1/k$. Remember that $Q\left(v\right)$ arose from two terms: scattering and fission. Write them separately as ${\mathbit{\Sigma }}_{s}\mathbf{V}\mathbf{F}$ and $\mathbit{\nu }{\mathbit{\Sigma }}_{f}\mathbf{V}\mathbf{F}$ respectively, where the diagonal matrix $\mathbit{\nu }$ has coefficients ${\mathit{\nu }}_{g}$ which represent the number of neutrons (per fission reaction) that arise with speed in the range of group $g$. Introduce the multiplicative reactivity factor $k$ so that
 $\mathbf{Q}=\mathbf{A}\mathbf{F}={\mathbit{\Sigma }}_{s}\mathbf{V}\mathbf{F}+\frac{1}{k}\mathbit{\nu }{\mathbit{\Sigma }}_{f}\mathbf{V}\mathbf{F}$ $\left(9.12\right)$
Then the steady diffusion equation becomes a (generalized) eigenvalue problem:
 $\left[\left(-\mathbf{L}+{\mathbit{\Sigma }}_{t}\mathbf{V}-{\mathbit{\Sigma }}_{s}\mathbf{V}\right)-\frac{1}{k}\mathbit{\nu }{\mathbit{\Sigma }}_{f}\mathbf{V}\right]\mathbf{F}=0.$ $\left(9.13\right)$
which can also be written in terms of neutron flux $\mathbit{\Phi }\equiv \mathbf{V}\mathbf{F}$ as
 $\left[\left(-\mathbf{L}{\mathbf{V}}^{-1}+{\mathbit{\Sigma }}_{t}-{\mathbit{\Sigma }}_{s}\right)-\frac{1}{k}\mathbit{\nu }{\mathbit{\Sigma }}_{f}\right]\mathbit{\Phi }=0,$ $\left(9.14\right)$
In general there are some values of $k$ for which the determinant of this matrix equation is zero. They are the eigenvalues${}^{54}$. Actually we want only the eigensolution with the largest value of $k$. That corresponds to the mode that would be fastest growing (or slowest decaying) in the original time-dependent equation (9.9). If this largest $k$ is greater than 1, then we had to reduce the neutron production rate by this factor relative to the original diffusion equation to get steady state. In other words there were too many reactions originally before we introduced $k$. A reactor with eigenvalue $k$ greater than one is supercritical; the neutron flux will increase as a function of time. By the same argument an eigenvalue less than 1 is subcritical; neutrons decrease as a function of time.
How do we find the eigenvalue? Well, one way is simply to use a library routine designed to find generalized eigenvalues${}^{55}$, and plug in the matrices. However, this is liable to be a very inefficient approach unless that routine can use the fact that all the matrices are sparse. Even the collision matrices ${\mathbit{\Sigma }}_{s}$ and ${\mathbit{\Sigma }}_{f}$ are very sparse. They are full matrices locally, in the sense that they couple all the different speed groups together. But they have no cross terms between different spatial locations. Consequently they are diagonal with respect to the spatial indices. Another way of saying the same thing is that, if we arrange the order of indices in the giant vector $\mathbf{F}$ such that all the groups at a particular position are adjacent to one another, then we can consider each matrix to be an ${N}_{S}×{N}_{S}$ matrix of blocks that are each ${N}_{G}×{N}_{G}$ submatrices. The form is illustrated in eq. (9.15).
 ${\mathbit{\Sigma }}_{s}=\left[\begin{array}{ccccc}\hfill \begin{array}{ccccc}\hfill •\hfill & \hfill •\hfill & \hfill •\hfill & \hfill •\hfill & \hfill •\hfill \\ \hfill •\hfill & \hfill •\hfill & \hfill •\hfill & \hfill •\hfill & \hfill •\hfill \\ \hfill •\hfill & \hfill •\hfill & \hfill •\hfill & \hfill •\hfill & \hfill •\hfill \\ \hfill •\hfill & \hfill •\hfill & \hfill •\hfill & \hfill •\hfill & \hfill •\hfill \\ \hfill •\hfill & \hfill •\hfill & \hfill •\hfill & \hfill •\hfill & \hfill •\hfill \end{array}\hfill & \hfill \hfill & \hfill \hfill & \hfill \hfill & \hfill \hfill \\ \hfill \hfill & \hfill \begin{array}{ccccc}\hfill •\hfill & \hfill •\hfill & \hfill •\hfill & \hfill •\hfill & \hfill •\hfill \\ \hfill •\hfill & \hfill •\hfill & \hfill •\hfill & \hfill •\hfill & \hfill •\hfill \\ \hfill •\hfill & \hfill •\hfill & \hfill •\hfill & \hfill •\hfill & \hfill •\hfill \\ \hfill •\hfill & \hfill •\hfill & \hfill •\hfill & \hfill •\hfill & \hfill •\hfill \\ \hfill •\hfill & \hfill •\hfill & \hfill •\hfill & \hfill •\hfill & \hfill •\hfill \end{array}\hfill & \hfill \hfill & \hfill \hfill & \hfill \right\}\begin{array}{c}\hfill \mathrm{Block}\hfill \\ \hfill \mathrm{size}\hfill \\ \hfill {N}_{G}\hfill \\ \hfill \hfill \end{array}\hfill \\ \hfill \hfill & \hfill \hfill & \hfill \begin{array}{ccccc}\hfill •\hfill & \hfill •\hfill & \hfill •\hfill & \hfill •\hfill & \hfill •\hfill \\ \hfill •\hfill & \hfill •\hfill & \hfill •\hfill & \hfill •\hfill & \hfill •\hfill \\ \hfill •\hfill & \hfill •\hfill & \hfill •\hfill & \hfill •\hfill & \hfill •\hfill \\ \hfill •\hfill & \hfill •\hfill & \hfill •\hfill & \hfill •\hfill & \hfill •\hfill \\ \hfill •\hfill & \hfill •\hfill & \hfill •\hfill & \hfill •\hfill & \hfill •\hfill \end{array}\hfill & \hfill \begin{array}{c}\hfill \text{Diagonal}\hfill \\ \hfill \text{Blocks}\hfill \\ \hfill ←\text{Filled}\hfill \\ \hfill ↓\hfill \end{array}\hfill & \hfill \hfill \\ \hfill \hfill & \hfill \begin{array}{c}\hfill \text{Off-}\hfill \\ \hfill \text{diagonal}\hfill \\ \hfill \text{Blocks}\hfill \\ \hfill \text{Zero}\hfill \end{array}\hfill & \hfill \hfill & \hfill \begin{array}{ccccc}\hfill •\hfill & \hfill •\hfill & \hfill •\hfill & \hfill •\hfill & \hfill •\hfill \\ \hfill •\hfill & \hfill •\hfill & \hfill •\hfill & \hfill •\hfill & \hfill •\hfill \\ \hfill •\hfill & \hfill •\hfill & \hfill •\hfill & \hfill •\hfill & \hfill •\hfill \\ \hfill •\hfill & \hfill •\hfill & \hfill •\hfill & \hfill •\hfill & \hfill •\hfill \\ \hfill •\hfill & \hfill •\hfill & \hfill •\hfill & \hfill •\hfill & \hfill •\hfill \end{array}\hfill & \hfill \hfill \\ \hfill \hfill & \hfill \hfill & \hfill \hfill & \hfill \hfill & \hfill \begin{array}{ccccc}\hfill •\hfill & \hfill •\hfill & \hfill •\hfill & \hfill •\hfill & \hfill •\hfill \\ \hfill •\hfill & \hfill •\hfill & \hfill •\hfill & \hfill •\hfill & \hfill •\hfill \\ \hfill •\hfill & \hfill •\hfill & \hfill •\hfill & \hfill •\hfill & \hfill •\hfill \\ \hfill •\hfill & \hfill •\hfill & \hfill •\hfill & \hfill •\hfill & \hfill •\hfill \\ \hfill •\hfill & \hfill •\hfill & \hfill •\hfill & \hfill •\hfill & \hfill •\hfill \end{array}\hfill \end{array}\right]\right\}{N}_{S}\text{blocks}.$ $\left(9.15\right)$
In respect of the ${N}_{S}×{N}_{S}$ structure, ${\mathbit{\Sigma }}_{s}$, ${\mathbit{\Sigma }}_{f}$, and ${\mathbit{\Sigma }}_{t}$ have diagonal arrangements of blocks. And ${\mathbit{\Sigma }}_{t}$ is diagonal even within its ${N}_{G}×{N}_{G}$ blocks. By contrast, $\mathbf{L}$ is an arrangement of blocks that is tridiagonal, with additional subdiagonals in multiple space dimensions; like eq. (5.18) with each of the letter entries there representing a (diagonal) block.
Because of the sparseness, for a problem of any significant size, it is most efficient to use an iterative technique to find the eigenvalue, in which we need only to multiply by the original matrices, not to invert them. In this respect the problem is very similar to the challenge of solving large elliptic problems.
The fact that we are only interested in the largest eigenvalue is a big help${}^{56}$. Practically any iterative scheme that leads to the dominance of the corresponding eigenmode will work. Defining $-\mathbf{L}+{\mathbit{\Sigma }}_{t}\mathbf{V}-{\mathbit{\Sigma }}_{s}\mathbf{V}=\mathbf{M}$ and $\mathbit{\nu }{\mathbit{\Sigma }}_{f}\mathbf{V}=\mathbf{G}$ for brevity, a typical approach is to solve $\left[\mathbf{M}-\mathbf{G}/k\right]\mathbf{F}=0$ using the scheme
 $\mathbf{M}{\mathbf{F}}^{\left(n+1\right)}=\frac{1}{{k}^{\left(n\right)}}\mathbf{G}{\mathbf{F}}^{\left(n\right)}.$ $\left(9.16\right)$
At each outer step, $n$, an iterative solver${}^{57}$ is used to find ${\mathbf{F}}^{\left(n+1\right)}$ given ${\mathbf{F}}^{\left(n\right)}$ (equivalent to inverting $\mathbf{M}$ but without actually forming ${\mathbf{M}}^{-1}$). Then the eigenvalue estimate is updated using a weighted ratio such as
 ${k}^{\left(n+1\right)}=\frac{\left(\mathbf{G}{\mathbf{F}}^{\left(n+1\right)}{\right)}^{T}\mathbf{G}{\mathbf{F}}^{\left(n+1\right)}}{\left(\mathbf{G}{\mathbf{F}}^{\left(n+1\right)}{\right)}^{T}\mathbf{M}{\mathbf{F}}^{\left(n+1\right)}},$ $\left(9.17\right)$
and the step process is repeated${}^{58}$. As was discussed in respect of nonlinear solvers, it might be advantageous to use only a very small number of loops of the inner iteration.

## Worked Example: Bare Homogeneous Reactor

Treat a reactor as having three neutron speed groups, whose material-interaction properties are uniform over the cuboid $0, $0, $0, with neutron density $F\left(v\right)=0$ on the boundaries. The non-zero terms of the inverse collision length matrices (expressed in m${}^{-1}$) may be taken as${}^{59}$:
 Group ($g$) 1 2 3 Energy 10keV - 10MeV 0.4eV - 10keV 0 - 0.4eV ${\mathit{\Sigma }}_{\mathit{tg}}={v}_{g}/3{D}_{g}$ 20 53 94 $\left({\mathit{\Sigma }}_{t}-{\mathit{\Sigma }}_{s}{\right)}_{\mathit{gg}}$ 6.4 9.5 12 $\left({\mathit{\Sigma }}_{s}{\right)}_{g+1,g}$ 6.0 6.5 0 $\left(\mathit{\nu }{\mathit{\Sigma }}_{f}{\right)}_{1,g}$ 0.9 1.8 18
So
 $\mathbf{D}{\mathbf{V}}^{-1}=\left(\begin{array}{ccc}\hfill .015\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill 0\hfill & \hfill .0063\hfill & \hfill 0\hfill \\ \hfill 0\hfill & \hfill 0\hfill & \hfill .0035\hfill \end{array}\right)\text{m},\mathrm{ }{\mathbit{\Sigma }}_{t}-{\mathbit{\Sigma }}_{s}=\left(\begin{array}{ccc}\hfill 6.4\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill -6.0\hfill & \hfill 9.5\hfill & \hfill 0\hfill \\ \hfill 0\hfill & \hfill -6.5\hfill & \hfill 12\hfill \end{array}\right){\text{m}}^{-1},$

 $\text{and}\mathrm{ }\mathbit{\nu }{\mathbit{\Sigma }}_{f}=\left(\begin{array}{ccc}\hfill 0.9\hfill & \hfill 1.8\hfill & \hfill 18\hfill \\ \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill \\ \hfill 0\hfill & \hfill 0\hfill & \hfill 0\hfill \end{array}\right){\text{m}}^{-1}.$ $\left(9.18\right)$
Find the reactivity eigenvalue and eigenmode for (a) a very large reactor, i.e. for ${L}_{x},{L}_{y},{L}_{z}\to \mathit{\infty }$, and (b) ${L}_{x}={L}_{y}={L}_{z}=1$ m.

Although we could construct a large finite difference block matrix and then numerically find its eigenvalue, spatially uniform material-interaction properties (collision lengths) constitute a very special case. They allow us to deduce the spatial variation of the eigenmode independently of its velocity dependence. The velocity-dependence and spatial-dependence of the eigenmodes become separable, giving rise to a distribution function of the form
 $F\left(\mathbit{x},v\right)=h\left(\mathbit{x}\right)\mathit{\Phi }\left(v\right)/v,$ $\left(9.19\right)$
where here $h$ is independent of $v$ and $\mathit{\Phi }$ is independent of space. This allows an enormous reduction in computational effort, because instead of one giant combined eigenvalue calculation, we need solve only two separate, much smaller, eigenvalue problems. The separate functions must satisfy the equation
 $\frac{1}{h}{\nabla }^{2}h={B}^{2}=\frac{v}{D\left(v\right)\mathit{\Phi }\left(v\right)}\left[-{\mathit{\Sigma }}_{t}\mathit{\Phi }\left(v\right)+{Q}^{\left(k\right)}\left(v\right)\right].$ $\left(9.20\right)$
where ${B}^{2}$ is the separation constant${}^{60}$; independent of both $\mathbit{x}$ and $v$. ${Q}^{\left(k\right)}$ denotes the source term modified by replacing the fission yield $\mathit{\nu }$ with $\mathit{\nu }/k$.
For any specified reactor shape there is a set of eigenmodes that satisfy the boundary conditions and ${\nabla }^{2}h={B}^{2}h$. This is a spatial eigenvalue problem for which ${B}^{2}$ is the eigenvalue. For a complicated shape of domain, it requires numerical solution, finding the eigenvalue of the finite difference matrix form of the ${\nabla }^{2}$ operator. In our simple cuboidal case, the spatial eigenmodes have simple analytic form
 $h\left(\mathbit{x}\right)=\mathrm{sin}\left(\mathit{\pi }{n}_{x}x/{L}_{x}\right)\mathrm{sin}\left(\mathit{\pi }{n}_{y}y/{L}_{y}\right)\mathrm{sin}\left(\mathit{\pi }{n}_{z}z/{L}_{z}\right),$ $\left(9.21\right)$
with ${n}_{x},{n}_{y},{n}_{z}$ positive integers. For the mode with the longest wavelength (${n}_{x}={n}_{y}={n}_{z}=1$),
 ${B}^{2}={\left(\frac{\mathit{\pi }}{{L}_{x}}\right)}^{2}+{\left(\frac{\mathit{\pi }}{{L}_{y}}\right)}^{2}+{\left(\frac{\mathit{\pi }}{{L}_{z}}\right)}^{2}.$ $\left(9.22\right)$
When we know ${B}^{2}$, the velocity-distribution eigenmode is then the solution of
 $\begin{array}{cc}\hfill 0=& \mathrm{ }{B}^{2}\left(D\left(v\right)/v\right)\mathit{\Phi }\left(v\right)+{\mathit{\Sigma }}_{t}\mathit{\Phi }\left(v\right)-{Q}^{\left(k\right)}\left(v\right)\hfill \\ \hfill =& \mathrm{ }\left({B}^{2}\mathbf{D}{\mathbf{V}}^{-1}+{\mathbit{\Sigma }}_{t}-{\mathbit{\Sigma }}_{s}-\frac{1}{k}\mathbit{\nu }{\mathbit{\Sigma }}_{f}\right)\mathbit{\Phi },\hfill \end{array}$ $\left(9.23\right)$
where the final form is the multigroup approximation expressed in terms of the size-${N}_{G}$ collision matrices.
For the large reactor, ${B}^{2}\to 0$. Therefore the multigroup eigenvalue problem is simply $\left[{\mathbit{\Sigma }}_{t}-{\mathbit{\Sigma }}_{s}\right]\mathbit{\Phi }=\frac{1}{k}\left[\mathbit{\nu }{\mathbit{\Sigma }}_{f}\right]\mathbit{\Phi }=0$. Because of the special form of the matrices, one can quickly solve the equations by hand. They become ${\mathit{\Phi }}_{2}=\left(12/6.5\right){\mathit{\Phi }}_{3}$, ${\mathit{\Phi }}_{1}=\left(9.5/6.0\right){\mathit{\Phi }}_{2}$ and $6.4{\mathit{\Phi }}_{1}-\frac{1}{k}\left[0.9{\mathit{\Phi }}_{1}+1.8{\mathit{\Phi }}_{2}+18{\mathit{\Phi }}_{3}\right]=0$. Choosing to set ${\mathit{\Phi }}_{1}=1$, the eigenmode is then ${\mathbit{\Phi }}^{T}=\left(1,0.632,0.342\right)$, and the eigenvalue is ${k}_{\mathit{\infty }}=k=\left(0.9+1.8×0.632+18×0.342\right)/6.4=1.28$. This ${k}_{\mathit{\infty }}$ is the eigenvalue for an infinite sized reactor. These values are confirmed if I enter the matrices into Octave and call the eig function. It tries to find 3 eigenmodes, but actually there is only one that is non-singular. It must be chosen correctly: a warning for the unwary.
For the 1 m reactor, ${B}^{2}=3{\mathit{\pi }}^{2}$, and we must add ${B}^{2}\mathbf{D}{\mathbf{V}}^{-1}$ to the matrix ${\mathbit{\Sigma }}_{t}-{\mathbit{\Sigma }}_{s}$. This does not change any of the zeroes, it just changes its diagonal entries somewhat, to $\left(6.84,9.69,12.1\right)$. Reevaluating the result we obtain eigenmode ${\mathbit{\Phi }}^{T}=\left(1,0.619,0.333\right)$, and eigenvalue $k=1.20$. Thus, the finite domain size in this case introduces only very small changes in the energy spectrum of the reactor (the eigenmode), and reduces the the eigenvalue only a small amount. It is a general rule that increasing ${B}^{2}$ decreases $k$. Therefore shorter-scale spatial modes (e.g. $n>1$), for which ${B}^{2}$ is larger, always have less gain in a uniform reactor. To make this reactor operate at steady power, we would have to introduce control rods or make other adjustments to reduce the reactivity by the factor $1/k=1/1.20$.

## Exercise 9. Neutron Transport.

1. Consider a one-group representation of neutron transport in a slab, one-dimensional, reactor of length $2L$. The reactor has uniform material properties; so that the steady diffusion equation becomes
 $-D{\nabla }^{2}F+\left({\mathit{\Sigma }}_{t}-S\right)F-\frac{1}{k}GF=0$

where the diffusion coefficient (divided by velocity) $D$, the total attenuation "macroscopic cross-section" ${\mathit{\Sigma }}_{t}$, the scattering and fission source terms $S$, $G$, are simply scalar constants. $F$ is the total neutron density, because there's only one group. For convenience, write ${\mathit{\Sigma }}_{t}-S=\mathit{\Sigma }$. The eigenvalue $k$ must be found for this equation.
The boundary conditions at $x=±L$ are that the neutron density satisfy
 $F=-2D\stackrel{^}{\mathbf{n}}.\nabla F=\mp 2D\frac{\partial F}{\partial x}$

where $\stackrel{^}{\mathbf{n}}$ is the outward normal at the boundary. This is essentially a non-reflective condition. It says there are no neutrons entering the reactor from outside.
Formulate the finite-difference diffusion equation on a uniform mesh of ${N}_{x}$ nodes; node spacing $\mathit{\Delta }x=2L/\left({N}_{x}-1\right)$. Exhibit it in the form of a matrix equation
 $\left[\mathbf{M}-\frac{1}{k}\mathbf{G}\right]\mathbit{F}=0$

And write out the matrix $\mathbf{M}$ explicitly for the case ${N}_{x}=5$ (so $\mathbf{M}$ is 5$×$5), carefully considering the incorporation of the finite-difference boundary condition.
The first and last rows of $\mathbf{M}$ that correspond to the boundary positions, are not part of the eigensolution equation. In other words, the matrix $\mathbf{G}$ has zero first and last rows. Therefore, use the boundary conditions to eliminate ${F}_{1}$ and ${F}_{{N}_{x}}$, reducing the matrix dimension by 2. Finally arrive at a 3$×$3 eigenvalue equation $\left[\mathbf{M}\text{'}-G/k\right]\mathbit{F}=0$, where $\mathbf{M}\text{'}$ is the 3$×$3 matrix adjusted to accommodate the boundary information, and $G$ is just a scalar (equivalent to a factor times the unit matrix).

2. Implement this finite difference scheme and (using some library function) find the eigenvalue, $k$, when $D=1$, $\mathit{\Sigma }=1$, $G=1$, and $L=2$ or $L=10$. Use large enough ${N}_{x}$ in your code that the solution is reasonably converged.

[Octave/Matlab hint. There are (in Octave) two routines for calculating eigenvalues: eig() and eigs(). Calling eigs(M,K) returns the largest K eigenvalues of the matrix M. Don't forget that the eigenvalue returned is $\mathit{\lambda }$ solving $\left[\mathbf{M}-\mathit{\lambda }\right]\mathbit{\Phi }=0$, in other words it is the inverse of $k$. We want just the smallest $\mathit{\lambda }$, which corresponds to the largest $k$. We can trick this routine into giving it by using the generalized eigenvalue form $\mathbf{I}-k\mathbf{M}=0$, so calling eigs(eye(Nx),M,1). The eigs() routine uses an iterative technique. The eig() routine returns all the eigenvalues. It uses a direct solution technique. One then has to find the smallest, and invert it to give $k$.]