# Difference between revisions of "Transient simulations"

(Created page with "This page outlines the usage instructions for the methodology in Serpent to conduct time dependent simulations starting from a criticality source. For information about extern...") |
|||

Line 1: | Line 1: | ||

− | This page outlines the usage instructions for the methodology in Serpent to conduct time dependent simulations starting from a criticality source. For information about external/fixed source simulations with population control see: [[Dynamic external source simulation mode]] | + | This page outlines the usage instructions for the methodology in Serpent to conduct time dependent simulations starting from a criticality source. These capabilities have been developed for transient calculations starting from a known critical system in steady state conditions. For information about external/fixed source simulations with population control see: [[Dynamic external source simulation mode]] |

+ | |||

+ | '''The transient methodology is still under development, which means that any results should be examined with caution.''' | ||

+ | |||

+ | Transient analyses with Serpent currently have to be executed in two parts: | ||

+ | # A criticality source simulation to generate the steady state neutron and delayed neutron precursor sources for the time dependent simulation. | ||

+ | # A time dependent simulation to model the time evolution of the system starting from the steady state source distributions. | ||

+ | |||

+ | == Generating the steady state source distributions == | ||

+ | |||

+ | === Input === | ||

+ | |||

+ | Generating the initial source for the dynamic simulation is done with a criticality source simulation (see [[Physor2016_point_kinetics_transient_inputs]] for a model input). The only modification required to an existing input is the addition of one line: | ||

+ | |||

+ | '''set''' '''savesrc''' ''FILEPATH'' [''PN'' ''PP'' ''NX'' ''NY'' ''NZ''] | ||

+ | |||

+ | The <tt>''FILEPATH''</tt> argument tells Serpent, where to save the source. Serpent will actually generate four source files: | ||

+ | |||

+ | <filepath>.main - containing general information of the generated source | ||

+ | <filepath>.prec - containing the cartesian mesh precursor source | ||

+ | <filepath>.live - containing the live neutron source (binary) | ||

+ | <filepath>.precpoints - containing the point-wise precursor source (binary) | ||

+ | |||

+ | The other arguments are optional: <Pn> and <Pp> (numbers between [0,1]) can be used to adjust the probability store any single neutron or precursor to the source respectively. The default values are 1.0 for each. You might have to adjust <Pn> to a smaller value though. Since the probability to store a live neutron in an interaction has an inverse dependence on the cross section used to sample the path, the way the probability is calculated can lead to larger than unity probabilities for some interactions. In these cases you will see a warning from the function WriteSourceFile: | ||

+ | |||

+ | ***** Fri Feb 5 11:58:16 2016 (seed = 1454666276) | ||

+ | Warning message from function WriteSourceFile: | ||

+ | |||

+ | P larger than 1 (1.630892E+00) | ||

+ | |||

+ | and you can adjust <Pn> to make the saving probabilities smaller than one (<Pn> is directly used to multiply the saving probability). <Pn> linearly affects the number of neutrons being saved though, so making it too small means that you'll have to simulate lots of neutrons to get an adequate number of source points. In the attached case setting <Pn> to 0.25 still gives larger than unity probabilities in 0.04% of the interactions, which affects the source distribution, although probably only slightly. | ||

+ | |||

+ | You can set a smaller than unity <Pp> if you, for some reason, want a smaller number of point-wise precursors saved, but unless you're running out of disk space, you probably don't want to touch it. | ||

+ | |||

+ | <nx> <ny> <nz> will set the size of the cartesian mesh used to tally the precursor populations (1x1x1 by default). If you are using the point-wise precursor tracking you don't have to worry about this. | ||

+ | |||

+ | *Additionally, you may want to turn off all the implicit reaction modes in Serpent to ensure that all of your neutrons will have the same weight when the probability to store them is calculated. Implicit nxn is turned on by default. Using implicit nxn will just mean that some neutrons will end up with slightly higher weights and may have slightly larger saving probabilities requiring you to further adjust <Pn> so it is not necessary to switch it off. You can switch it off, by disabling group constant generation | ||

+ | |||

+ | set gcu -1 | ||

+ | |||

+ | and switching off the implicit reaction modes | ||

+ | |||

+ | set impl 0 0 0 | ||

+ | |||

+ | A criticality source simulation | ||

+ | |||

+ | === Output === | ||

+ | |||

+ | |||

+ | ==== .main-file ==== | ||

+ | |||

+ | The .main-file contains the total neutron population of the system on the first line accompanied with it's estimated standard relative error. Serpent uses this to set the initial power level of the dynamic simulation to match that of the criticality source simulation. | ||

+ | |||

+ | The second line contains information about the binning of the precursor population (<N_time> <N_prec_group> <nx> <ny> <nz>) | ||

+ | |||

+ | The third line contains the simulation time the saved source matches. This will only be non-zero if using "set savesrc" in a dynamic simulation. | ||

+ | |||

+ | The fourth line contains the decay constants of the delayed neutron groups. Serpent uses these to check that the same group structure is being used in the criticality source simulation and the dynamic simulation. | ||

+ | |||

+ | ==== .prec-file ==== | ||

+ | |||

+ | The .prec-file contains the group-wise precursor populations tallied on the regular mesh. With point-wise precursors they are only used to set the normalization of the precursors. Each line contains a single tally bin: | ||

+ | |||

+ | <time_bin> <group_bin> <spatial_bin> <population> <standard_relative_error> | ||

+ | |||

+ | ==== .live-file ==== | ||

+ | |||

+ | The .live contains neutrons stored at random interactions (uniformly distributed in time) during the active cycles of the criticality source simulation. Each neutron takes up 9*size(double) bytes of disk space, which means that you can calculate the number of stored neutrons by dividing the file size by 9*size(double), typically 9*8. This is a good way to estimate if you stored enough neutrons for your dynamic simulation. | ||

+ | |||

+ | ==== .precpoints-file ==== | ||

+ | |||

+ | The .precpoints contains point-wise precursors stored during the active cycles of the criticality source simulation. Each precursor also takes up 9*size(double) bytes of disk space, so you can deduce the number of stored precursors the same way as with neutrons. | ||

+ | |||

+ | === Important notes === | ||

+ | |||

+ | *The system should be as close to criticality as possible as any deviations result in errors in the live neutron source (due to the k-eigenvalue iteration only being accurate in critical systems) and in the precursor source (since the stable concentrations are calculated assuming steady state). | ||

+ | |||

+ | == Running the time dependent simulation == |

## Revision as of 14:33, 11 March 2016

This page outlines the usage instructions for the methodology in Serpent to conduct time dependent simulations starting from a criticality source. These capabilities have been developed for transient calculations starting from a known critical system in steady state conditions. For information about external/fixed source simulations with population control see: Dynamic external source simulation mode

**The transient methodology is still under development, which means that any results should be examined with caution.**

Transient analyses with Serpent currently have to be executed in two parts:

- A criticality source simulation to generate the steady state neutron and delayed neutron precursor sources for the time dependent simulation.
- A time dependent simulation to model the time evolution of the system starting from the steady state source distributions.

## Contents

## Generating the steady state source distributions

### Input

Generating the initial source for the dynamic simulation is done with a criticality source simulation (see Physor2016_point_kinetics_transient_inputs for a model input). The only modification required to an existing input is the addition of one line:

setsavesrcFILEPATH[PNPPNXNYNZ]

The ` FILEPATH` argument tells Serpent, where to save the source. Serpent will actually generate four source files:

<filepath>.main - containing general information of the generated source <filepath>.prec - containing the cartesian mesh precursor source <filepath>.live - containing the live neutron source (binary) <filepath>.precpoints - containing the point-wise precursor source (binary)

The other arguments are optional: <Pn> and <Pp> (numbers between [0,1]) can be used to adjust the probability store any single neutron or precursor to the source respectively. The default values are 1.0 for each. You might have to adjust <Pn> to a smaller value though. Since the probability to store a live neutron in an interaction has an inverse dependence on the cross section used to sample the path, the way the probability is calculated can lead to larger than unity probabilities for some interactions. In these cases you will see a warning from the function WriteSourceFile:

***** Fri Feb 5 11:58:16 2016 (seed = 1454666276) Warning message from function WriteSourceFile: P larger than 1 (1.630892E+00)

and you can adjust <Pn> to make the saving probabilities smaller than one (<Pn> is directly used to multiply the saving probability). <Pn> linearly affects the number of neutrons being saved though, so making it too small means that you'll have to simulate lots of neutrons to get an adequate number of source points. In the attached case setting <Pn> to 0.25 still gives larger than unity probabilities in 0.04% of the interactions, which affects the source distribution, although probably only slightly.

You can set a smaller than unity <Pp> if you, for some reason, want a smaller number of point-wise precursors saved, but unless you're running out of disk space, you probably don't want to touch it.

<nx> <ny> <nz> will set the size of the cartesian mesh used to tally the precursor populations (1x1x1 by default). If you are using the point-wise precursor tracking you don't have to worry about this.

- Additionally, you may want to turn off all the implicit reaction modes in Serpent to ensure that all of your neutrons will have the same weight when the probability to store them is calculated. Implicit nxn is turned on by default. Using implicit nxn will just mean that some neutrons will end up with slightly higher weights and may have slightly larger saving probabilities requiring you to further adjust <Pn> so it is not necessary to switch it off. You can switch it off, by disabling group constant generation

set gcu -1

and switching off the implicit reaction modes

set impl 0 0 0

A criticality source simulation

### Output

#### .main-file

The .main-file contains the total neutron population of the system on the first line accompanied with it's estimated standard relative error. Serpent uses this to set the initial power level of the dynamic simulation to match that of the criticality source simulation.

The second line contains information about the binning of the precursor population (<N_time> <N_prec_group> <nx> <ny> <nz>)

The third line contains the simulation time the saved source matches. This will only be non-zero if using "set savesrc" in a dynamic simulation.

The fourth line contains the decay constants of the delayed neutron groups. Serpent uses these to check that the same group structure is being used in the criticality source simulation and the dynamic simulation.

#### .prec-file

The .prec-file contains the group-wise precursor populations tallied on the regular mesh. With point-wise precursors they are only used to set the normalization of the precursors. Each line contains a single tally bin:

<time_bin> <group_bin> <spatial_bin> <population> <standard_relative_error>

#### .live-file

The .live contains neutrons stored at random interactions (uniformly distributed in time) during the active cycles of the criticality source simulation. Each neutron takes up 9*size(double) bytes of disk space, which means that you can calculate the number of stored neutrons by dividing the file size by 9*size(double), typically 9*8. This is a good way to estimate if you stored enough neutrons for your dynamic simulation.

#### .precpoints-file

The .precpoints contains point-wise precursors stored during the active cycles of the criticality source simulation. Each precursor also takes up 9*size(double) bytes of disk space, so you can deduce the number of stored precursors the same way as with neutrons.

### Important notes

- The system should be as close to criticality as possible as any deviations result in errors in the live neutron source (due to the k-eigenvalue iteration only being accurate in critical systems) and in the precursor source (since the stable concentrations are calculated assuming steady state).