Reprocessing Methods¶
SaltProc models separations and feeds using three different data structures:
Material flows¶
A material flow represents a material with a given
volume \(V\), density \(\rho\), temperature \(T\), and nuclide composition \(\mathbf{N}\) flowing in or out
of a processing component.
It can also include information such as void fraction. saltproc.Materialflow
objects contain the prior mentioned quantities as attributes, as well as
methods to perform the following:
Add two
saltproc.Materialflow
objects togetherThe mass of the sum is \(m_{1+2} = m_{1} + m_{2}\)
The composition of the sum is \(\mathbf{N}_{1+2} = \frac{\mathbf{N}_{1} * m_{1} + \mathbf{N}_{2} * m_{2}}{m_{1} + m_{2}}\)
The temperature and density are assumed to be equal to the first
saltproc.Materialflow
object
Scale a
saltproc.Materialflow
object by a constant, specifically the mass and volume of thesaltproc.Materialflow
object.
saltproc.Materialflow
. objects are used to store information about
materials in reprocessing as well as materials being fed into the system.
Processes¶
A process is an abstraction of chemical separation, extraction, or some
other removal. Two processes commonly used in Gls{msr}s include
extracting metals using gas sparging and filtering. In SaltProc,
saltproc.Process
objects contain data and functions to perform their
associated processing task. At a minimum, a saltproc.Process
object includes
the following
A mass flow rate, \(\dot{m}\), which specifies the mass of fuel salt a process can operate on per unit time
An extraction efficiency, \(\epsilon\), for target element(s)
A method to apply the process on a
saltproc.Materialflow
object
Graphs¶
A graph is a mathematical object that connects nodes with edges. More formally, a graph is a pair of sets, \((V, E)\), where
\(V\) is a set whose elements are called nodes
\(E\) is a set whose elements are pairs of elements in \(V\)
A directed graph is a graph in which the elements are ordered pairs of elements in \(V\). This gives the edges a direction. SaltProc uses directed graphs to model the order and path in which processes operate on materials.
Processes and feeds are defined in one JSON input file, and the graph linking
processes is defined in a DOT file. The process graph must be directed and
acyclic in order to work with SaltProc. At runtime,
SaltProc reads this input file to create saltproc.Process
objects for each item
in the file. Every process file must have at least a core_outlet
and
core_inlet
Process.
Material reprocessing¶
Recall that SaltProc uses a batchwise reprocessing scheme. Let \(\mathbf{n}(t)^{j}\) denote the nuclide mass vector for depletable material \(j\) as a function of time. For each depletable material \(j\), the depletion solver numerically integrates the equation
from time \(i\) to time \(i+1\) to get \(\mathbf{n}^{j}(i+1)\), where \(A\) is the depletion matrix. This sequence is called a depletion step.
Now, let the mass and volume of depletable material \(j\) be \(m^{j}\) and \(V^{j}\) respectively. Let the mass flow rate of process \(p\) be \(\dot{m}_{p}\). At the end of each depletion step, SaltProc constructs process paths from the process graph defined in the DOT file, and sequentially applies each process \(p\) in each path \(r\) to the relevant materials to obtain through and waste streams for each material. SaltProc tracks the mass and nuclide vector for both through and waste streams. For through streams, SaltProc also tracks the volume and mass flow rate. For every node \(p\in[0,l]\) where \(0\) represents the core outlet and \(l\) represents the core inlet, in the path \(r\), for the through streams we have
where
and the initial conditions are
Similarly, for the waste streams, we have
SaltProc does not currently track the volume and mass flow rate of waste streams. In practice, since it is extremely resource intensive to separate individual isotopes, SaltProc only allows extraction efficiencies to be defined for elements. Additionally, any chemical processing would only act on elements, so there is little point in having isotope specific extration efficiencies. So, for any isotope \(a\) of xenon, \(\epsilon_{\ce{^{a}Xe}} = \epsilon_{\ce{^{a^{\prime}}Xe}}\) where \(a^{\prime} \in \text{isotopes of Xe}\)
After the recursive computation, SaltProc sums through and waste streams over all paths to get the total through stream at the inlet, and the total waste stream at the inlet which represents all material removed during reprocessing. In practice, we are working with nuclide mass fractions, not total masses, so in the program there is an expansion and then normalization of the vectors:
Before running the next depletion step, for any material that has an associated feed material defined, SaltProc will add an amount of the feed material equivalent to the removed mass so that the mass of fuel salt undergoing depletion remains constant. For feed \(j'\) corresponding to material \(j\), we have
where