mirror of
https://github.com/openmc-dev/openmc.git
synced 2026-07-28 06:05:58 -04:00
Merge remote-tracking branch 'origin/transportoperator-subclass-notransport' into transportoperator-subclass-notransport
This commit is contained in:
commit
2a0da7437f
6 changed files with 15 additions and 13 deletions
|
|
@ -108,7 +108,8 @@ transport-coupled depletion, the expense is driven almost entirely by the time
|
|||
to compute a transport solution, i.e., to evaluate :math:`\mathbf{A}` for a
|
||||
given :math:`\mathbf{n}`. Thus, the cost of a method scales with the number of
|
||||
:math:`\mathbf{A}` evaluations that are performed per timestep. On the other
|
||||
hand, methods that require more evaluations generally achieve higher accuracy. The predictor method only requires one evaluation and its error converges as
|
||||
hand, methods that require more evaluations generally achieve higher accuracy.
|
||||
The predictor method only requires one evaluation and its error converges as
|
||||
:math:`\mathcal{O}(h)`. The CE/CM method requires two evaluations and is thus
|
||||
twice as expensive as the predictor method, but achieves an error of
|
||||
:math:`\mathcal{O}(h^2)`. An exhaustive description of time integration methods
|
||||
|
|
|
|||
|
|
@ -12,10 +12,11 @@ Primary API
|
|||
The two primary requirements to perform depletion with :mod:`openmc.deplete`
|
||||
are:
|
||||
|
||||
1) A transpor operator
|
||||
1) A transport operator
|
||||
2) A time-integration scheme
|
||||
|
||||
The former is responsible for calcuating and retaining important information required for depletion. The most common examples are reaction rates and power
|
||||
The former is responsible for calculating and retaining important information
|
||||
required for depletion. The most common examples are reaction rates and power
|
||||
normalization data. 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
|
||||
|
|
|
|||
|
|
@ -37,7 +37,8 @@ time::
|
|||
time, keff = results.get_keff()
|
||||
|
||||
Note that the coupling between the reaction rate solver and the transmutation
|
||||
solver happens in-memory rather than by reading/writing files on disk. OpenMC has two categories of transport operators for obtaining transmutation reaction
|
||||
solver happens in-memory rather than by reading/writing files on disk. OpenMC
|
||||
has two categories of transport operators for obtaining transmutation reaction
|
||||
rates.
|
||||
|
||||
.. _coupled-depletion:
|
||||
|
|
@ -195,7 +196,7 @@ across all material instances.
|
|||
Transport-independent depletion
|
||||
===============================
|
||||
|
||||
.. note::
|
||||
.. warning::
|
||||
|
||||
This feature is still under heavy development and has yet to be rigorously
|
||||
verified. API changes and feature additions are possible and likely in
|
||||
|
|
@ -218,7 +219,7 @@ and a path to a depletion chain file::
|
|||
micro_xs = openmc.deplete.MicroXS()
|
||||
...
|
||||
|
||||
op = IndependentOperator(materials, micro_xs, chain_file)
|
||||
op = openmc.deplete.IndependentOperator(materials, micro_xs, chain_file)
|
||||
|
||||
.. note::
|
||||
|
||||
|
|
@ -270,8 +271,10 @@ Users can generate the one-group microscopic cross sections needed by
|
|||
|
||||
The :meth:`~openmc.deplete.MicroXS.from_model()` method will produce a
|
||||
:class:`~openmc.deplete.MicroXS` object with microscopic cross section data in
|
||||
units of ``b``, which is what :class:`~openmc.deplete.IndependentOperator`
|
||||
expects the units to be. The :class:`~openmc.deplete.MicroXS` class also includes functions to read in cross section data directly from a ``.csv`` file or from data arrays::
|
||||
units of barns, which is what :class:`~openmc.deplete.IndependentOperator`
|
||||
expects the units to be. The :class:`~openmc.deplete.MicroXS` class also
|
||||
includes functions to read in cross section data directly from a ``.csv`` file
|
||||
or from data arrays::
|
||||
|
||||
micro_xs = MicroXS.from_csv(micro_xs_path)
|
||||
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@ def change_directory(output_dir):
|
|||
class TransportOperator(ABC):
|
||||
"""Abstract class defining a transport operator
|
||||
|
||||
Each depletion integrator is written to work with a generic depletion
|
||||
Each depletion integrator is written to work with a generic transport
|
||||
operator that takes a vector of material compositions and returns an
|
||||
eigenvalue and reaction rates. This abstract class sets the requirements
|
||||
for such a transport operator. Users should instantiate
|
||||
|
|
@ -604,7 +604,7 @@ class Integrator(ABC):
|
|||
else:
|
||||
source_rates = [p*operator.heavy_metal for p in power_density]
|
||||
elif source_rates is None:
|
||||
raise ValueError("Either power, power_density, source_rates must be set")
|
||||
raise ValueError("Either power, power_density, or source_rates must be set")
|
||||
|
||||
if not isinstance(source_rates, Iterable):
|
||||
# Ensure that rate is single value if that is the case
|
||||
|
|
|
|||
|
|
@ -615,7 +615,6 @@ class FissionYieldCutoffHelper(TalliedFissionYieldHelper):
|
|||
Default: 0.0253 [eV]
|
||||
fast_energy : float, optional
|
||||
Energy of yield data corresponding to fast yields.
|
||||
Default: 500 [KeV]
|
||||
|
||||
Attributes
|
||||
----------
|
||||
|
|
|
|||
|
|
@ -89,8 +89,6 @@ class MicroXS(DataFrame):
|
|||
df.rename({'mean': rxn}, axis=1, inplace=True)
|
||||
micro_xs = concat([micro_xs, df], axis=1)
|
||||
|
||||
micro_xs._units = 'b'
|
||||
|
||||
# Revert to the original tallies
|
||||
model.tallies = original_tallies
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue