mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-28 06:05:58 -04:00
Temperature feedback support in the random ray solver. (#3737)
This commit is contained in:
parent
d0346e94ac
commit
4f4930b633
29 changed files with 1515 additions and 255 deletions
|
|
@ -248,6 +248,28 @@ The classes :class:`Halfspace`, :class:`Intersection`, :class:`Union`, and
|
|||
:class:`Complement` and all instances of :class:`openmc.Region` and can be
|
||||
assigned to the :attr:`Cell.region` attribute.
|
||||
|
||||
Cells also contain :attr:`Cell.temperature` and :attr:`Cell.density`
|
||||
attributes which override the temperature and density of the fill. These can
|
||||
be quite useful when temperatures and densities are spatially varying, as the
|
||||
alternative would be to add a unique :class:`Material` for each permutation of
|
||||
temperature, density, and composition. You can set the temperature (K) and
|
||||
density (g/cc) of a cell like so::
|
||||
|
||||
fuel.temperature = 800.0
|
||||
fuel.density = 10.0
|
||||
|
||||
The real utility of cell temperatures and densities occurs when a cell is
|
||||
replicated across the geometry, such as when a cell is the root geometric element
|
||||
in a replicated :ref:`universe<usersguide_universes>` or :ref:`lattice
|
||||
<usersguide_lattices>`. In those cases, you can provide a list of temperatures
|
||||
and densities to apply a temperature/density field to all of the distributed cells::
|
||||
|
||||
fuel.temperature = [800.0, 900.0, 800.0, 900.0]
|
||||
fuel.density = [10.0, 9.0, 10.0, 9.0]
|
||||
|
||||
In this example, the fuel cell is distributed four times in the geometry. Each
|
||||
distributed instance then receives its own temperature and density.
|
||||
|
||||
.. _usersguide_universes:
|
||||
|
||||
---------
|
||||
|
|
|
|||
|
|
@ -646,7 +646,9 @@ model to use these multigroup cross sections. An example is given below::
|
|||
overwrite_mgxs_library=False,
|
||||
mgxs_path="mgxs.h5",
|
||||
correction=None,
|
||||
source_energy=None
|
||||
source_energy=None,
|
||||
temperatures=None,
|
||||
temperature_settings=None
|
||||
)
|
||||
|
||||
The most important parameter to set is the ``method`` parameter, which can be
|
||||
|
|
@ -733,6 +735,20 @@ distribution for MGXS generation as::
|
|||
|
||||
source_energy = openmc.stats.delta_function(2.45e6)
|
||||
|
||||
The ``temperatures`` parameter can be provided if temperature-dependent
|
||||
multi-group cross sections are desired for multi-physics simulations. An
|
||||
individual cross section generation calculation is run for each temperature
|
||||
provided, where the materials in the model are set to the temperature. The
|
||||
temperature settings used during cross section generation can be specified with the
|
||||
``temperature_settings`` parameter. If no ``temperature_settings`` are provided,
|
||||
the settings contained in the model will be used. The valid keys and values in the
|
||||
``temperature_settings`` dictionary are identical to
|
||||
:attr:`openmc.Settings.temperature_settings`; more information can be found in
|
||||
:class:`openmc.Settings` . This approach yields isothermal cross section interpolation
|
||||
tables, which can be inaccurate for systems with large differences between temperatures
|
||||
in each material (often the case in fission reactors). If a more sophisticated
|
||||
temperature-dependence is required, we recommend generating cross sections manually.
|
||||
|
||||
Ultimately, the methods described above are all just approximations.
|
||||
Approximations in the generated MGXS data will fundamentally limit the potential
|
||||
accuracy of the random ray solver. However, the methods described above are all
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue