mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-28 22:26:08 -04:00
Operator->CoupledOperator
- update references in docstrings and docpages - minor adjustments to related docs in deplete module files - retain backwards compatiblity by exporint Operator alias
This commit is contained in:
parent
511464b53b
commit
773757246b
8 changed files with 96 additions and 82 deletions
|
|
@ -234,7 +234,7 @@ of FPY:
|
|||
Only applicable to transport-coupled depletion
|
||||
|
||||
The method for transport-coupled depletion can be selected through the
|
||||
``fission_yield_mode`` argument to the :class:`openmc.deplete.Operator`
|
||||
``fission_yield_mode`` argument to the :class:`openmc.deplete.CoupledOperator`
|
||||
constructor.
|
||||
|
||||
Power Normalization
|
||||
|
|
@ -246,8 +246,8 @@ compute an absolute reaction rate in reactions per second. To do so, the
|
|||
reaction rates are normalized based on a specified power. A complete
|
||||
description of how this normalization can be performed is described in
|
||||
:ref:`usersguide_tally_normalization`. Here, we simply note that the main
|
||||
depletion class, :class:`openmc.deplete.Operator`, allows the user to choose
|
||||
one of two methods for estimating the heating rate, including:
|
||||
depletion class, :class:`openmc.deplete.CoupledOperator`, allows the user to
|
||||
choose one of two methods for estimating the heating rate, including:
|
||||
|
||||
1. Using fixed Q values from a depletion chain file (useful for comparisons to
|
||||
other codes that use fixed Q values), or
|
||||
|
|
@ -255,4 +255,4 @@ one of two methods for estimating the heating rate, including:
|
|||
energy-dependent estimate of the true heating rate.
|
||||
|
||||
The method for normalization can be chosen through the ``normalization_mode``
|
||||
argument to the :class:`openmc.deplete.Operator` class.
|
||||
argument to the :class:`openmc.deplete.CoupledOperator` class.
|
||||
|
|
|
|||
|
|
@ -18,8 +18,8 @@ are:
|
|||
The former is responsible for obtaining transmuation reaction rates. The latter
|
||||
is responsible for projecting reaction rates and compositions forward in
|
||||
calendar time across some step size :math:`\Delta t`, and obtaining new
|
||||
compositions given a power or power density. The :class:`Operator` class is
|
||||
provided to obtain reaction rates via tallies through OpenMC's transport
|
||||
compositions given a power or power density. The :class:`CoupledOperator` class
|
||||
is provided to obtain reaction rates via tallies through OpenMC's transport
|
||||
solver, and the :class:`IndependentOperator` class is provided to obtain
|
||||
reaction rates from cross-section data. Several classes are provided that
|
||||
implement different time-integration algorithms for depletion calculations,
|
||||
|
|
@ -49,11 +49,11 @@ provided by OpenMC are available using the following classes:
|
|||
:nosignatures:
|
||||
:template: mycallable.rst
|
||||
|
||||
Operator
|
||||
CoupledOperator
|
||||
IndependentOperator
|
||||
|
||||
The :class:`Operator` and :class:`IndependentOperator` classes must also have
|
||||
some knowledge of how nuclides transmute and decay. This is handled by the
|
||||
The :class:`CoupledOperator` and :class:`IndependentOperator` classes must also
|
||||
have some knowledge of how nuclides transmute and decay. This is handled by the
|
||||
:class:`Chain`.
|
||||
|
||||
Minimal Example
|
||||
|
|
@ -71,7 +71,7 @@ A minimal example for performing depletion would be:
|
|||
|
||||
# Representation of a depletion chain
|
||||
>>> chain_file = "chain_casl.xml"
|
||||
>>> operator = openmc.deplete.Operator(
|
||||
>>> operator = openmc.deplete.CoupledOperator(
|
||||
... model, chain_file)
|
||||
|
||||
# Set up 5 time steps of one day each
|
||||
|
|
@ -177,7 +177,7 @@ with :func:`cram.CRAM48` being the default.
|
|||
:class:`multiprocessing.pool.Pool` class. If set to ``None`` (default), the
|
||||
number returned by :func:`os.cpu_count` is used.
|
||||
|
||||
The following classes are used to help the :class:`openmc.deplete.Operator`
|
||||
The following classes are used to help the :class:`openmc.deplete.CoupledOperator`
|
||||
compute quantities like effective fission yields, reaction rates, and
|
||||
total system energy.
|
||||
|
||||
|
|
@ -194,6 +194,8 @@ total system energy.
|
|||
helpers.FissionYieldCutoffHelper
|
||||
helpers.FluxCollapseHelper
|
||||
|
||||
The :class:`openmc.deplete.IndependentOperator` uses inner class subclassed from
|
||||
those listed to perform similar calculations.
|
||||
|
||||
Intermediate Classes
|
||||
--------------------
|
||||
|
|
|
|||
|
|
@ -47,17 +47,17 @@ Transport-coupled depletion
|
|||
|
||||
This category of operator solves the transport equation to obtain transmutation
|
||||
reaction rates. At present, the :mod:`openmc.deplete` module offers a single
|
||||
transport-coupled operator, :class:`openmc.deplete.Operator` (which uses the
|
||||
OpenMC transport solver), but in principle additional transport-coupled operator
|
||||
classes based on other transport codes could be implemented and no changes to
|
||||
the depletion solver itself would be needed. The
|
||||
:class:`openmc.deplete.Operator` class requires a :class:`~openmc.Model`
|
||||
transport-coupled operator, :class:`openmc.deplete.CoupledOperator` (which uses
|
||||
the OpenMC transport solver), but in principle additional transport-coupled
|
||||
operator classes based on other transport codes could be implemented and no
|
||||
changes to the depletion solver itself would be needed. The
|
||||
:class:`openmc.deplete.CoupledOperator` class requires a :class:`~openmc.Model`
|
||||
instance containing material, geometry, and settings information::
|
||||
|
||||
model = openmc.Model()
|
||||
...
|
||||
|
||||
op = openmc.deplete.Operator(model)
|
||||
op = openmc.deplete.CoupledOperator(model)
|
||||
|
||||
Any material that contains a fissionable nuclide is depleted by default, but
|
||||
this can behavior can be changed with the :attr:`Material.depletable` attribute.
|
||||
|
|
@ -86,11 +86,11 @@ using the :attr:`Material.depletable` attribute::
|
|||
mat = openmc.Material()
|
||||
mat.depletable = True
|
||||
|
||||
When constructing the :class:`~openmc.deplete.Operator`, you should indicate
|
||||
that normalization of tally results will be done based on the source rate rather
|
||||
than a power or power density::
|
||||
When constructing the :class:`~openmc.deplete.CoupledOperator`, you should
|
||||
indicate that normalization of tally results will be done based on the source
|
||||
rate rather than a power or power density::
|
||||
|
||||
op = openmc.deplete.Operator(model, normalization_mode='source-rate')
|
||||
op = openmc.deplete.CoupledOperator(model, normalization_mode='source-rate')
|
||||
|
||||
Finally, when creating a depletion integrator, use the ``source_rates`` argument::
|
||||
|
||||
|
|
@ -109,13 +109,14 @@ Energy Deposition
|
|||
~~~~~~~~~~~~~~~~~
|
||||
|
||||
The default energy deposition mode, ``"fission-q"``, instructs the
|
||||
:class:`~openmc.deplete.Operator` to normalize reaction rates using the product
|
||||
of fission reaction rates and fission Q values taken from the depletion chain.
|
||||
This approach does not consider indirect contributions to energy deposition,
|
||||
such as neutron heating and energy from secondary photons. In doing this, the
|
||||
energy deposited during a transport calculation will be lower than expected.
|
||||
This causes the reaction rates to be over-adjusted to hit the user-specific
|
||||
power, or power density, leading to an over-depletion of burnable materials.
|
||||
:class:`~openmc.deplete.CoupledOperator` to normalize reaction rates using the
|
||||
product of fission reaction rates and fission Q values taken from the depletion
|
||||
chain. This approach does not consider indirect contributions to energy
|
||||
deposition, such as neutron heating and energy from secondary photons. In doing
|
||||
this, the energy deposited during a transport calculation will be lower than
|
||||
expected. This causes the reaction rates to be over-adjusted to hit the
|
||||
user-specific power, or power density, leading to an over-depletion of burnable
|
||||
materials.
|
||||
|
||||
There are some remedies. First, the fission Q values can be directly set in a
|
||||
variety of ways. This requires knowing what the total fission energy release
|
||||
|
|
@ -130,10 +131,10 @@ should be, including indirect components. Some examples are provided below::
|
|||
# create a modified chain and write it to a new file
|
||||
chain = openmc.deplete.Chain.from_xml("chain.xml", fission_q)
|
||||
chain.export_to_xml("chain_mod_q.xml")
|
||||
op = openmc.deplete.Operator(model, "chain_mod_q.xml")
|
||||
op = openmc.deplete.CoupledOperator(model, "chain_mod_q.xml")
|
||||
|
||||
# alternatively, pass the modified fission Q directly to the operator
|
||||
op = openmc.deplete.Operator(model, "chain.xml",
|
||||
op = openmc.deplete.CoupledOperator(model, "chain.xml",
|
||||
fission_q=fission_q)
|
||||
|
||||
|
||||
|
|
@ -141,7 +142,7 @@ A more complete way to model the energy deposition is to use the modified
|
|||
heating reactions described in :ref:`methods_heating`. These values can be used
|
||||
to normalize reaction rates instead of using the fission reaction rates with::
|
||||
|
||||
op = openmc.deplete.Operator(model, "chain.xml",
|
||||
op = openmc.deplete.CoupledOperator(model, "chain.xml",
|
||||
normalization_mode="energy-deposition")
|
||||
|
||||
These modified heating libraries can be generated by running the latest version
|
||||
|
|
@ -174,7 +175,7 @@ the next transport step.
|
|||
This can be countered by instructing the operator to treat repeated instances
|
||||
of the same material as a unique material definition with::
|
||||
|
||||
op = openmc.deplete.Operator(model, chain_file,
|
||||
op = openmc.deplete.CoupledOperator(model, chain_file,
|
||||
diff_burnable_mats=True)
|
||||
|
||||
For our example problem, this would deplete fuel on the outer region of the
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue