mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-26 21:25:36 -04:00
Several fixes in documentation thanks to Bryan Herman.
This commit is contained in:
parent
1af7afe543
commit
dbce813b19
4 changed files with 29 additions and 26 deletions
|
|
@ -9,8 +9,8 @@ neutrons includes a fissionable material. Some common criticality calculations
|
|||
include the simulation of nuclear reactors, spent fuel pools, nuclear weapons,
|
||||
and other fissile systems. The term criticality calculation is also synonymous
|
||||
with the term eigenvalue calculation. The reason for this is that the transport
|
||||
equation becomes an eigenvalue value equation if a fissionable source is present
|
||||
since then the source of neutrons will depend on the flux of neutrons
|
||||
equation becomes an eigenvalue equation if a fissionable source is present since
|
||||
then the source of neutrons will depend on the flux of neutrons
|
||||
itself. Criticality simulations using Monte Carlo methods are becoming
|
||||
increasingly common with the advent of high-performance computing.
|
||||
|
||||
|
|
|
|||
|
|
@ -22,13 +22,15 @@ Let us take the example of a sphere centered at the point :math:`(x_0,y_0,z_0)`
|
|||
with radius :math:`R`. One would normally write the equation of the sphere as
|
||||
|
||||
.. math::
|
||||
:label: sphere-equation
|
||||
|
||||
(x - x_0)^2 + (y - y_0)^2 + (z - z_0)^2 = R^2
|
||||
|
||||
By subtracting the right-hand term from both sides of the equation, we can then
|
||||
write the surface equation:
|
||||
By subtracting the right-hand term from both sides of equation
|
||||
:eq:`sphere-equation`, we can then write the surface equation for the sphere:
|
||||
|
||||
.. math::
|
||||
:label: surface-equation-sphere
|
||||
|
||||
f(x,y,z) = (x - x_0)^2 + (y - y_0)^2 + (z - z_0)^2 - R^2 = 0
|
||||
|
||||
|
|
@ -97,20 +99,21 @@ direction :math:`u,v,w`. To find the distance :math:`d` to a surface
|
|||
|
||||
f(x + du, y + dv, z + dw) = 0
|
||||
|
||||
If no solutions to equation :eq:`dist-to-boundary-1` exists or the only
|
||||
solutions are complex, then the particle's direction of travel will not
|
||||
intersect the surface. If the solution to equation :eq:`dist-to-boundary-1` is
|
||||
negative, this means that the surface is "behind" the particle, i.e. if the
|
||||
particle continues traveling in its current direction, it will not hit the
|
||||
surface. The complete derivation for different types of surfaces used in OpenMC
|
||||
will be presented in the following sections.
|
||||
If no solutions to equation :eq:`dist-to-boundary-1` exist or the only solutions
|
||||
are complex, then the particle's direction of travel will not intersect the
|
||||
surface. If the solution to equation :eq:`dist-to-boundary-1` is negative, this
|
||||
means that the surface is "behind" the particle, i.e. if the particle continues
|
||||
traveling in its current direction, it will not hit the surface. The complete
|
||||
derivation for different types of surfaces used in OpenMC will be presented in
|
||||
the following sections.
|
||||
|
||||
Once a distance has been computed to a boundary, we need to check if it is
|
||||
closer than previously-computed distances to surfaces. Unfortunately, we cannot
|
||||
just use the minimum function because some distances may be almost identical but
|
||||
still different due to the use of floating-point arithmetic. Consequently, we
|
||||
should first check for floating-point equality of the current distance
|
||||
calculated and the minimum found thus far. This is done by checking if
|
||||
Once a distance has been computed to a surface, we need to check if it is closer
|
||||
than previously-computed distances to surfaces. Unfortunately, we cannot just
|
||||
use the minimum function because some of the calculated distances, which should
|
||||
be the same in theory (e.g. coincident surfaces), may be slightly different due
|
||||
to the use of floating-point arithmetic. Consequently, we should first check for
|
||||
floating-point equality of the current distance calculated and the minimum found
|
||||
thus far. This is done by checking if
|
||||
|
||||
.. math::
|
||||
:label: fp-distance
|
||||
|
|
|
|||
|
|
@ -78,24 +78,24 @@ proceed. The life of a single particle will proceed as follows:
|
|||
|
||||
d = -\frac{\ln \xi}{\Sigma_t}
|
||||
|
||||
where :math:`\sigma` is a `pseudorandom number`_ sampled from a uniform
|
||||
distribution on [0,1).
|
||||
where :math:`\xi` is a `pseudorandom number`_ sampled from a uniform
|
||||
distribution on :math:`[0,1)`.
|
||||
|
||||
5. If the distance to the nearest boundary is less than the distance to the next
|
||||
6. If the distance to the nearest boundary is less than the distance to the next
|
||||
collision, the particle is moved forward to this boundary. Then, the process
|
||||
is repeated from step 2. If the distance to collision is closer than the
|
||||
distance to the nearest boundary, then the particle will undergo a collision.
|
||||
|
||||
6. The material at the collision site may consist of multiple nuclides. First,
|
||||
7. The material at the collision site may consist of multiple nuclides. First,
|
||||
the nuclide with which the collision will happen is sampled based on the
|
||||
total cross-sections. If the total cross section of material :math:`i` is
|
||||
:math:`\Sigma_{t,i}`, then the probability that any nuclide is sampled is
|
||||
|
||||
.. math::
|
||||
|
||||
P(i) = \frac{\Sigma_{t,i}}{\Sigma_t}
|
||||
P(i) = \frac{\Sigma_{t,i}}{\Sigma_t}.
|
||||
|
||||
7. Once the specific nuclide is sampled, the random samples a reaction for
|
||||
8. Once the specific nuclide is sampled, the random samples a reaction for
|
||||
that nuclide based on the microscopic cross sections. If the microscopic
|
||||
cross-section for some reaction :math:`x` is :math:`\sigma_x` and the total
|
||||
microscopic cross section for the nuclide is :math:`\sigma_t`, then the
|
||||
|
|
@ -103,9 +103,9 @@ proceed. The life of a single particle will proceed as follows:
|
|||
|
||||
.. math::
|
||||
|
||||
P(x) = \frac{\sigma_x}{\sigma_t}
|
||||
P(x) = \frac{\sigma_x}{\sigma_t}.
|
||||
|
||||
8. If the sampled reaction is elastic or inelastic scattering, the outgoing
|
||||
9. If the sampled reaction is elastic or inelastic scattering, the outgoing
|
||||
energy and angle is sampled from the appropriate distribution. If the
|
||||
reaction is (n,xn), it's also treated as scattering and the weight of the
|
||||
particle is increased by the multiplicity of the reaction. The particle
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@ where :math:`g`, :math:`c`, and :math:`M` are constants. The choice of these
|
|||
constants will have a profound effect on the quality and performance of the
|
||||
generator, so they should not be chosen arbitrarily. As Donald Knuth said in his
|
||||
seminal work *The Art of Computer Programming*, "random numbers should not be
|
||||
generated with a method chosen at random". Some theory should be used."
|
||||
generated with a method chosen at random. Some theory should be used."
|
||||
Typically, :math:`M` is chosen to be a power of two as this enables :math:`x
|
||||
\mod M` to be performed using the binary AND operator with a bit mask. The
|
||||
constants for the linear congruential generator used by default in OpenMC are
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue