mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-29 06:35:48 -04:00
Implement surface flux tallies (#3742)
Co-authored-by: Paul Romano <paul.k.romano@gmail.com>
This commit is contained in:
parent
b796afb591
commit
70be650003
19 changed files with 424 additions and 54 deletions
|
|
@ -1234,6 +1234,23 @@ attributes/sub-elements:
|
|||
are not eligible to store any particles when using ``cell``, ``cellfrom``
|
||||
or ``cellto`` attributes. It is recommended to use surface IDs instead.
|
||||
|
||||
------------------------------------
|
||||
``<surface_grazing_cutoff>`` Element
|
||||
------------------------------------
|
||||
|
||||
The ``<surface_grazing_cutoff>`` element specifies the surface flux cosine cutoff.
|
||||
|
||||
*Default*: 0.001
|
||||
|
||||
-----------------------------------
|
||||
``<surface_grazing_ratio>`` Element
|
||||
-----------------------------------
|
||||
|
||||
The ``<surface_grazing_ratio>`` element specifies the surface flux cosine
|
||||
substitution ratio.
|
||||
|
||||
*Default*: 0.5
|
||||
|
||||
------------------------------
|
||||
``<survival_biasing>`` Element
|
||||
------------------------------
|
||||
|
|
|
|||
|
|
@ -205,7 +205,71 @@ had a collision at every event. Thus, for tallies with outgoing-energy filters
|
|||
or for tallies of scattering moments (which require the scattering cosine of
|
||||
the change-in-angle), we must use an analog estimator.
|
||||
|
||||
.. TODO: Add description of surface current tallies
|
||||
-----------------------------------
|
||||
Surface-Integrated Flux and Current
|
||||
-----------------------------------
|
||||
|
||||
Surface tallies allow you to measure particle behavior as they cross specific
|
||||
boundaries in your geometry. Unlike volume tallies, which integrate over a
|
||||
volumetric region, surface tallies capture the current or flux passing through a
|
||||
surface. Surface tallies are estimated using an analog estimator.
|
||||
|
||||
Current Score
|
||||
-------------
|
||||
|
||||
When tallying the current across a surface, we simply count the weight of
|
||||
particles that cross the surface of interest:
|
||||
|
||||
|
||||
.. math::
|
||||
:label: analog-current-estimator
|
||||
|
||||
J = \frac{1}{W} \sum_{i \in S} w_i.
|
||||
|
||||
where :math:`J` is the area-integrated current passing through surface
|
||||
:math:`S`, :math:`W` is the total starting weight of the particles, and
|
||||
:math:`w_i` is the weight of the particle as it crosses the surface :math:`S`.
|
||||
|
||||
Flux Score
|
||||
----------
|
||||
|
||||
When tallying flux over a surface, we use the relationship between current and
|
||||
flux:
|
||||
|
||||
|
||||
.. math::
|
||||
:label: surface-flux-estimator
|
||||
|
||||
\phi_S = \frac{1}{W} \sum_{i \in S} \frac{w_i}{|\mu|}.
|
||||
|
||||
where :math:`\phi_S` is the area-integrated flux over surface :math:`S`,
|
||||
:math:`W` is the total starting weight of the particles, :math:`w_i` is the
|
||||
weight of the particle as it crosses the surface :math:`S` and :math:`\mu` is
|
||||
the cosine of angle between the particle direction and the surface normal.
|
||||
|
||||
This equation diverges when the particle crossing the surface is nearly parallel
|
||||
to it (that is, as :math:`\mu` approaches zero). To remove this divergence,
|
||||
OpenMC scores:
|
||||
|
||||
.. math::
|
||||
:label: modified-surface-flux-estimator
|
||||
|
||||
\phi_S = \frac{1}{W} \sum_{i \in S} w_i f(\mu).
|
||||
|
||||
and the function :math:`f` is defined by:
|
||||
|
||||
.. math::
|
||||
f(\mu) = \begin{cases}
|
||||
\frac{1}{|\mu|} & |\mu| > \mu_\text{cut} \\
|
||||
\frac{1}{c\mu_\text{cut}} & |\mu| \le \mu_\text{cut}
|
||||
\end{cases}
|
||||
|
||||
where :math:`\mu_\text{cut}` is the grazing cosine cutoff and :math:`c` is the
|
||||
cosine substitution ratio. The parameters :math:`\mu_\text{cut}` and :math:`c`
|
||||
can be set by the user via the :attr:`openmc.Settings.surface_grazing_cutoff`
|
||||
and :attr:`openmc.Settings.surface_grazing_ratio` attributes, respectively. The
|
||||
default values for these parameters are 0.001 and 0.5 as recommended by
|
||||
`Favorite, Thomas, and Booth <https://doi.org/10.13182/NSE09-72>`_.
|
||||
|
||||
.. _tallies_statistics:
|
||||
|
||||
|
|
|
|||
|
|
@ -261,18 +261,21 @@ The following tables show all valid scores:
|
|||
+----------------------+---------------------------------------------------+
|
||||
|Score | Description |
|
||||
+======================+===================================================+
|
||||
|current |Used in combination with a meshsurface filter: |
|
||||
|current |It may not be used in conjunction with any other |
|
||||
| |score except flux. |
|
||||
| | |
|
||||
| |When used in combination with a meshsurface filter:|
|
||||
| |Partial currents on the boundaries of each cell in |
|
||||
| |a mesh. It may not be used in conjunction with any |
|
||||
| |other score. Only energy and mesh filters may be |
|
||||
| |used. |
|
||||
| |Used in combination with a surface filter: |
|
||||
| |a mesh. |
|
||||
| | |
|
||||
| |When used in combination with a surface filter: |
|
||||
| |Net currents on any surface previously defined in |
|
||||
| |the geometry. It may be used along with any other |
|
||||
| |filter, except meshsurface filters. |
|
||||
| |Surfaces can alternatively be defined with cell |
|
||||
| |from and cell filters thereby resulting in tallying|
|
||||
| |partial currents. |
|
||||
| | |
|
||||
| |Units are particles per source particle. |
|
||||
+----------------------+---------------------------------------------------+
|
||||
|events |Number of scoring events. Units are events per |
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue