# Difference between revisions of "Conversion script for homogenized cross sections"

(54 intermediate revisions by 3 users not shown) | |||

Line 1: | Line 1: | ||

− | In order to be used with deterministic core simulators, the group constant output produced by Serpent has to be converted into appropriate format. Work on an automated conversion script has been started, and the latest version of the SXSFit scirpt is available | + | In order to be used with deterministic core simulators, the group constant output produced by Serpent has to be converted into appropriate format. Work on an automated conversion script has been started, and the latest version of the SXSFit scirpt is available [http://montecarlo.vtt.fi/download/sxsfit.zip on-line]. Currently only the Serpent-ARES code sequence is fully supported. The script has been used to produce cross section libraries to ARES initial core <ref>Leppänen, J., Mattila, R., and Pusa, M. ''"Validation of the Serpent-ARES code sequence using the MIT BEAVRS benchmark - Initial core at HZP conditions."'' Ann. Nucl. Energy, [http://www.sciencedirect.com/science/article/pii/S030645491400084X '''69''' (2014) 212-225].</ref> and fuel cycle simulations.<ref>Leppänen, J. and Mattila, R. ''"Validation of the Serpent-ARES code sequence using the MIT BEAVRS benchmark – HFP conditions and fuel cycle 1 simulations."'' Ann. Nucl. Energy, [http://www.sciencedirect.com/science/article/pii/S0306454916304121 '''96''' (2016) 324-331].</ref> |

− | The script reads the homogenized group constant data from the <tt>[input].coe</tt> output files produced using the [[Automated burnup sequence]], and takes advantage of a number of predetermined variables to pass information into the output. The format conversion depends on the code sequence, as described below. | + | The script reads the homogenized group constant data from the <tt>[input].coe</tt> output files produced using the [[Automated burnup sequence]] with [[Input_syntax_manual#coef_.28coefficient_matrix_definition.29|coefficient matrixes]], and takes advantage of a number of predetermined variables to pass information into the output. The format conversion depends on the code sequence, as described below. |

+ | |||

+ | The SXSFit script is run from the command line: | ||

+ | |||

+ | sxsfit ''INPUT'' | ||

+ | |||

+ | The input file identifies two parameters: | ||

+ | |||

+ | '''mode''' ''CODE'' ''TYPE'' | ||

+ | |||

+ | where: | ||

+ | {| | ||

+ | | <tt>''CODE''</tt> | ||

+ | | : is the code sequence for which the data is produced (currently only "ares" is fully supported) | ||

+ | |- | ||

+ | | <tt>''RUN''</tt> | ||

+ | | : is the type of data produced ("base", "hzp", "hfp" or "dep") | ||

+ | |} | ||

+ | |||

+ | The data types are: | ||

+ | |||

+ | {| | ||

+ | | base | ||

+ | | : only the nominal branches are run, produced cross section library has no dependence on state variables | ||

+ | |- | ||

+ | | hzp | ||

+ | | : only branches required to perform hot zero-power calculations are run, cross sections depend on boron concentration and control rod insertion, but not on state variables | ||

+ | |- | ||

+ | | hfp | ||

+ | | : all branches required to perform hot full-power calculations are run, dependence on all parameters but without burnup | ||

+ | |- | ||

+ | | dep | ||

+ | | : all branches and histories required to perform fuel cycle simulations are run, dependence on all parameters and burnup | ||

+ | |} | ||

+ | |||

+ | The second supported input parameter is <tt>'''lib'''</tt>, and the format depends on the code sequence as described below. | ||

+ | |||

+ | == Serpent-ARES == | ||

+ | |||

+ | The cross section model in ARES is based on the combination of tabular interpolation and polynomial expansions.<ref>Mattila, R. ''"Kiehutusvesireaktorin vaikutusalamalli CROSS."'' YE-PR-5/02, VTT Technical Research Centre of Finland, 2002 (in Finnish)</ref> Tabulated data is used for burnup points, control rod insertion branches and moderator temperature (PWR) or void (BWR) histories. The remaining variations are accounted for by polynomial | ||

+ | interpolation of the form: | ||

+ | |||

+ | <math> | ||

+ | \Sigma = \Sigma_0 + a\rho^2+b\rho | ||

+ | + cT_\mathrm{f}^2+dT_\mathrm{f} | ||

+ | + eT_\mathrm{m}^2+fT_\mathrm{m} | ||

+ | + g\rho T_\mathrm{f} | ||

+ | + h\rho T_\mathrm{m}^2+i\rho T_\mathrm{m} | ||

+ | + jT_\mathrm{f}T_\mathrm{m} | ||

+ | + kH_\mathrm{cr} | ||

+ | + lB^2+mB | ||

+ | + nH_\mathrm{bo}^2+oH_\mathrm{bo} | ||

+ | + pB^2T_\mathrm{m}^2 + qB^2T_\mathrm{m} + vBT_\mathrm{m}^2+wBT_\mathrm{m} | ||

+ | + rB^2T_\mathrm{f} +sBT_\mathrm{f} | ||

+ | + tB^2\rho+uB\rho | ||

+ | </math> | ||

+ | |||

+ | where <math>\Sigma_0</math> is the value at the nominal state, <math>a\dots w</math> are the | ||

+ | polynomial coefficients and: | ||

+ | {| | ||

+ | |<math>\rho</math> | ||

+ | |is the difference in relative coolant density compared to nominal value | ||

+ | |- | ||

+ | |<math>T_\mathrm{f}</math> | ||

+ | |is the difference in the square root of fuel temperature compared to nominal value | ||

+ | |- | ||

+ | |<math>T_\mathrm{m}</math> | ||

+ | |is difference in moderator temperature compared to nominal value | ||

+ | |- | ||

+ | |<math>H_\mathrm{cr}</math> | ||

+ | |is the control rod history (BWR) | ||

+ | |- | ||

+ | |<math>B</math> | ||

+ | |is the boron concentration (PWR) | ||

+ | |- | ||

+ | |<math>H_\mathrm{bo}</math> | ||

+ | |is the boron history (PWR) | ||

+ | |} | ||

+ | The SXSFit script calculates the coefficients by fitting the polynomial into 24 points corresponding to different state point combinations. | ||

+ | |||

+ | Changes in the density of coolant in liquid state is included in the | ||

+ | coolant temperature parameter. Separate parametrization for coolant density | ||

+ | is to account for the effects of sub-cooled boiling. In practice this means | ||

+ | running additional branches with small but non-zero void fraction. | ||

+ | |||

+ | The first 5 parameter variations are handled as branch variations. The procedure is repeated for different Moderator temperature (PWR) or coolant void (BWR) histories. Boron histories are accounted for by separate burnup calculations without branches. All branch calculations are repeated for different control rod types. | ||

+ | |||

+ | === Serpent variables === | ||

+ | |||

+ | The state point information is passed into the conversions script using the following variables: | ||

+ | {| | ||

+ | |<tt>''VHI''</tt> | ||

+ | | : moderator temperature (PWR) or coolant void history (BWR) | ||

+ | |- | ||

+ | |<tt>''BHI''</tt> | ||

+ | | : boron history | ||

+ | |- | ||

+ | |<tt>''BOR''</tt> | ||

+ | | : boron concentration | ||

+ | |- | ||

+ | |<tt>''CR''</tt> | ||

+ | | : insertion of contro rods (0 = no rods, n = rod type n inserted) | ||

+ | |- | ||

+ | |<tt>''TFU''</tt> | ||

+ | | : fuel temperature | ||

+ | |- | ||

+ | |<tt>''VOI''</tt> | ||

+ | | : coolant void fraction | ||

+ | |- | ||

+ | |<tt>''TMO''</tt> | ||

+ | | : moderator temperature | ||

+ | |} | ||

+ | |||

+ | === SXSFit input === | ||

+ | |||

+ | The syntax for the input block producing cross section library for a single assembly type is: | ||

+ | |||

+ | '''lib''' ''NAME'' | ||

+ | ''BOR<sub>0</sub>'' ''TFU<sub>0</sub>'' ''TMO<sub>0</sub>'' ''N'' | ||

+ | ''COE<sub>1</sub>'' | ||

+ | ''COE<sub>1</sub>'' | ||

+ | ... | ||

+ | ''COE<sub>N</sub>'' | ||

+ | |||

+ | where the input values are: | ||

+ | {| | ||

+ | | <tt>''NAME''</tt> | ||

+ | | : name of the produced library | ||

+ | |- | ||

+ | | <tt>''BOR<sub>0</sub>''</tt> | ||

+ | | : nominal boron concentration | ||

+ | |- | ||

+ | | <tt>''TFU<sub>0</sub>''</tt> | ||

+ | | : nominal fuel temperature | ||

+ | |- | ||

+ | | <tt>''TMO<sub>0</sub>''</tt> | ||

+ | | : nominal moderator temperature | ||

+ | |- | ||

+ | | <tt>''N''</tt> | ||

+ | | : number of Serpent coe-files | ||

+ | |- | ||

+ | | <tt>''COE<sub>1</sub>''</tt> ... <tt>''COE<sub>N</sub>''</tt> | ||

+ | | : names of the coe-files | ||

+ | |} | ||

+ | |||

+ | === Example === | ||

+ | |||

+ | The [[Automated burnup sequence example 1|complete input example]] demonstrating the use of the automated burnup sequence defines a single history calculation with a number branches. The history variables are defined in a separate branch: | ||

+ | |||

+ | <nowiki> | ||

+ | % --- History variables: | ||

+ | |||

+ | branch HIS | ||

+ | var LIB ENDFB7 | ||

+ | var BHI 500 | ||

+ | var VHI 550</nowiki> | ||

+ | |||

+ | which is included on every restart in the coefficient matrix: | ||

+ | |||

+ | <nowiki> | ||

+ | |||

+ | % --- Coefficient matrix: (full set of variations: 3x3x3x2) | ||

+ | |||

+ | coef 11 0 0.1 1 3 5 10 15 20 30 40 50 | ||

+ | |||

+ | 3 nom Blo Bhi | ||

+ | 3 nom Clo Chi | ||

+ | 3 nom Flo Fhi | ||

+ | 2 nom CR | ||

+ | 1 HIS</nowiki> | ||

+ | |||

+ | This means that these variables are included in every output block of the coe-file. Variable <tt>LIB</tt> is for additional information, and not identified or used by SXSFit. The remaining variables are set together with the variations defined in the branch cards, for example: | ||

+ | |||

+ | <nowiki> | ||

+ | % --- Branch to high fuel temperature: | ||

+ | |||

+ | branch Fhi | ||

+ | stp fuel -10.1348 1200 | ||

+ | stp zirc4 -6.5020 628 | ||

+ | repu FUE FUEH | ||

+ | var TFU 1200 </nowiki> | ||

+ | |||

+ | defines a branch to high fuel temperature and sets the value of <tt>FUE</tt> accordingly. It should be noted that the interpolation polynomial does not include all cross terms, so the 3x3x3x2 matrix has defines some unnecessary runs. The number of branches can be reduced to minimum by applying multiple variations per branch. | ||

+ | |||

+ | If similar history calculations were defined for all moderator temperature and boron histories (3x3 cases), the input for SXSFit could look like: | ||

+ | |||

+ | <nowiki> | ||

+ | mode ares dep | ||

+ | |||

+ | lib ASM1.cs | ||

+ | 0.0 900.0 575.0 9 | ||

+ | Y00_H01.coe | ||

+ | Y00_H02.coe | ||

+ | Y00_H03.coe | ||

+ | Y00_H04.coe | ||

+ | Y00_H05.coe | ||

+ | Y00_H06.coe | ||

+ | Y00_H07.coe | ||

+ | Y00_H08.coe | ||

+ | Y00_H09.coe</nowiki> | ||

+ | |||

+ | The cross section data for producing library file <tt>ASM1.cs</tt> (for a single assembly type) is collected from 9 Serpent runs: <tt>Y00_H01.coe</tt> ... <tt>Y00_H09.coe</tt>. | ||

+ | |||

+ | == References == | ||

+ | |||

+ | <references/> | ||

+ | |||

+ | [[Category:External programs and scripts]] |

## Latest revision as of 15:48, 12 May 2022

In order to be used with deterministic core simulators, the group constant output produced by Serpent has to be converted into appropriate format. Work on an automated conversion script has been started, and the latest version of the SXSFit scirpt is available on-line. Currently only the Serpent-ARES code sequence is fully supported. The script has been used to produce cross section libraries to ARES initial core ^{[1]} and fuel cycle simulations.^{[2]}

The script reads the homogenized group constant data from the `[input].coe` output files produced using the Automated burnup sequence with coefficient matrixes, and takes advantage of a number of predetermined variables to pass information into the output. The format conversion depends on the code sequence, as described below.

The SXSFit script is run from the command line:

sxsfitINPUT

The input file identifies two parameters:

modeCODETYPE

where:

CODE |
: is the code sequence for which the data is produced (currently only "ares" is fully supported) |

RUN |
: is the type of data produced ("base", "hzp", "hfp" or "dep") |

The data types are:

base | : only the nominal branches are run, produced cross section library has no dependence on state variables |

hzp | : only branches required to perform hot zero-power calculations are run, cross sections depend on boron concentration and control rod insertion, but not on state variables |

hfp | : all branches required to perform hot full-power calculations are run, dependence on all parameters but without burnup |

dep | : all branches and histories required to perform fuel cycle simulations are run, dependence on all parameters and burnup |

The second supported input parameter is ` lib`, and the format depends on the code sequence as described below.

## Serpent-ARES

The cross section model in ARES is based on the combination of tabular interpolation and polynomial expansions.^{[3]} Tabulated data is used for burnup points, control rod insertion branches and moderator temperature (PWR) or void (BWR) histories. The remaining variations are accounted for by polynomial
interpolation of the form:

where is the value at the nominal state, are the polynomial coefficients and:

is the difference in relative coolant density compared to nominal value | |

is the difference in the square root of fuel temperature compared to nominal value | |

is difference in moderator temperature compared to nominal value | |

is the control rod history (BWR) | |

is the boron concentration (PWR) | |

is the boron history (PWR) |

The SXSFit script calculates the coefficients by fitting the polynomial into 24 points corresponding to different state point combinations.

Changes in the density of coolant in liquid state is included in the coolant temperature parameter. Separate parametrization for coolant density is to account for the effects of sub-cooled boiling. In practice this means running additional branches with small but non-zero void fraction.

The first 5 parameter variations are handled as branch variations. The procedure is repeated for different Moderator temperature (PWR) or coolant void (BWR) histories. Boron histories are accounted for by separate burnup calculations without branches. All branch calculations are repeated for different control rod types.

### Serpent variables

The state point information is passed into the conversions script using the following variables:

VHI |
: moderator temperature (PWR) or coolant void history (BWR) |

BHI |
: boron history |

BOR |
: boron concentration |

CR |
: insertion of contro rods (0 = no rods, n = rod type n inserted) |

TFU |
: fuel temperature |

VOI |
: coolant void fraction |

TMO |
: moderator temperature |

### SXSFit input

The syntax for the input block producing cross section library for a single assembly type is:

libNAMEBOR_{0}TFU_{0}TMO_{0}NCOE_{1}COE..._{1}COE_{N}

where the input values are:

NAME |
: name of the produced library |

BOR_{0} |
: nominal boron concentration |

TFU_{0} |
: nominal fuel temperature |

TMO_{0} |
: nominal moderator temperature |

N |
: number of Serpent coe-files |

... COE_{1}COE_{N} |
: names of the coe-files |

### Example

The complete input example demonstrating the use of the automated burnup sequence defines a single history calculation with a number branches. The history variables are defined in a separate branch:

% --- History variables: branch HIS var LIB ENDFB7 var BHI 500 var VHI 550

which is included on every restart in the coefficient matrix:

% --- Coefficient matrix: (full set of variations: 3x3x3x2) coef 11 0 0.1 1 3 5 10 15 20 30 40 50 3 nom Blo Bhi 3 nom Clo Chi 3 nom Flo Fhi 2 nom CR 1 HIS

This means that these variables are included in every output block of the coe-file. Variable `LIB` is for additional information, and not identified or used by SXSFit. The remaining variables are set together with the variations defined in the branch cards, for example:

% --- Branch to high fuel temperature: branch Fhi stp fuel -10.1348 1200 stp zirc4 -6.5020 628 repu FUE FUEH var TFU 1200

defines a branch to high fuel temperature and sets the value of `FUE` accordingly. It should be noted that the interpolation polynomial does not include all cross terms, so the 3x3x3x2 matrix has defines some unnecessary runs. The number of branches can be reduced to minimum by applying multiple variations per branch.

If similar history calculations were defined for all moderator temperature and boron histories (3x3 cases), the input for SXSFit could look like:

mode ares dep lib ASM1.cs 0.0 900.0 575.0 9 Y00_H01.coe Y00_H02.coe Y00_H03.coe Y00_H04.coe Y00_H05.coe Y00_H06.coe Y00_H07.coe Y00_H08.coe Y00_H09.coe

The cross section data for producing library file `ASM1.cs` (for a single assembly type) is collected from 9 Serpent runs: `Y00_H01.coe` ... `Y00_H09.coe`.

## References

- ^ Leppänen, J., Mattila, R., and Pusa, M.
*"Validation of the Serpent-ARES code sequence using the MIT BEAVRS benchmark - Initial core at HZP conditions."*Ann. Nucl. Energy,**69**(2014) 212-225. - ^ Leppänen, J. and Mattila, R.
*"Validation of the Serpent-ARES code sequence using the MIT BEAVRS benchmark – HFP conditions and fuel cycle 1 simulations."*Ann. Nucl. Energy,**96**(2016) 324-331. - ^ Mattila, R.
*"Kiehutusvesireaktorin vaikutusalamalli CROSS."*YE-PR-5/02, VTT Technical Research Centre of Finland, 2002 (in Finnish)