Difference between revisions of "Stochastic Implicit Euler burnup scheme"
(→Implementation) |
(→Implementation) |
||
Line 16: | Line 16: | ||
These can then be used for calculating the reaction rates required for assembling the burnup matrix <math>\mathbb{M}</math>. The following algorithmic description uses <math>\phi</math> to refer to both the one group burn flux and the one group cross sections. | These can then be used for calculating the reaction rates required for assembling the burnup matrix <math>\mathbb{M}</math>. The following algorithmic description uses <math>\phi</math> to refer to both the one group burn flux and the one group cross sections. | ||
+ | |||
+ | *The following description will use BOS and EOS to refer to beginning-of-step and end-of-step quantities respectively. | ||
+ | *<math>\phi_{B}(\mathbf{N})</math> refers to running a neutron transport simulation using nuclide densities <math>\mathbf{N}</math>. | ||
+ | *<math>\exp \left[ \mathbb{M}(\phi) \Delta t\right] \mathbf{N}</math> refers to executing a depletion solution with burnup matrix <math>\mathbb{M}</math> using one group fluxes and cross sections <math>\phi</math>, timestep <math>\Delta t</math> and initial nuclide densities <math>\mathbf{N}.</math> | ||
{| class="wikitable" | {| class="wikitable" | ||
Line 23: | Line 27: | ||
|- | |- | ||
|'''2:''' | |'''2:''' | ||
− | |colspan="3"|<math>\phi_{0} \leftarrow \phi_{B}(\mathbf{N}_{ | + | |colspan="3"|<math>\phi_{0} \leftarrow \phi_{B}(\mathbf{N}_{0})</math> |
− | | Calculate <math>\phi</math> using initial nuclide | + | | Calculate BOS <math>\phi</math> using initial BOS nuclide densities. |
|- | |- | ||
|'''3:''' | |'''3:''' | ||
Line 32: | Line 36: | ||
|colspan="2"|'''4:''' | |colspan="2"|'''4:''' | ||
|colspan="2"|<math> \mathbf{N}_{i+1}^{(0)} \leftarrow \exp \left[ \mathbb{M}(\phi_{i}) \Delta t\right] \mathbf{N}_{i}</math> | |colspan="2"|<math> \mathbf{N}_{i+1}^{(0)} \leftarrow \exp \left[ \mathbb{M}(\phi_{i}) \Delta t\right] \mathbf{N}_{i}</math> | ||
− | | | + | | Obtain EOS nuclide densities by burning forward (predictor) using previously obtained BOS <math>\phi</math>. |
|- | |- | ||
|colspan="2"|'''5:''' | |colspan="2"|'''5:''' | ||
|colspan="2"| '''for ''' <math>n \leftarrow 1,2,\ldots, c</math> '''do''' | |colspan="2"| '''for ''' <math>n \leftarrow 1,2,\ldots, c</math> '''do''' | ||
− | | Loop over iterations for current burnup point. | + | | Loop over (corrector) iterations for current burnup point. |
|- | |- | ||
|colspan="3"|'''6:''' | |colspan="3"|'''6:''' | ||
| <math>\phi^{(n)}_{i+1} \leftarrow \phi_{B} (\mathbf{N}^{(n-1)}_{i+1})</math> | | <math>\phi^{(n)}_{i+1} \leftarrow \phi_{B} (\mathbf{N}^{(n-1)}_{i+1})</math> | ||
− | | | + | | Calculate estimate for EOS <math>\phi</math> using current estimate of EOS nuclide densities. |
+ | |- | ||
+ | |colspan="3"|'''7:''' | ||
+ | | <math>\overline{\phi}^{(n)}_{i+1} \leftarrow \sum_{j=1}^{n} \phi^{(j)}_{i+1}/n</math> | ||
+ | | Relax (average) the EOS <math>\phi</math> over all EOS estimates obtained for current burnup point. | ||
+ | |- | ||
+ | |colspan="3"|'''8:''' | ||
+ | | <math>\mathbf{N}_{i+1}^{(n)} \leftarrow \exp [ \mathbb{M}(\overline{\phi}^{(n)}_{i+1}) \Delta t] \mathbf{N}_{i}</math> | ||
+ | | Obtain the next estimate for EOS nuclide densities by re-burning from BOS nuclide densities (corrector) using relaxed (averaged) EOS <math>\overline{\phi}</math>. | ||
+ | |- | ||
+ | |colspan="2"|'''9:''' | ||
+ | |colspan="2"| '''end for''' | ||
+ | | Loop to next iteration for current burnup point or go forward if all iterations have been simulated. | ||
+ | |- | ||
+ | |colspan="2"|'''10:''' | ||
+ | |colspan="2"| <math>\mathbf{N}_{i+1} \leftarrow \mathbf{N}^{(c)}_{i+1}</math> | ||
+ | | The last obtained EOS nuclide densities will be the final ones and serve as BOS densities for the next step. | ||
+ | |- | ||
+ | |colspan="2"|'''11:''' | ||
+ | |colspan="2"| <math>\phi_{i+1} \leftarrow \overline{\phi}^{(c)}_{i+1}</math> | ||
+ | | The last obtained relaxed EOS <math>\overline{\phi}</math> will serve as the final EOS <math>\phi</math> for current step and as BOS <math>\phi</math> for the next step. | ||
+ | |- | ||
+ | |colspan="1"|'''12:''' | ||
+ | |colspan="3"| '''end for''' | ||
+ | | Loop to next burnup step or finish calculation. | ||
|- | |- | ||
| | | | ||
|xx | |xx | ||
− | | | + | |xx |
| | | | ||
| | | | ||
|} | |} | ||
+ | |||
+ | To put the burnup scheme into simple terms: On each burnup step, there is first a predictor step, where EOS nuclide densities are obtained from BOS nuclide densities by burning forward using the BOS fluxes and cross sections (in an explicit Euler manner) obtained either from an initial neutron transport calculation (only on first step) or from the EOS fluxes and cross sections of the previous burnup step. | ||
+ | |||
+ | This predictor step is followed by a number of corrector iterations. In each iteration, the EOS fluxes and cross sections are first obtained through a neutron transport calculation using the current estimate for EOS nuclide densities. Then the estimates for the EOS fluxes and cross sections are relaxed (averaged) over all previous iterations simulated for the current burnup point. A new estimate for the EOS nuclide densities is then obtained by burning the interval again (in implicit Euler manner) using the BOS nuclide densities and the relaxed EOS fluxes and cross sections. | ||
+ | |||
+ | After the specified number of corrector iterations has been executed, the final EOS nuclide densities and relaxed EOS fluxes and cross sections serve as the BOS nuclide densities and BOS fluxes and cross sections for the predictor step of the next burnup interval. | ||
+ | |||
+ | '''It should be noted that no neutron transport solution is actually calculated using the final EOS nuclide densities.''' This means that any results (k-eff, fluxes, etc.) obtained during the last corrector iteration do not actually represent the final estimate for the results for that specific burnup point. The SIE burnup scheme is intended to be used to obtain nuclide densities for each burnup point that can be saved using [[Input syntax manual#set rfw|restart files]] and after the burnup calculation, any number of detectors etc. can be set up and the interesting results can be calculated for each of the burnup points e.g. by loading the nuclide densities from the restart file manually using [[Input syntax manual#set rfr|set rfr]]. | ||
== Usage == | == Usage == |
Revision as of 10:21, 29 September 2017
The Stochastic Implicit Euler (SIE) burnup scheme is an alternative burnup scheme that can be used if the traditional predictor-corrector burnup schemes in Serpent exhibit unstable behavior.
Background
The theoretical background of the SIE scheme is described in [1]
Input
The SIE burnup scheme can be chosen with the set sie input card. The number of iterations for each burnup steps can be specified.
Some additional input options that many times are combined with the set sie card are set fsp for passing the fission source from the end of previous neutron transport solution to the beginning of the next one, and set cpop to use an alternate (typically lower) neutron population for the SIE iteration (compared to the neutron population used on the initial predictor step.
Implementation
For burnup calculations, Serpent needs to evaluate the one group flux for each depletion region and one group fission/transmutation cross sections for each fission/transmutation reaction of each nuclide.
These can then be used for calculating the reaction rates required for assembling the burnup matrix . The following algorithmic description uses to refer to both the one group burn flux and the one group cross sections.
- The following description will use BOS and EOS to refer to beginning-of-step and end-of-step quantities respectively.
- refers to running a neutron transport simulation using nuclide densities .
- refers to executing a depletion solution with burnup matrix using one group fluxes and cross sections , timestep and initial nuclide densities
1: | input: | Start from initial nuclide concentrations. | ||
2: | Calculate BOS using initial BOS nuclide densities. | |||
3: | for do | Loop over burnup points. | ||
4: | Obtain EOS nuclide densities by burning forward (predictor) using previously obtained BOS . | |||
5: | for do | Loop over (corrector) iterations for current burnup point. | ||
6: | Calculate estimate for EOS using current estimate of EOS nuclide densities. | |||
7: | Relax (average) the EOS over all EOS estimates obtained for current burnup point. | |||
8: | Obtain the next estimate for EOS nuclide densities by re-burning from BOS nuclide densities (corrector) using relaxed (averaged) EOS . | |||
9: | end for | Loop to next iteration for current burnup point or go forward if all iterations have been simulated. | ||
10: | The last obtained EOS nuclide densities will be the final ones and serve as BOS densities for the next step. | |||
11: | The last obtained relaxed EOS will serve as the final EOS for current step and as BOS for the next step. | |||
12: | end for | Loop to next burnup step or finish calculation. | ||
xx | xx |
To put the burnup scheme into simple terms: On each burnup step, there is first a predictor step, where EOS nuclide densities are obtained from BOS nuclide densities by burning forward using the BOS fluxes and cross sections (in an explicit Euler manner) obtained either from an initial neutron transport calculation (only on first step) or from the EOS fluxes and cross sections of the previous burnup step.
This predictor step is followed by a number of corrector iterations. In each iteration, the EOS fluxes and cross sections are first obtained through a neutron transport calculation using the current estimate for EOS nuclide densities. Then the estimates for the EOS fluxes and cross sections are relaxed (averaged) over all previous iterations simulated for the current burnup point. A new estimate for the EOS nuclide densities is then obtained by burning the interval again (in implicit Euler manner) using the BOS nuclide densities and the relaxed EOS fluxes and cross sections.
After the specified number of corrector iterations has been executed, the final EOS nuclide densities and relaxed EOS fluxes and cross sections serve as the BOS nuclide densities and BOS fluxes and cross sections for the predictor step of the next burnup interval.
It should be noted that no neutron transport solution is actually calculated using the final EOS nuclide densities. This means that any results (k-eff, fluxes, etc.) obtained during the last corrector iteration do not actually represent the final estimate for the results for that specific burnup point. The SIE burnup scheme is intended to be used to obtain nuclide densities for each burnup point that can be saved using restart files and after the burnup calculation, any number of detectors etc. can be set up and the interesting results can be calculated for each of the burnup points e.g. by loading the nuclide densities from the restart file manually using set rfr.
Usage
Noteworthy things
- No neutron transport solution is actually calculated using the final concentrations for a certain point.
References
- ^ Dufek, J., Kotlyar, D. and Shwageraus, E. "The stochastic implicit Euler method – A stable coupling scheme for Monte Carlo burnup calculations", Ann. Nucl. Energy, 60 (2013) 295-300