Difference between revisions of "Stochastic Implicit Euler burnup scheme"

From Serpent Wiki
Jump to: navigation, search
(Background)
m
 
(9 intermediate revisions by one other user not shown)
Line 3: Line 3:
 
== Background ==
 
== Background ==
  
The theoretical background of the SIE scheme is described in <ref name="DufekNSE06"/>
+
The theoretical background of the SIE scheme is described in <ref name="DufekANE13"/>
 +
 
 +
== Input ==
 +
 
 +
The SIE burnup scheme can be chosen with the [[Input syntax manual#set sie|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 [[Input syntax manual#set fsp|set fsp]] for passing the fission source from the end of previous neutron transport solution to the beginning of the next one, and [[Input syntax manual#set cpop|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 ==
 
== Implementation ==
 +
 +
For burnup calculations, Serpent needs to evaluate the one group flux <math>\phi</math> for each depletion region and one group fission/transmutation cross sections <math>\Sigma</math> for each fission/transmutation reaction of each nuclide.
 +
 +
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"
 +
|'''1:'''
 +
|colspan="3"| input: <math>\mathbf{N}_{0}</math>
 +
| Start from initial nuclide concentrations.
 +
|-
 +
|'''2:'''
 +
|colspan="3"|<math>\phi_{0} \leftarrow \phi_{B}(\mathbf{N}_{0})</math>
 +
| Calculate BOS <math>\phi</math> using initial BOS nuclide densities.
 +
|-
 +
|'''3:'''
 +
|colspan="3"|'''for''' <math>i \leftarrow 0,1,\ldots </math> '''do'''
 +
| Loop over burnup points.
 +
|-
 +
|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>
 +
| Obtain EOS nuclide densities by burning forward (predictor) using previously obtained BOS <math>\phi</math>.
 +
|-
 +
|colspan="2"|'''5:'''
 +
|colspan="2"| '''for ''' <math>n \leftarrow 1,2,\ldots, c</math> '''do'''
 +
| Loop over (corrector) iterations for current burnup point.
 +
|-
 +
|colspan="3"|'''6:'''
 +
| <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
 +
|
 +
|
 +
|}
 +
 +
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 ==
 +
 +
See:
 +
*[[Unstable 3D pin-cell burnup problem]].
  
 
== Noteworthy things ==
 
== Noteworthy things ==
 +
*No neutron transport solution is actually calculated using the final concentrations for a certain point.
  
 
== References ==
 
== References ==
 
<references>
 
<references>
<ref name="DufekNSE06">Dufek, J. and Gudowski, W. "''Stochastic Approximation for Monte Carlo Calculation of Steady-State Conditions in Thermal Reactors''", Nucl. Sci. Eng, 152 (2006) 274-283</ref>
+
<ref name="DufekANE13">Dufek, J., Kotlyar, D. and Shwageraus, E. "''The stochastic implicit Euler method – A stable coupling scheme for Monte Carlo burnup calculations''", Ann. Nucl. Energy, [http://www.sciencedirect.com/science/article/pii/S0306454913002703 60 (2013) 295-300]</ref>
 
</references>
 
</references>
 +
 +
[[Category:Theory]]

Latest revision as of 14:58, 29 November 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 \phi for each depletion region and one group fission/transmutation cross sections \Sigma for each fission/transmutation reaction of each nuclide.

These can then be used for calculating the reaction rates required for assembling the burnup matrix \mathbb{M}. The following algorithmic description uses \phi 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.
  • \phi_{B}(\mathbf{N}) refers to running a neutron transport simulation using nuclide densities \mathbf{N}.
  • \exp \left[ \mathbb{M}(\phi) \Delta t\right] \mathbf{N} refers to executing a depletion solution with burnup matrix \mathbb{M} using one group fluxes and cross sections \phi, timestep \Delta t and initial nuclide densities \mathbf{N}.
1: input: \mathbf{N}_{0} Start from initial nuclide concentrations.
2: \phi_{0} \leftarrow \phi_{B}(\mathbf{N}_{0}) Calculate BOS \phi using initial BOS nuclide densities.
3: for i \leftarrow 0,1,\ldots do Loop over burnup points.
4:   \mathbf{N}_{i+1}^{(0)} \leftarrow \exp \left[ \mathbb{M}(\phi_{i}) \Delta t\right] \mathbf{N}_{i} Obtain EOS nuclide densities by burning forward (predictor) using previously obtained BOS \phi.
5: for n \leftarrow 1,2,\ldots, c do Loop over (corrector) iterations for current burnup point.
6: \phi^{(n)}_{i+1} \leftarrow \phi_{B} (\mathbf{N}^{(n-1)}_{i+1}) Calculate estimate for EOS \phi using current estimate of EOS nuclide densities.
7: \overline{\phi}^{(n)}_{i+1} \leftarrow \sum_{j=1}^{n} \phi^{(j)}_{i+1}/n Relax (average) the EOS \phi over all EOS estimates obtained for current burnup point.
8: \mathbf{N}_{i+1}^{(n)} \leftarrow \exp [ \mathbb{M}(\overline{\phi}^{(n)}_{i+1}) \Delta t] \mathbf{N}_{i} Obtain the next estimate for EOS nuclide densities by re-burning from BOS nuclide densities (corrector) using relaxed (averaged) EOS \overline{\phi}.
9: end for Loop to next iteration for current burnup point or go forward if all iterations have been simulated.
10: \mathbf{N}_{i+1} \leftarrow \mathbf{N}^{(c)}_{i+1} The last obtained EOS nuclide densities will be the final ones and serve as BOS densities for the next step.
11: \phi_{i+1} \leftarrow \overline{\phi}^{(c)}_{i+1} The last obtained relaxed EOS \overline{\phi} will serve as the final EOS \phi for current step and as BOS \phi 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

See:

Noteworthy things

  • No neutron transport solution is actually calculated using the final concentrations for a certain point.

References

  1. ^ 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