Steady State Neutron Flux Calculations

This application mode is used for calculating the equilibrium fission source distribution (and related output values), at a fixed model state.

Note

The name of the application is a bit misleading, as it is not intended only to be used for models in a critical state. In fact, it is frequently used to calculate \(k_{eff}\) for sub- and super critical configurations. However, most of the other outputs (such as power and flux distributions), only make sense for a critical state.

Typical Use Cases

  1. Calculate the effective multiplication factor \(k_{eff}\).

  2. Compute the equilibrium power distribution, and maximum power density (peaking factor).

  3. Compute various flux distributions (and other responses).

  4. Calculate kinetics data (e.g. \(\beta_{eff}\)).

Creating an Input Module

An empty input module can be created using the manager utility:

oscar5 MY_REACTOR.manager critical_case MODULE_NAME [options]

This command the following optional arguments:

--package <str>

The subpackage to which this module should be added. The default value is ‘projects’.

--description <str>

A short description of the input module.

--configuration <str>

The configuration module that contains the model used in this script.

--mco <str>

Name (or path) of the model configuration archive that should be used in this script.

Attention

This option can not be specified when --configuration is also specified.

--time-stamp <str>

Time point at which facility state should be recovered (see app_param.time_stamp). Must be a valid datetime.

A typical input module has the following form:

import applications.critical_case as app
from ..configurations.my_conf import model
from core import *

# Create parameter set
ccp = app.parameters()

# Set some base application parameters
cpp.time_stamp = '01-01-2020 00:00:00'

# Set and modify the model
cpp.model = model
cpp.model.set_banks(control.percent_extracted(50))
# etc

# Application specific
cpp.power = 1 * units.MW
# etc

if __name__ == '__main__':
 app.main(parameters=cpp)

Additional Input Parameters

In the following ccp denotes a critical_case parameter set, created as follows:

import applications.critical_cases as app

cpp = app.parameters()

This application supports all the general parameters, as well as the following:

cpp.power

: power

= 1 W

The power used to normalize flux levels.

cpp.power_maps

: bool

= True

Flag indicating that channel power distributions should be calculated.

cpp.mass_map

: bool

= False

If the flag is set, a summary of the current core loading will be written (as a comment block) to the input file.

cpp.kinetics_parameters

: bool

= False

Flag indicating that kinetics parameters should be calculated.

cpp.model.fueled_primitive_powers

: bool or tuple

Set the mesh for detailed power distribution calculations. If set to True, the default mesh (if available) will be used. Otherwise two integers can be specified, with the values denoting the number of radial and axial meshes each fueled primitive will be subdivided by.

How these numbers are interpreted depends on the fuel type present. For example, if the model contains plate assemblies

>>> cpp.model.fueled_primitive_powers = 6, 8

will de divide each plate length into 6 equal pieces and 8 axial pieces. Thus, power will be estimated at 48 positions in each plate. When pin or dispersed fuel type assemblies are used, the radial subdivision is ignored, and pins or compacts are only subdivided axially.

To calculate only the average power in each primitive (plate, pin or compact), use

>>> cpp.model.fueled_primitive_powers = 0, 0

Note

For nodal codes, which typically rely on pre-tabulated data for power reconstruction, the subdivision data is ignored, and the system only checks if this flag was set.

cpp.add_response(r, tag=None)

Adds a response that should be calculated based on the equilibrium flux distribution.

Parameters:
  • r – The target response object.

  • tag (string) – Re-specify the response tag.

Command Line Usage

This application supports all the standard application modes and options as described in General Application Command Line Interface (CLI).

Typical command line usage

oscar5 MY_REACTOR.projects.my_case --target-mode <MODE> --config-file <CONFIG> run --threads 24

Output Tokens

This application mode hase an extensive set of output tokens, which are grouped by topic in the following sections. See also Using output tokens for general guidelines on using these tokens.

General output tokens

critical_case.multiplication_factor(**kwargs)

Extract the effective multiplication factor \(k_{eff}\).

critical_case.critical_position(bank_names=None, **kwargs)

Extract the bank position(s) used in the calculation.

Parameters:

bank_names (string or list [string]) – Specify which bank position(s) should be extracted. If not specified, the positions of all the banks will be retrieved. These names must correspond to the model bank names, as defined in model.banks.

The return type depends on the value of bank_names:

  1. If a single string value, a single travel value, given that bank’s position.

  2. If it is a list of bank names, a dict mapping these names to their travel values.

  3. If None (the default), a dict mapping all model.banks to their travel values.

Note

If app_param.bank_search was not set, this will simply return the input bank positions, as defined using model.set_banks().

Examples