OpenMC/docs/source/methods/physics.rst

838 lines
33 KiB
ReStructuredText

.. _methods_physics:
=======
Physics
=======
-----------------------------------------
Secondary Angles and Energy Distributions
-----------------------------------------
For any reactions with secondary neutrons, it is necessary to sample secondary
angle and energy distributions. This includes elastic and inelastic scattering,
fission, and (n,xn) reactions. In some cases, the distributions may be specified
separately, and in other cases, they may be specified as a correlated
angle-energy distribution. In this section, we will outline the methods used to
sample secondary distributions as well as how they are used to modify the state
of a particle.
.. _sample-angle:
Sampling Secondary Angle Distributions
--------------------------------------
For elastic scattering, it is only necessary to specific a secondary angle
distribution since the outgoing energy can be determined analytically. Other
reactions may also have separate secondary angle and secondary energy
distributions that are uncorrelated. In these cases, the secondary angle
distribution is represented as either
- An Isotropic angular distribution,
- An equiprobable distribution with 32 bins, or
- A tabular distribution.
Isotropic Angular Distribution
++++++++++++++++++++++++++++++
In the first case, no data needs to be stored on the ACE table, and the cosine
of the scattering angle is simply calculated as
.. math::
:label: isotropic-angle
\mu = 2\xi - 1
where :math:`\xi` is a random number sampled uniformly on :math:`[0,1)`.
Equiprobable Bin Distribution
+++++++++++++++++++++++++++++
For a 32 equiprobable bin distribution, the procedure to determine the
scattering cosine is as follows. First, we select a random number :math:`\xi` to
sample a cosine bin :math:`i` such that
.. math::
:label: equiprobable-bin
i = 1 + \lfloor 32\xi \rfloor
The same random number can then also be used to interpolate between neighboring
:math:`\mu` values to get the final scattering cosine:
.. math::
:label: equiprobable-cosine
\mu = \mu_i + (32\xi - i) (\mu_{i+1} - \mu_i)
Tabular Distribution
++++++++++++++++++++
As the MCNP Manual points out, using an equiprobable bin distribution works well
for high-probability regions of the scattering cosine probability, but for
low-probability regions it is not very accurate. Thus, a more typical treatment
is to represent the scattering cosine with a tabular distribution. In this case,
we have a table of cosines and their corresponding values for a probability
distributions function and cumulative distribution function. For each incoming
neutron energy :math:`E_i`, let us call :math:`p_{i,j}` the j-th value in the
probability distribution function and :math:`c_i,j` the j-th value in the
cumulative distribution function. We first find the interpolation factor on the
incoming energy grid:
.. math::
:label: interpolation-factor
f = \frac{E - E_i}{E_{i+1} - E_i}
Then, statistical interpolation is performed to choose between using the cosines
and distribution functions corresponding to energy :math:`E_i` or
:math:`E_{i+1}`. Let :math:`\ell` be the chosen table where :math:`\ell = i` if
:math:`\xi > f` and :math:`\ell = i + 1` otherwise where :math:`\xi` is a random
number. A different random number is used to sample a scattering cosine bin
:math:`j` using the cumulative distribution function:
.. math::
:label: sample-cdf
c_{l,j} < \xi < c_{l,j+1}
The final scattering cosine will depend on whether histogram or linear-linear
interpolation is used. In general, we can write the cumulative distribution
function as
.. math::
:label: cdf
c(\mu) = \int_{-1}^\mu p(\mu') d\mu'
where :math:`c(\mu)` is the cumulative distribution function and :math:`p(\mu)`
is the probability distribution function. Since we know that :math:`c(\mu_{l,k})
= c_{l,k}`, this implies that for :math:`\mu > \mu_{l,k}`,
.. math::
:label: cdf-2
c(\mu) = c_{l,k} + \int_{\mu_{l,k}}^{\mu} p(\mu') d\mu'
For histogram interpolation, we have that :math:`p(\mu') = p_{l,k}`. Thus,
after integration we have that
.. math::
:label: cumulative-dist-histogram
c(\mu) = c_{l,k} + (\mu - \mu_{l,k}) p_{l,k} = \xi
Solving for the scattering cosine, we obtain the final form for histogram
interpolation:
.. math::
:label: cosine-histogram
\mu = \mu_{l,k} + \frac{\xi - c_{l,k}}{p_{l,k}}
For linear-linear interpolation, we represent the function :math:`p(\mu')` as a
first-order polynomial in :math:`\mu'`. If we interpolate between successive
values on the probability distribution function, we know that
.. math::
:label: pdf-interpolation
p(\mu') - p_{l,k} = \frac{p_{l,k+1} - p_{l,k}}{\mu_{l,k+1} - \mu_{l,k}}
(\mu' - \mu_{l,k})
Solving for :math:`p(\mu')` in equation :eq:`pdf-interpolation` and inserting it
into equation :eq:`cdf-2`, we obtain
.. math::
:label: cdf-linlin
c(\mu) = c_{l,k} + \int_{\mu_{l,k}}^{\mu} \left [ \frac{p_{l,k+1} -
p_{l,k}}{\mu_{l,k+1} - \mu_{l,k}} (\mu' - \mu_{l,k}) + p_{l,k} \right ]
d\mu'
Let us now make a change of variables using
.. math::
:label: introduce-eta
\eta = \frac{p_{l,k+1} - p_{l,k}}{\mu_{l,k+1} - \mu_{l,k}}
(\mu' - \mu_{l,k})
Equation :eq:`cdf-linlin` then becomes
.. math::
:label: cdf-linlin-eta
c(\mu) = c_{l,k} + \frac{1}{m} \int_{p_{l,k}}^{m(\mu - \mu_{l,k}) + p_{l,k}}
\eta \, d\eta
where we have used
.. math::
:label: slope
m = \frac{p_{l,k+1} - p_{l,k}}{\mu_{l,k+1} - \mu_{l,k}}
Integrating equation :eq:`cdf-linlin-eta`, we have
.. math::
:label: cdf-linlin-integrated
c(\mu) = c_{l,k} + \frac{1}{2m} \left ( \left [ m (\mu - \mu_{l,k} ) +
p_{l,k} \right ]^2 - p_{l,k}^2 \right ) = \xi
Solving for :math:`\mu`, we have the final form for the scattering cosine using
linear-linear interpolation:
.. math::
:label: cosine-linlin
\mu = \mu_{l,k} + \frac{1}{m} \left ( \sqrt{p_{l,k}^2 + 2 m (\xi - c_{l,k}
)} - p_{l,k} \right )
.. _sample-energy:
Sampling Secondary Energy and Correlated Angle/Energy Distributions
-------------------------------------------------------------------
For a reaction with secondary neutrons, it is necessary to determine the
outgoing energy of the neutrons. For anything other than elastic scattering, the
outgoing energy must be determined based on tabulated or parameterized data. The
`ENDF-6 Format`_ specifies a variety of ways that the secondary energy
distribution can be represented. ENDF File 5 contains uncorrelated energy
distribution where ENDF File 6 contains correlated energy-angle
distributions. The ACE format specifies its own representations based loosely on
the formats given in ENDF-6. In this section, we will describe how the outgoing
energy of secondary particles is determined based on each ACE law.
One of the subtleties in the ACE format is the fact that a single reaction can
have multiple secondary energy distributions. This is mainly useful for
reactions with multiple neutrons in the exit channel such as (n,2n) or
(n,3n). In these types of reactions, each neutron is emitted corresponding to a
different excitation level of the compound nucleus, and thus in general the
neutrons will originate from different energy distributions. The first step in
sampling a secondary energy is to sample between multiple energy distributions
if more than one is present.
Once a secondary energy distribution has been sampled, the procedure for
determining the outgoing energy will depend on which ACE law has been specified
for the data.
ACE Law 1 - Tabular Equiprobable Energy Bins
++++++++++++++++++++++++++++++++++++++++++++
ACE Law 3 - Inelastic Level Scattering
++++++++++++++++++++++++++++++++++++++
It can be shown [Foderaro]_ that in inelastic level scattering, the outgoing
energy of the neutron :math:`E'` can be related to the Q-value of the reaction
and the incoming energy:
.. math::
:label: level-scattering
E' = \left ( \frac{A}{A+1} \right )^2 \left ( E - \frac{A + 1}{A} Q \right )
where :math:`A` is the mass of the target nucleus measured in neutron masses.
ACE Law 4 - Continuous Tabular Distribution
+++++++++++++++++++++++++++++++++++++++++++
ACE Law 7 - Maxwell Fission Spectrum
++++++++++++++++++++++++++++++++++++
One representation of the secondary energies for neutrons from fission is the
so-called Maxwell spectrum. A probability distribution for the Maxwell spectrum
can be written in the form
.. math::
:label: maxwell-spectrum
p(E') dE' = c E'^{1/2} e^{-E'/T(E)} dE'
where :math:`E` is the incoming energy of the neutron and :math:`T` is the
so-called nuclear temperature, which is a function of the incoming energy of the
neutron. The ACE format contains a list of nuclear temperatures versus incoming
energies. The nuclear temperature is interpolated between neighboring incoming
energies using a specified interpolation law. Once the temperature :math:`T` is
determined, we then calculate a candidate outgoing energy based on rule C64 in
the `Monte Carlo Sampler`_:
.. math::
:label: maxwell-E-candidate
E' = -T \left [ \log (\xi_1) + \log (\xi_2) \cos^2 \left ( \frac{\pi
\xi_3}{2} \right ) \right ]
where :math:`\xi_1, \xi_2, \xi_3` are random numbers sampled on the unit
interval. The outgoing energy is only accepted if
.. math::
:label: maxwell-restriction
0 \le E' \le E - U
where :math:`U` is called the restriction energy and is specified on the ACE
table. If the outgoing energy is rejected, it is resampled using equation
:eq:`maxwell-E-candidate`.
ACE Law 9 - Evaporation Spectrum
++++++++++++++++++++++++++++++++
Evaporation spectra are primarily used in compound nucleus processes where a
secondary particle can "evaporate" from the compound nucleus if it has
sufficient energy. The probability distribution for an evaporation spectrum can
be written in the form
.. math::
:label: evaporation-spectrum
p(E') dE' = c E' e^{-E'/T(E)} dE'
where :math:`E` is the incoming energy of the neutron and :math:`T` is the
nuclear temperature, which is a function of the incoming energy of the
neutron. The ACE format contains a list of nuclear temperatures versus incoming
energies. The nuclear temperature is interpolated between neighboring incoming
energies using a specified interpolation law. Once the temperature :math:`T` is
determined, we then calculate a candidate outgoing energy based on rule C45 in
the `Monte Carlo Sampler`_:
.. math::
:label: evaporation-E
E' = -T \log (\xi_1 \xi_2)
where :math:`\xi_1, \xi_2` are random numbers sampled on the unit
interval. The outgoing energy is only accepted according to a specified
restriction energy as in equation :eq:`maxwell-restriction`.
ACE Law 11 - Energy-Dependent Watt Spectrum
+++++++++++++++++++++++++++++++++++++++++++
ACE Law 44 - Kalbach-Mann Correlated Scattering
+++++++++++++++++++++++++++++++++++++++++++++++
ACE Law 61 - Correlated Energy and Angle Distribution
+++++++++++++++++++++++++++++++++++++++++++++++++++++
ACE Law 66 - N-Body Phase Space Distribution
++++++++++++++++++++++++++++++++++++++++++++
.. _rotate-angle:
Transforming a Particle's Coordinates
-------------------------------------
Once the cosine of the scattering angle :math:`\mu` has been sampled either from
a angle distribution or a correlated angle-energy distribution, we are still
left with the task of transforming the particle's coordinates. The scattering
cosine that we sampled only tells us the cosine of the angle between the
original direction of the particle and the new direction of the particle. If we
express the pre-collision direction of the particle as :math:`\mathbf{\Omega} =
(u,v,w)` and the post-collision direction of the particle as
:math:`\mathbf{\Omega}' = (u',v',w')`, it is possible to relate the pre- and
post-collision components. We first need to uniformly sample an azimuthal angle
:math:`\phi` in :math:`[0, 2\pi)`. After the azimuthal angle has been sampled,
the post-collision direction is calculated as
.. math::
:label: post-collision-angle
u' = \mu u + \frac{\sqrt{1 - \mu^2} ( uw \cos\phi - v \sin\phi )}{\sqrt{1 -
w^2}} \\
v' = \mu v + \frac{\sqrt{1 - \mu^2} ( vw \cos\phi + u \sin\phi )}{\sqrt{1 -
w^2}} \\
w' = \mu w - \sqrt{1 - \mu^2} \sqrt{1 - w^2} \cos\phi
------------------
Elastic Scattering
------------------
Elastic scattering refers to the process by which a neutron scatters off a
nucleus and does not leave it in an excited. It is referred to as "elastic"
because in the center-of-mass system, the neutron does not actually lose
energy. However, in lab coordinates, the neutron does indeed lose
energy. Elastic scattering can be treated exactly in a Monte Carlo code thanks
to its simplicity.
Let us discuss how OpenMC handles two-body elastic scattering kinematics. The
first step is to determine whether the target nucleus has any associated
motion. Above a certain energy threshold (400 kT by default), all scattering is
assumed to take place with the target at rest. Below this threshold though, we
must account for the thermal motion of the target nucleus. Methods to sample the
velocity of the target nucleus are described later in section
:ref:`freegas`. For the time being, let us assume that we have sampled the
target velocity :math:`v_t`. The velocity of the center-of-mass system is
calculated as
.. math::
:label: velocity-com
\mathbf{v}_{cm} = \frac{\mathbf{v}_n + A \mathbf{v}_t}{A + 1}
where :math:`\mathbf{v}_n` is the velocity of the neutron and :math:`A` is the
atomic mass of the target nucleus measured in neutron masses (commonly referred
to as the atomic weight ratio). With the velocity of the center-of-mass
calculated, we can then determine the neutron's velocity in the center-of-mass
system:
.. math::
:label: velocity-neutron-com
\mathbf{V}_n = \mathbf{v}_n - \mathbf{v}_{cm}
where we have used uppercase :math:`\mathbf{V}` to denote the center-of-mass
system. The direction of the neutron in the center-of-mass system is
.. math::
:label: angle-neutron-com
\mathbf{\Omega}_n = \frac{\mathbf{V}_n}{|| \mathbf{V}_n ||}
At low energies, elastic scattering will be isotropic in the center-of-mass
system, but for higher energies, there may be p-wave and higher order scattering
that leads to anisotropic scattering. Thus, in general, we need to sample a
cosine of the scattering angle which we will refer to as :math:`\mu`. For
elastic scattering, the secondary angle distribution is always given in the
center-of-mass system and is sampled according to the procedure outlined in
:ref:`sample-angle`. After the cosine of the angle of scattering has been
sampled, we need to determine the neutron's new direction
:math:`\mathbf{\Omega}'_n` in the center-of-mass system. This is done with the
procedure in :ref:`rotate-angle`. The new direction is multiplied by the speed
of the neutron in the center-of-mass system to obtain the new velocity vector in
the center-of-mass:
.. math::
:label: velocity-neutron-com-2
\mathbf{V}'_n = || \mathbf{V}_n || \mathbf{\Omega}'_n.
Finally, we transform the velocity in the center-of-mass system back to lab
coordinates:
.. math::
:label: velocity-neutron-lab
\mathbf{v}'_n = \mathbf{V}'_n + \mathbf{v}_{cm}
In OpenMC, the angle and energy of the neutron are stored rather than the
velocity vector itself, so the post-collision angle and energy can be inferred
from the post-collision velocity of the neutron in the lab system.
For tally purposes, it is also important to keep track of the scattering cosine
in the lab system. If we know the scattering cosine in the center-of-mass, the
scattering cosine in the lab system can be calculated as
.. math::
:label: cosine-lab
\mu_{lab} = \frac{1 + A\mu}{\sqrt{A^2 + 2A\mu + 1}}.
However, this formula is only valid if the target was at rest. When the target
nucleus does have thermal motion, the cosine of the scattering angle can be
determined by simply taking the dot product of the neutron's initial and final
direction in the lab system.
.. _freegas:
------------------------------------------
Effect of Thermal Motion on Cross-Sections
------------------------------------------
When a neutron scatters off of a nucleus, many times it is assumed that the
target nucleus is at rest. However, if the material is at a temperature greater
than 0 K, it will have motion associated with the thermal vibration. Thus, the
velocity of the neutron relative to the target nucleus is in general not the
same as the velocity of the neutron entering the collision.
The affect of the thermal motion on the interaction probability can be written
as
.. math::
:label: freegas1
v_n \sigma (v_n, T) = \int_0^\infty d\mathbf{v}_T \sigma(v_r, 0)
\mathbf{v}_r p(\mathbf{v}_T)
where :math:`v_n` is the magnitude of the velocity of the neutron,
:math:`\mathbf{v}_T` is the velocity of the target nucleus, :math:`\mathbf{v}_r`
is the relative velocity, and :math:`T` is the temperature of the target
material. In a Monte Carlo code, one must account for the effect of the thermal
motion on both the integrated cross-section as well as secondary angle and
energy distributions. For integrated cross-sections, it is possible to calculate
thermally-averaged cross-sections by applying a kernel Doppler broadening
algorithm to data at 0 K (or some temperature lower than the desired
temperature). The most ubiquitous algorithm for this purpose is the [SIGMA1]_
method developed by Red Cullen and subsequently refined by others. This method
is used in the NJOY_ and PREPRO_ data processing codes.
The effect of thermal motion on secondary angle and energy distributions can be
accounted for on-the-fly in a Monte Carlo simulation. We must first qualify
where it is actually used however. All threshold reactions are treated as being
independent of temperature, and therefore they are not Doppler broadened in NJOY
and no special procedure is used to adjust the secondary angle and energy
distributions. The only non-threshold reactions with secondary neutrons are
elastic scattering and fission. For fission, it is assumed that neutrons are
emitted isotropically (this is not strictly true, but is nevertheless a good
approximation). This leaves only elastic scattering that needs a special thermal
treatment for secondary distributions.
Fortunately, it is possible to directly sample the velocity of the target
nuclide and then use it directly in the kinematic calculations. However, this
calculation is a bit more nuanced than it might seem at first glance. One might
be tempted to simply sample a Maxwellian distribution for the velocity of the
target nuclide. Careful inspection of equation :eq:`freegas1` however tells us
that target velocities that produce relative velocities which correspond to high
cross sections will have a greater contribution to the effective reaction
rate. This is most important when the velocity of the incoming neutron is close
to a resonance. For example, if the neutron's velocity corresponds to a trough
in a resonance elastic scattering cross-section, a very small target velocity
can cause the relative velocity to correspond to the peak of the resonance, thus
making a disproportionate contribution to the reaction rate. The conclusion is
that if we are to sample a target velocity in the Monte Carlo code, it must be
done in such a way that preserves the thermally-averaged reaction rate as per
equation :eq:`freegas`.
The method by which most Monte Carlo codes sample the target velocity for use in
elastic scattering kinematics is outlined in detail by [Gelbard]_. The
derivation here largely follows that of Gelbard. The first assumption we can
make is that the velocity distribution for the thermal motion is isotropic, i.e.
.. math::
:label: freegas2
p(\mathbf{v}_T) d\mathbf{v}_T = \frac{1}{4\pi} p(v_T) dv_T d\mu d\phi
With this assumption, we can now rewrite equation :eq:`freegas1` as
.. math::
:label: freegas3
v_n \sigma (v_n, T) = \frac{1}{2} \int_{-1}^1 d\mu \int\limits_{v_r > 0}
dv_T v_r \sigma (v_r, 0) p(v_T)
after integrating over :math:`d\phi`. To change the outer variable of
integration from :math:`\mu` to :math:`v_r`, we can establish a relation between
these variables based on the law of cosines.
.. math::
:label: lawcosine
2 v_n v_T \mu = v_n^2 + v_T^2 - v_r^2
The probability distribution for the magnitude of the velocity of the target
nucleus and the angle between the neutron and target velocity is
.. math::
:label: freegas4
P(v_T, \mu) = \frac{\sigma (v_r, 0) v_r P(v_T)}{2 \sigma (v_n, T) v_n}
It is normally assumed that :math:`\sigma (v_r, 0)` is constant over the range
of relative velocities of interest. This is a good assumption for almost all
cases since the elastic scattering cross section varies slowly with velocity for
light nuclei, and for heavy nuclei where large variations can occur due to
resonance scattering, the moderating effect is rather small. Nonetheless, this
assumption can cause incorrect answers in systems with U-238 where the low-lying
resonances can cause a significant amount of up-scatter that would be ignored by
this assumption.
With this (sometimes incorrect) assumption, we see that the probability
distribution is proportional to
.. math::
:label: freegas5
P(v_T, \mu) \propto v_r P(v_T) = | v_n - v_T | P(v_T)
We can divide this probability distribution into two parts as such:
.. math::
:label: freegas6
P(v_T, \mu) &= f_1(v_T, \mu) f_2(v_T) \\
f_1(v_T, \mu) &= \frac{| v_n - v_T |}{C (v_n + v_T)} \\
f_2(v_T) &= (v_n + v_T) P(v_T)
where :math:`C = \int dv_T \sigma v_r P(v_T)`. In general, any probability
distribution function of the form :math:`p(x) = f_1(x) f_2(x)` with
:math:`f_1(x)` bounded can be sampled by sampling :math:`x_s` from the
distribution
.. math::
:label: freegas7
\frac{f_2(x)}{\int f_2(x) dx}
and accepting it with probability
.. math::
:label: freegas8
\frac{f_1(x_s)}{\max f_1(x)}
It is normally assumed that the velocity distribution of the target nucleus
assumes a Maxwellian distribution in velocity.
------------
|sab| Tables
------------
For neutrons with thermal energies, generally less than 4 eV, the kinematics of
scattering can be affected by chemical binding and crystalline effects of the
target molecule. If these effects are not accounted for in a simulation, the
reported results may be highly inaccurate. There is no general analytic
treatment for the scattering kinematics at low energies, and thus when nuclear
data is processed for use in a Monte Carlo code, special tables are created that
give altered cross-sections and secondary angle/energy distributions for thermal
scattering. These tables are mainly used for moderating materials such as light
or heavy water, graphite, hydrogen in ZrH, beryllium, etc.
The theory behind |sab| is rooted in quantum mechanics and is quite
complex. Those interested in first principles derivations for formulae relating
to |sab| tables should be referred to the excellent books by [Williams]_ and
[Squires]_. For our purposes here, we will focus only on the use of already
processed data as it appears in the ACE format.
Each |sab| table can contain the following:
- Thermal inelastic scattering cross section
- Thermal elastic scattering cross section
- Correlated energy-angle distributions for thermal inelastic and elastic
scattering
Note that when we refer to "inelastic" and "elastic" scattering now, we are
actually using these terms with respect to the *scattering system*. Thermal
inelastic scattering means that the scattering system is left in an excited
state, not any particular nucleus as is the case in inelastic level
scattering. In a crystalline material, the excitation could be the production of
phonons. In a molecule, it could be the excitation of rotational or vibrational
modes.
Both thermal elastic and thermal inelastic scattering are generally divided into
incoherent and coherent parts. Coherent elastic scattering refers to scattering
in crystalline solids like graphite or beryllium. These cross-sections are
characterized by the presence of "Bragg edges" that relate to the crystal
structure of the scattering material. Incoherent elastic scattering refers to
scattering in hydrogenous solids such as polyethylene. As it occurs in ACE data,
thermal inelastic scattering includes both coherent and incoherent effects and
is dominant for most other materials including hydrogen in water.
Calculating Integrated Cross Sections
-------------------------------------
The first aspect of using |sab| tables is calculating cross-sections to replace
the data that would normally appear on the incident neutron data, which do not
account for thermal binding effects. For incoherent elastic and inelastic
scattering, the cross-sections are stored as linearly interpolable functions on
a specified energy grid. For coherent elastic data, the cross section can be
expressed as
.. math::
:label: coherent-elastic-xs
\sigma(E) = \frac{\sigma_c}{E} \sum_{E_i < E} f_i e^{-4WE_i}.
where :math:`\sigma_c` is the effective bound coherent scattering cross section,
:math:`W` is the effective Debye-Waller coefficient, :math:`E_i` are the
energies of the Bragg edges, and :math:`f_i` are related to crystallographic
structure factors. Since the functional form of the cross-section is just 1/E
and the proportionality constant changes only at Bragg edges, the
proportionality constants are stored and then the cross-section can be
calculated analytically based on equation :eq:`coherent-elastic-xs`.
Outgoing Angle for Coherent Elastic Scattering
----------------------------------------------
The other aspect of using |sab| tables is determining the outgoing energy and
angle of the neutron after scattering. For incoherent and coherent elastic
scattering, the energy of the neutron does not actually change, but the angle
does change. For coherent elastic scattering, the angle will depend on which
Bragg edge scattered the neutron. The probability that edge :math:`i` will
scatter then neutron is given by
.. math::
:label: coherent-elastic-probability
\frac{f_i e^{-4WE_i}}{\sum_j f_j e^{-4WE_j}}.
After a Bragg edge has been sampled, the cosine of the angle of scattering is
given analytically by
.. math::
:label: coherent-elastic-angle
\mu = 1 - \frac{E_i}{E}
where :math:`E_i` is the energy of the Bragg edge that scattered the neutron.
Outgoing Angle for Incoherent Elastic Scattering
------------------------------------------------
For incoherent elastic scattering, the probability distribution for the cosine
of the angle of scattering is represent as a series of equally-likely discrete
cosines :math:`\mu_{i,j}` for each incoming energy :math:`E_i` on the thermal
elastic energy grid. First the outgoing angle bin :math:`j` is sampled. Then, if
the incoming energy of the neutron satisfies :math:`E_i < E < E_{i+1}` the final
cosine is
.. math::
:label: incoherent-elastic-angle
\mu = \mu_{i,j} + f (\mu_{i+1,j} - \mu_{i,j})
where the interpolation factor is defined as
.. math::
:label: sab-interpolation-factor
f = \frac{E - E_i}{E_{i+1} - E_i}.
Outgoing Energy and Angle for Inelastic Scattering
--------------------------------------------------
On each |sab| table, there is a correlated angle-energy secondary distribution
for neutron thermal inelastic scattering. While the documentation for the ACE
format implies that there are a series of equiprobable outgoing energies, the
outgoing energies may have non-uniform probability distribution. In particular,
if the thermal data were processed with :math:`iwt = 0` in NJOY, then the first
and last outgoing energies have a relative probability of 1, the second and
second to last energies have a relative probability of 4, and all other energies
have a relative probability of 10. The procedure to determine the outgoing
energy and angle is as such. First, the interpolation factor is determined from
equation :eq:`sab-interpolation-factor`. Then, an outgoing energy bin is sampled
either from a uniform distribution or from a skewed distribution as
discussed. The outgoing energy is then interpolated between values corresponding
to neighboring incoming energies:
.. math::
:label: inelastic-energy
E = E_{i,j} + f (E_{i+1,j} - E_{i,j})
where :math:`E_{i,j}` is the j-th outgoing energy corresponding to the i-th
incoming energy. For each combination of incoming and outgoing energies, there
is a series equiprobable outgoing cosines. An outgoing cosine bin is sampled
uniformly and then the final cosine is interpolated on the incoming energy grid:
.. math::
:label: inelastic-angle
\mu = \mu_{i,j,k} + f (\mu_{i+1,j,k} - \mu_{i,j,k})
where :math:`\mu_{i,j,k}` is the k-th outgoing cosine corresponding to the j-th
outgoing energy and the i-th incoming energy.
----------------------------------------------
Unresolved Resonance Region Probability Tables
----------------------------------------------
In the unresolved resonance energy range, resonances may be so closely spaced
that it is not possible for experimental measurements to resolve all
resonances. To properly account for self-shielding in this energy range, OpenMC
uses the probability table method [Levitt]_. For most thermal reactors, the use
of probability tables will not significantly affect problem results. However,
for some fast reactors and other problems with an appreciable flux spectrum in
the unresolved resonance range, not using probability tables may lead to
incorrect results.
Probability tables in the ACE format are generated from the UNRESR module in
NJOY following the method of Levitt. A similar method employed for the RACER and
MC21_ Monte Carlo codes is described in a paper by `Sutton and Brown`_. For the
discussion here, we will focus only on use of the probability table table as it
appears in the ACE format.
Each probability table for a nuclide contains the following information at a
number of incoming energies within the unresolved resonance range:
- Cumulative probabilities for cross section bands
- Total cross section (or factor) in each band
- Elastic scattering cross section (or factor) in each band
- Fission cross section (or factor) in each band
- :math:`(n,\gamma)` cross section (or factor) in each band
- Neutron heating number (or factor) in each band
It should be noted that unresolved resonance probability tables affect only
integrated cross sections and no extra data need be given for secondary
angle/energy distributions. Secondary distributions for elastic and inelastic
scattering would be specified whether or not probability tables were present.
The procedure for determining cross sections in the unresolved range using
probability tables is as follows. First, the bounding incoming energies are
determined, i.e. find :math:`i` such that :math:`E_i < E < E_{i+1}`. We then
sample a cross section band :math:`j` using the cumulative probabilities for
table :math:`i`. This allows us to then calculate the elastic, fission, and
capture cross-sections from the probability tables interpolating between
neighboring incoming energies. If interpolation is specified, then
the cross sections are calculated as
.. math::
:label: ptables-linlin
\sigma = \sigma_{i,j} + f (\sigma_{i+1,j} - \sigma{i,j})
where :math:`f` is the interpolation factor defined in the same manner as
:eq:`sab-interpolation-factor`. If logarithmic interpolation is specified, the
cross sections are calculated as
.. math::
:label: ptables-loglog
\sigma = \exp \left ( \log \sigma_{i,j} + f \log
\frac{\sigma_{i+1,j}}{\sigma_{i,j}} \right )
where the interpolation factor is now defined as
.. math::
:label: log-interpolation-factor
f = \frac{\log \frac{E}{E_i}}{\log \frac{E_{i+1}}{E_i}}
A flag is also present in the probability table that specifies whether an
inelastic cross section should be calculated. If so, this is done from a normal
reaction cross section (either MT=51 or a special MT). Finally, if the
cross-sections defined are above are specified to be factors and not true
cross-sections, they are multiplied by the underlying smooth cross section in
the unresolved range to get the actual cross sections. Lastly, the total cross
section is calculated as the sum of the elastic, fission, capture, and inelastic
cross sections.
.. [Foderaro] Anthony Foderaro, *The Elements of Neutron Interaction Theory*,
MIT Press, Cambridge, Massachusetts (1971).
.. [SIGMA1] Dermett E. Cullen and Charles R. Weisbin, "Exact Doppler Broadening
of Tabulated Cross Sections," *Nucl. Sci. Eng.*, **60**, pp. 199-229 (1976).
.. [Gelbard] Ely M. Gelbard, "Epithermal Scattering in VIM," FRA-TM-123, Argonne
National Laboratory (1979).
.. [Williams] M. M. R. Williams, *The Slowing Down and Thermalization of
Neutrons*, North-Holland Publishing Co., Amsterdam (1966). This book can be
obtained for free from the OECD_.
.. [Squires] G. L. Squires, *Introduction to the Theory of Thermal Neutron
Scattering*, Cambridge University Press (1978).
.. [Levitt] Leo B. Levitt, "The Probability Table Method for Treating Unresolved
Neutron Resonances in Monte Carlo Calculations," *Nucl. Sci. Eng.*, **49**,
pp. 450-457 (1972).
.. |sab| replace:: S(:math:`\alpha,\beta`)
.. _OECD: http://www.oecd-nea.org/dbprog/MMRW-BOOKS.html
.. _NJOY: http://t2.lanl.gov/codes.shtml
.. _PREPRO: http://www-nds.iaea.org/ndspub/endf/prepro/
.. _ENDF-6 Format: http://www-nds.iaea.org/ndspub/documents/endf/endf102/endf102.pdf
.. _Monte Carlo Sampler: https://laws.lanl.gov/vhosts/mcnp.lanl.gov/pdf_files/la-9721_3rdmcsampler.pdf
.. _MC21: http://www.osti.gov/bridge/servlets/purl/903083-HT5p1o/903083.pdf
.. _Sutton and Brown: http://www.osti.gov/bridge/product.biblio.jsp?osti_id=307911