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
Calculate the effective multiplication factor \(k_{eff}\).
Compute the equilibrium power distribution, and maximum power density (peaking factor).
Compute various flux distributions (and other responses).
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.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
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.
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:
Note
If
app_param.bank_search
was not set, this will simply return the input bank positions, as defined usingmodel.set_banks()
.