mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-27 21:55:41 -04:00
Merge remote-tracking branch 'upstream/develop' into hex_lattice
Conflicts: src/geometry.F90 src/hdf5_summary.F90
This commit is contained in:
commit
1f7f0ad2e6
24 changed files with 280 additions and 1170 deletions
|
|
@ -47,45 +47,28 @@ there would be for burnup calculations. Thus, there is a strong motive to
|
|||
implement a method of reducing the number of energy grid searches in order to
|
||||
speed up the calculation.
|
||||
|
||||
Unionized Energy Grid
|
||||
---------------------
|
||||
Logarithmic Mapping
|
||||
-------------------
|
||||
|
||||
The most naïve method to reduce the number of energy grid searches is to
|
||||
construct a new energy grid that consists of the union of the energy points of
|
||||
each nuclide and use this energy grid for all nuclides. This method is
|
||||
computationally very efficient as it only requires one energy grid search at
|
||||
each collision as well as one interpolation between cross section values since
|
||||
the interpolation factor can be used for all nuclides. However, it requires
|
||||
redundant storage of cross section values at points which were added to each
|
||||
nuclide grid. This additional burden on memory storage can become quite
|
||||
prohibitive. To lessen that burden, the unionized energy grid can be thinned
|
||||
with cross sections reconstructed on the thinned energy grid. This method is
|
||||
currently used by default in the Serpent Monte Carlo code.
|
||||
To speed up energy grid searches, OpenMC uses logarithmic mapping technique
|
||||
[Brown]_ to limit the range of energies that must be searched for each
|
||||
nuclide. The entire energy range is divided up into equal-lethargy segments, and
|
||||
the bounding energies of each segment are mapped to bounding indices on each of
|
||||
the nuclide energy grids. By default, OpenMC uses 8000 equal-lethargy segments
|
||||
as recommended by Brown.
|
||||
|
||||
Unionized Energy Grid with Nuclide Pointers
|
||||
-------------------------------------------
|
||||
Other Methods
|
||||
-------------
|
||||
|
||||
While having a unionized grid that is used for all nuclides allows for very fast
|
||||
lookup of cross sections, the burden on memory is in many circumstances
|
||||
unacceptable. The OpenMC Monte Carlo code utilizes a method that allows for a
|
||||
single energy grid search to be performed at every collision while avoiding the
|
||||
redundant storage of cross section values. Instead of using the unionized grid
|
||||
for every nuclide, the original energy grid of each nuclide is kept and a list
|
||||
of pointers (of the same length as the unionized energy grid) is constructed for
|
||||
each nuclide that gives the corresponding grid index on the nuclide grid for a
|
||||
given grid index on the unionized grid. One must still interpolate on cross
|
||||
section values for each nuclide since the interpolation factors will generally
|
||||
be different. The figure below illustrates this method. All values within the
|
||||
dashed box would need to be stored on a per-nuclide basis, and the union grid
|
||||
would need to be stored once. This method is also referred to as *double
|
||||
indexing* and is available as an option in Serpent (see paper by Leppanen_).
|
||||
A good survey of other energy grid techniques, including unionized energy grids,
|
||||
can be found in a paper by Leppanen_.
|
||||
|
||||
.. figure:: ../_images/uniongrid.*
|
||||
:width: 600px
|
||||
:align: center
|
||||
:figclass: align-center
|
||||
----------
|
||||
References
|
||||
----------
|
||||
|
||||
Mapping of union energy grid to nuclide energy grid through pointers.
|
||||
.. [Brown] Forrest B. Brown, "New Hash-based Energy Lookup Algorithm for Monte
|
||||
Carlo codes," LA-UR-14-24530, Los Alamos National Laboratory (2014).
|
||||
|
||||
.. _MCNP: http://mcnp.lanl.gov
|
||||
.. _Serpent: http://montecarlo.vtt.fi
|
||||
|
|
|
|||
|
|
@ -516,7 +516,7 @@ satisfy the following equations
|
|||
|
||||
x^2 + y^2 + z^2 - 10^2 < 0 \\
|
||||
x - (-3) > 0 \\
|
||||
x - 2 < 0
|
||||
y - 2 < 0
|
||||
|
||||
In order to determine if a point is inside the cell, we would substitute its
|
||||
coordinates into equation :eq:`cell-contains-example`. If the inequalities are
|
||||
|
|
|
|||
|
|
@ -682,17 +682,20 @@ 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`_:
|
||||
determined, we then calculate a candidate outgoing energy based on the algorithm
|
||||
given in LA-UR-14-27694_:
|
||||
|
||||
.. math::
|
||||
:label: evaporation-E
|
||||
|
||||
E' = -T \log (\xi_1 \xi_2)
|
||||
E' = -T \log ((1 - g\xi_1)(1 - g\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`.
|
||||
where :math:`g = 1 - e^{-w}`, :math:`w = (E - U)/T`, :math:`U` is the
|
||||
restriction energy, and :math:`\xi_1, \xi_2` are random numbers sampled on the
|
||||
unit interval. The outgoing energy is only accepted according to the restriction
|
||||
energy as in equation :eq:`maxwell-restriction`. This algorithm has a much
|
||||
higher rejection efficiency than the standard technique, i.e. rule C45 in the
|
||||
`Monte Carlo Sampler`_.
|
||||
|
||||
ACE Law 11 - Energy-Dependent Watt Spectrum
|
||||
+++++++++++++++++++++++++++++++++++++++++++
|
||||
|
|
@ -1591,6 +1594,8 @@ References
|
|||
|
||||
.. _Monte Carlo Sampler: https://laws.lanl.gov/vhosts/mcnp.lanl.gov/pdf_files/la-9721_3rdmcsampler.pdf
|
||||
|
||||
.. _LA-UR-14-27694: http://permalink.lanl.gov/object/tr?what=info:lanl-repo/lareport/LA-UR-14-27694
|
||||
|
||||
.. _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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue