Chapter 9
EnergyResolved 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
$\mathit{a}$ can
usually be neglected. Selfcollisions 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
crosssections
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 phasespace 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
$\mathit{\Omega}\text{'}$ (so
$\mathit{v}\text{'}=v\text{'}\mathit{\Omega}$) giving rise
to an outgoing (sourced) neutron with speed
$v$, and direction
$\mathit{\Omega}$. The
"macroscopic crosssections"
are written
respectively
${\mathit{\Sigma}}_{f}$ and
${\mathit{\Sigma}}_{s}$. They are functions of both
incoming and outgoing velocity, which is denoted
$(v\text{'}\to v,\mathit{\Omega}\text{'}\to \mathit{\Omega})$.
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
$\mathit{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{'}\hspace{0.5em}\mathit{dv}\text{'}$. Thus Boltzmann's equation becomes the
neutron transport equation
:
$\begin{array}{c}\frac{\partial f}{\partial t}+v\mathit{\Omega}.\frac{\partial f}{\partial \mathit{x}}=\underset{\mathrm{sink}}{\underset{\u23df}{{\mathit{\Sigma}}_{t}\mathit{vf}}}+\hfill \\ \mathrm{\hspace{1em}\hspace{1em}\hspace{1em}\hspace{1em}\hspace{1em}\hspace{1em}}\int [\underset{\mathrm{fission}}{\underset{\u23df}{\mathit{\nu}{\mathit{\Sigma}}_{f}(v\text{'}\to v,\mathit{\Omega}\text{'}\to \mathit{\Omega})}}+\underset{\mathrm{scattering}}{\underset{\u23df}{{\mathit{\Sigma}}_{s}(v\text{'}\to v,\mathit{\Omega}\text{'}\to \mathit{\Omega})}}]v\text{'}f\text{'}{v\text{'}}^{2}{d}^{2}\mathit{\Omega}\text{'}\hspace{0.5em}\mathit{dv}\text{'}.\hfill \end{array}$ 
$(9.1)$

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 crosssections 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 integrodifferential equation. It
is not obvious how to solve it to find
$f$ selfconsistently.
9.2 Reduction to multigroup diffusion equations
Solving six or sevendimensional integrodifferential equations
numerically is a major undertaking. If we just simplemindedly
discretize the distribution function
$f(\mathit{v},\mathit{x},t)$ 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 phasespace 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, loworder,
moments
of the velocity. This has
the effect of reducing the threedimensions of velocityspace to just
a few dependent parameters. They are the density
$n=\int f{d}^{3}v$, the mean velocity
$\int \mathit{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 crosssections 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
$\mathit{\Omega}$; and it is unnecessary to represent the
velocitydirection dependence of
$f$ in any detail.
Figure 9.2: Illustrating the spherical volume in velocityspace over
which the directional integral is performed.
It is necessary to retain just enough information about the anisotropy
of
$f(\mathit{v})$ 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 velocityspacevolume is
$4\mathit{\pi}{v}^{2}\mathit{dv}$. Now we denote the
distribution function integrated over direction as
$F(v)={\int}_{\mathit{dv}}f{v}^{2}{d}^{2}\mathit{\Omega}={\int}_{\mathit{dv}}f{d}^{3}v/\mathit{dv}.$ 
$(9.2)$

So the number of particles per unit volume
in the speed range
$\mathit{dv}$ is
$F(v)\mathit{dv}$.
The first term in the
angleintegrated Boltzmann equation becomes
$\frac{\partial F}{\partial t}$.
The second term becomes
${\int}_{\mathit{dv}}v\mathit{\Omega}.\nabla f\hspace{0.5em}{d}^{3}v/\mathit{dv}=\nabla .[{\int}_{\mathit{dv}}\mathit{\Omega}\mathit{vf}\hspace{0.5em}{d}^{3}v/\mathit{dv}]=\nabla .\mathit{\Gamma}(v).$ 
$(9.3)$

Here,
$\mathit{\Gamma}(v)\mathit{dv}={\int}_{\mathit{dv}}\mathit{\Omega}\mathit{vf}\hspace{0.5em}{d}^{3}v$ is the
fluxdensity of the particles in the speed
element
$\mathit{dv}$; so
$\mathit{\Gamma}(v)$ is the speed distribution of the
fluxdensity, a vector quantity.
Since all
$\mathit{\Sigma}$ are independent of
$\mathit{\Omega}$ (only the difference
$\mathit{\Omega}\mathit{\Omega}\text{'}$ matters), the first (sink) term on the right of
eq. (
9.1)
becomes
${\mathit{\Sigma}}_{t}vF(v)$ and the second (source term) can be written
$Q(v)=\int [\mathit{\nu}{\mathit{\Sigma}}_{f}(v\text{'}\to v)+{\mathit{\Sigma}}_{s}(v\text{'}\to v)]v\text{'}F(v\text{'})\mathit{dv}\text{'},$ 
$(9.4)$

in terms of
${\mathit{\Sigma}}_{f}$ and
${\mathit{\Sigma}}_{s}$ integrated over direction.
The directionintegrated transport equation is then
$\frac{\partial F(v)}{\partial t}+\nabla .\mathit{\Gamma}(v)={\mathit{\Sigma}}_{t}\mathit{vF}(v)+Q(v),$ 
$(9.5)$

This equation becomes a diffusion equation if the fluxdensity is
proportional to the gradient of the density, an approximation usually
called Fick's law
.
Written in terms of
$F(v)$, this proportionality is
$\mathit{\Gamma}(v)=D\nabla F(v),$ 
$(9.6)$

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 speedresolved (or equivalently
energyresolved) diffusion
equation
$\frac{\partial F(v)}{\partial t}\nabla .[D\nabla F(v)]={\mathit{\Sigma}}_{t}vF(v)+Q(v).$ 
$(9.7)$

The lowestorder anisotropy of
$f(\mathit{v})$ is contained in
$\mathit{\Gamma}=D\nabla F(v)$, but the collision terms in this approximation are
independent of any anisotropy. The equation applies for all values of
the speed,
$v$.
9.3 Numerical Representation of Multigroup Equations
We've made substantial progress in making the transport equation more
managable, lowering its dimensionality from six phasespace 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}_{g1/2}\le v<{v}_{g+1/2}$. The
halfintegerindex 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}_{g1/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(v)$ 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 .[{D}_{g}\nabla {F}_{g}]+{\mathit{\Sigma}}_{\mathit{tg}}{v}_{g}{F}_{g}={Q}_{g}.$ 
$(9.8)$

Since
$Q$ depends linearly on the
${F}_{g}$, through the integrals
$\int v\text{'}F(v\text{'})\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}+(\mathbf{L}+{\mathit{\Sigma}}_{t}\mathbf{V})\mathbf{F}=\mathbf{Q}=\mathbf{A}\mathbf{F}.$ 
$(9.9)$

The
${N}_{G}\times {N}_{G}$ matrices
$\mathbf{L}$,
${\mathit{\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
${\mathit{\Sigma}}_{t}$ and
$\mathbf{A}$ can be calculated at any
position
$\mathit{x}$ by performing appropriate integrals over speed
$v$
and then sums over different nuclear species. These require extensive
information about the crosssections 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.
Nonuniform 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}\times {N}_{2}$ or three dimensional
${N}_{S}={N}_{1}\times {N}_{2}\times {N}_{3}$. At each of the
${N}_{S}$ spatial elements there are
${N}_{G}$ groups,
each of which has a speeddistribution component
${F}_{g}$. So there are a
total of
${N}_{S}\times {N}_{G}$ ${F}_{g}(\mathit{x})$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
meanfreepath. 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.$ 
$(9.10)$

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 crosssection).
9.3.2 Steady State Eigenvalue
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 nontrivial steady solution, representing
a steadily operating reactor, to the multigroup diffusion equations
is:
$det(\mathbf{L}\mathit{\Sigma}\mathbf{V}+\mathbf{A})=0.$ 
$(9.11)$

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(v)$ arose from two
terms: scattering and fission. Write them separately as
${\mathit{\Sigma}}_{s}\mathbf{V}\mathbf{F}$ and
$\mathit{\nu}{\mathit{\Sigma}}_{f}\mathbf{V}\mathbf{F}$
respectively, where the diagonal matrix
$\mathit{\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}={\mathit{\Sigma}}_{s}\mathbf{V}\mathbf{F}+\frac{1}{k}\mathit{\nu}{\mathit{\Sigma}}_{f}\mathbf{V}\mathbf{F}$ 
$(9.12)$

Then the steady diffusion equation becomes a (generalized) eigenvalue problem:
$[(\mathbf{L}+{\mathit{\Sigma}}_{t}\mathbf{V}{\mathit{\Sigma}}_{s}\mathbf{V})\frac{1}{k}\mathit{\nu}{\mathit{\Sigma}}_{f}\mathbf{V}]\mathbf{F}=0.$ 
$(9.13)$

which can also be written in terms of neutron flux
$\mathit{\Phi}\equiv \mathbf{V}\mathbf{F}$ as
$[(\mathbf{L}{\mathbf{V}}^{1}+{\mathit{\Sigma}}_{t}{\mathit{\Sigma}}_{s})\frac{1}{k}\mathit{\nu}{\mathit{\Sigma}}_{f}]\mathit{\Phi}=0,$ 
$(9.14)$

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 timedependent 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
${\mathit{\Sigma}}_{s}$ and
${\mathit{\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}\times {N}_{S}$ matrix of blocks
that are each
${N}_{G}\times {N}_{G}$ submatrices. The form is illustrated in
eq. (
9.15).
${\mathit{\Sigma}}_{s}=\left[\begin{array}{ccccc}\hfill \begin{array}{ccccc}\hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill \\ \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill \\ \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill \\ \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill \\ \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill \end{array}\hfill & \hfill \hfill & \hfill \hfill & \hfill \hfill & \hfill \hfill \\ \hfill \hfill & \hfill \begin{array}{ccccc}\hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill \\ \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill \\ \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill \\ \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill \\ \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill \end{array}\hfill & \hfill \hfill & \hfill \hfill & \hfill \}\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 \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill \\ \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill \\ \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill \\ \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill \\ \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill \end{array}\hfill & \hfill \begin{array}{c}\hfill \text{Diagonal}\hfill \\ \hfill \text{Blocks}\hfill \\ \hfill \leftarrow \text{Filled}\hfill \\ \hfill \downarrow \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 \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill \\ \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill \\ \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill \\ \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill \\ \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill \end{array}\hfill & \hfill \hfill \\ \hfill \hfill & \hfill \hfill & \hfill \hfill & \hfill \hfill & \hfill \begin{array}{ccccc}\hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill \\ \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill \\ \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill \\ \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill \\ \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill & \hfill \u2022\hfill \end{array}\hfill \end{array}\right]\}{N}_{S}\text{blocks}.$ 
$(9.15)$

In respect of the
${N}_{S}\times {N}_{S}$ structure,
${\mathit{\Sigma}}_{s}$,
${\mathit{\Sigma}}_{f}$, and
${\mathit{\Sigma}}_{t}$ have diagonal arrangements of blocks. And
${\mathit{\Sigma}}_{t}$ is
diagonal even within its
${N}_{G}\times {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}+{\mathit{\Sigma}}_{t}\mathbf{V}{\mathit{\Sigma}}_{s}\mathbf{V}=\mathbf{M}$ and
$\mathit{\nu}{\mathit{\Sigma}}_{f}\mathbf{V}=\mathbf{G}$ for brevity, a typical
approach is to solve
$[\mathbf{M}\mathbf{G}/k]\mathbf{F}=0$ using the scheme
$\mathbf{M}{\mathbf{F}}^{(n+1)}=\frac{1}{{k}^{(n)}}\mathbf{G}{\mathbf{F}}^{(n)}.$ 
$(9.16)$

At each outer step,
$n$, an iterative solver
${}^{57}$ is
used to find
${\mathbf{F}}^{(n+1)}$ given
${\mathbf{F}}^{(n)}$ (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}^{(n+1)}=\frac{(\mathbf{G}{\mathbf{F}}^{(n+1)}{)}^{T}\mathbf{G}{\mathbf{F}}^{(n+1)}}{(\mathbf{G}{\mathbf{F}}^{(n+1)}{)}^{T}\mathbf{M}{\mathbf{F}}^{(n+1)}},$ 
$(9.17)$

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 materialinteraction properties are
uniform over the cuboid
$0<x<{L}_{x}$,
$0<y<{L}_{y}$,
$0<z<{L}_{z}$, with neutron
density
$F(v)=0$ on the boundaries. The nonzero 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 
$({\mathit{\Sigma}}_{t}{\mathit{\Sigma}}_{s}{)}_{\mathit{gg}}$  6.4  9.5  12 
$({\mathit{\Sigma}}_{s}{)}_{g+1,g}$  6.0  6.5  0 
$(\mathit{\nu}{\mathit{\Sigma}}_{f}{)}_{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{\hspace{1em}\hspace{1em}\hspace{1em}}{\mathit{\Sigma}}_{t}{\mathit{\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{\hspace{1em}\hspace{1em}\hspace{1em}}\mathit{\nu}{\mathit{\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}.$ 
$(9.18)$

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
materialinteraction 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
velocitydependence and spatialdependence of the eigenmodes become
separable, giving rise to a distribution
function of the form
$F(\mathit{x},v)=h(\mathit{x})\mathit{\Phi}(v)/v,$ 
$(9.19)$

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(v)\mathit{\Phi}(v)}[{\mathit{\Sigma}}_{t}\mathit{\Phi}(v)+{Q}^{(k)}(v)].$ 
$(9.20)$

where
${B}^{2}$ is the separation
constant
${}^{60}$; independent of both
$\mathit{x}$ and
$v$.
${Q}^{(k)}$ 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(\mathit{x})=\mathrm{sin}(\mathit{\pi}{n}_{x}x/{L}_{x})\mathrm{sin}(\mathit{\pi}{n}_{y}y/{L}_{y})\mathrm{sin}(\mathit{\pi}{n}_{z}z/{L}_{z}),$ 
$(9.21)$

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}.$ 
$(9.22)$

When we know
${B}^{2}$, the velocitydistribution eigenmode is then the solution of
$\begin{array}{cc}\hfill 0=& \mathrm{\hspace{0.5em}\hspace{0.5em}}{B}^{2}(D(v)/v)\mathit{\Phi}(v)+{\mathit{\Sigma}}_{t}\mathit{\Phi}(v){Q}^{(k)}(v)\hfill \\ \hfill =& \mathrm{\hspace{0.5em}\hspace{0.5em}}({B}^{2}\mathbf{D}{\mathbf{V}}^{1}+{\mathit{\Sigma}}_{t}{\mathit{\Sigma}}_{s}\frac{1}{k}\mathit{\nu}{\mathit{\Sigma}}_{f})\mathit{\Phi},\hfill \end{array}$ 
$(9.23)$

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
$[{\mathit{\Sigma}}_{t}{\mathit{\Sigma}}_{s}]\mathit{\Phi}=\frac{1}{k}[\mathit{\nu}{\mathit{\Sigma}}_{f}]\mathit{\Phi}=0$. Because of the special form of the
matrices, one can quickly solve the equations by hand. They become
${\mathit{\Phi}}_{2}=(12/6.5){\mathit{\Phi}}_{3}$,
${\mathit{\Phi}}_{1}=(9.5/6.0){\mathit{\Phi}}_{2}$ and
$6.4{\mathit{\Phi}}_{1}\frac{1}{k}[0.9{\mathit{\Phi}}_{1}+1.8{\mathit{\Phi}}_{2}+18{\mathit{\Phi}}_{3}]=0$. Choosing to
set
${\mathit{\Phi}}_{1}=1$, the eigenmode is then
${\mathit{\Phi}}^{T}=(1,0.632,0.342)$, and
the eigenvalue is
${k}_{\mathit{\infty}}=k=(0.9+1.8\times 0.632+18\times 0.342)/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 nonsingular. 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
${\mathit{\Sigma}}_{t}{\mathit{\Sigma}}_{s}$. This
does not change any of the zeroes, it just changes its diagonal
entries somewhat, to
$(6.84,9.69,12.1)$. Reevaluating the result we
obtain eigenmode
${\mathit{\Phi}}^{T}=(1,0.619,0.333)$, 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 shorterscale 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 onegroup representation of neutron transport in a
slab, onedimensional, reactor of length
$2L$. The reactor has uniform
material properties; so that the steady diffusion equation becomes
$D{\nabla}^{2}F+({\mathit{\Sigma}}_{t}S)F\frac{1}{k}GF=0$

where the diffusion coefficient (divided by velocity)
$D$, the total attenuation
"macroscopic crosssection"
${\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=\pm L$ are that the neutron density satisfy
$F=2D\hat{\mathbf{n}}.\nabla F=\mp 2D\frac{\partial F}{\partial x}$

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

And write out the matrix
$\mathbf{M}$ explicitly for the case
${N}_{x}=5$ (so
$\mathbf{M}$ is 5
$\times $5), carefully considering the incorporation of
the finitedifference 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
$\times $3 eigenvalue equation
$[\mathbf{M}\text{'}G/k]\mathit{F}=0$, where
$\mathbf{M}\text{'}$ is the 3
$\times $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
$[\mathbf{M}\mathit{\lambda}]\mathit{\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$.]