# Bison Input File Overview

## Understanding the Input File Structure

The input file used by Bison is broken into sections or blocks identified with square brackets. The type of input block is placed in the opening brackets, and empty brackets mark the end of the block.


[BlockName]
<block lines and subblocks>
[]


Each block may have subblocks, which may in turn have subblocks.

### Subblocks Specify Functionality

The Functions block, for example, will have multiple subblocks, each corresponding to a specific function. The line commands in the Functions subblocks will describe the function details. Subblocks are opened and closed with:


[./subblock_name]
<line commands>
[../]


Note that the name given in the subblocks must be unique when compared with all other subblocks in the current block.

Line commands are given as key/value pairs with an equal sign between them. They specify parameters to be used by the object being described. The key is a string (no whitespace), and the value may be a string, an integer, a real number, or a list of strings, integers, or real numbers. Lists are given in single quotes and are separated by whitespace.

Often subblocks will include a type line command. This line command specifies the particular type of object being described. The object type indicates which line commands are appropriate for describing the object. Bison will give an error message if a line command is given that does not apply for the current object type. An error message will also be given if a line command is repeated within the current block or if a line command is unused during the initial setup of the simulation.

In the initial description of a block, line commands common to all subblocks will be described. Those line commands are then omitted from the description of the subblocks but are nonetheless valid line commands for those subblocks.

The name of a subblock ([./<name>]) is most often arbitrary. However, the names of subblocks of Variables, AuxVariables, and Postprocessors define the names used for those entities.

## Types of Blocks Available in Bison

The primary purpose of Bison is to solve coupled systems of partial differential equations (PDEs), where the equations represent important physics related to engineering scale nuclear fuel behavior.

### Kernels, BCs, and Materials

Terms in the governing PDEs are solved through the use of blocks called Kernels. Models defining the constitutive behavior of the mechanical and thermal response are defined in the Materials block, and the BCs block is used to apply boundary conditions to the PDEs.

To see how these input file blocks relate to the governing PDEs used in a Bison simulation problem, review the Bison Simulation Overview.

### Functions and AuxKernels

Kernels, boundary conditions, and material models may require supporting information and calculations. This is achieved through the use of Functions and AuxKernels. For example, a function can be used to define power and time value pairs, which would inform the source term in the energy equation. An AuxKernel could be used to define fission rate or burnup, which could be used to inform material models that are dependent on those values. AuxKernels can also be used for writing information, such as stress components, to the output file.

### Executioners

Execution on the analysis is described in the Executioner block. Line commands describe time stepping details and solver options. See here for details.

### Post Processors

MOOSE Postprocessors compute a single scalar value at each timestep. These values can be minimums, maximums, averages, volumes, or any other scalar quantity. One example of the use of Postprocessors in Bison is computing the gas volume of an LWR rod. The gas volume changes timestep to timestep, but since it is a single scalar quantity, a Postprocessor computes this value. The subobjects under postprocessors gives examples.

## SI Units

Because Bison uses several empirical models, Bison input expects SI units. This convention simplifies model input by eliminating the possibility of one set of units for one model and another set of units for a different model. Any needed unit conversions are done inside Bison.

## Bison Syntax Information

A complete listing of all input syntax options in MOOSE in the Code Reference Manual delves deeper into the topics mentioned above. Required parameters are listed under the label Required Parameters in the Input Parameters section of each description. Note also that you can run:


./bison-opt --dump ## generates a list of valid input options for Bison.