NtAction

commentnote

This action sets up ONLY the variables, kernels, and BCs for neutron diffusion, NOT the variables, kernels, and BCs for precursor tracking. To generate these, see PrecursorAction.

Overview

NtAction greatly reduces input file length and complexity by automatically setting up variables, kernels, and BCs for the neutron diffusion equations. When including only the required input parameters, this action constructs the neutron group variables and their associated kernels: SigmaR, GroupDiffusion, InScatter, and CoupledFissionKernel. With account_delayed set to True, DelayedNeutronSource is also constructed, otherwise this kernel is not constructed and the simulation does not consider the delayed neutron precursor effects on the neutron flux distributions.

For more information regarding the use of NtAction please refer to the tutorials located here, specifically the Multiphysics Reactor Simulations section.

Example Input File Syntax

An example input file without the NtAction, showing only the portion affected by the action:

[Variables]
  [group1]
    order = FIRST
    family = LAGRANGE
  []
  [group2]
    order = FIRST
    family = LAGRANGE
  []
[]

[Kernels]
  #---------------------------------------------------------------------
  # Group 1 Neutronics
  #---------------------------------------------------------------------
  [sigma_r_group1]
    type = SigmaR
    variable = group1
    group_number = 1
  []
  [diff_group1]
    type = GroupDiffusion
    variable = group1
    group_number = 1
  []
  [inscatter_group1]
    type = InScatter
    variable = group1
    group_number = 1
  []
  [fission_source_group1]
    type = CoupledFissionKernel
    variable = group1
    group_number = 1
    block = '0'
    extra_vector_tags = 'eigen'
  []
  [delayed_group1]
    type = DelayedNeutronSource
    variable = group1
    block = '0'
    group_number = 1
  []

  #---------------------------------------------------------------------
  # Group 2 Neutronics
  #---------------------------------------------------------------------
  [sigma_r_group2]
    type = SigmaR
    variable = group2
    group_number = 2
  []
  [diff_group2]
    type = GroupDiffusion
    variable = group2
    group_number = 2
  []
  [fission_source_group2]
    type = CoupledFissionKernel
    variable = group2
    group_number = 2
    block = '0'
    extra_vector_tags = 'eigen'
  []
  [inscatter_group2]
    type = InScatter
    variable = group2
    group_number = 2
  []
[]

[BCs]
  [vacuum_group1]
    type = VacuumConcBC
    boundary = 'fuel_bottom fuel_top mod_bottom mod_top right'
    variable = group1
  []
  [vacuum_group2]
    type = VacuumConcBC
    boundary = 'fuel_bottom fuel_top mod_bottom mod_top right'
    variable = group2
  []
[]
(tutorial/eigenvalue/nts.i)

And then the same information created with the NtAction:

[Nt]
  var_name_base = group
  vacuum_boundaries = 'fuel_bottom mod_bottom right fuel_top mod_top'
  pre_blocks = '0'
  create_temperature_var = false
  eigen = true
[]
(tutorial/eigenvalue/nts-action.i)

Input Parameters

  • account_delayedFalseWhether to account for delayed neutrons.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether to account for delayed neutrons.

  • num_groupsThe total number of energy groups.

    C++ Type:unsigned int

    Controllable:No

    Description:The total number of energy groups.

  • num_precursor_groupsspecifies the total number of precursors to create

    C++ Type:unsigned int

    Controllable:No

    Description:specifies the total number of precursors to create

  • sss2_inputFalseWhether the input follows sss2 form scattering matrices.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether the input follows sss2 form scattering matrices.

  • temperatureName of temperature variable

    C++ Type:std::vector<VariableName>

    Controllable:No

    Description:Name of temperature variable

  • use_exp_formFalseWhether concentrations should be in an exponential/logarithmic format.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether concentrations should be in an exponential/logarithmic format.

  • var_name_basespecifies the base name of the variables

    C++ Type:std::string

    Controllable:No

    Description:specifies the base name of the variables

Required Parameters

  • active__all__ If specified only the blocks named will be visited and made active

    Default:__all__

    C++ Type:std::vector<std::string>

    Controllable:No

    Description:If specified only the blocks named will be visited and made active

  • blockThe block id where this variable lives

    C++ Type:std::vector<SubdomainName>

    Controllable:No

    Description:The block id where this variable lives

  • control_tagsAdds user-defined labels for accessing object parameters via control logic.

    C++ Type:std::vector<std::string>

    Controllable:No

    Description:Adds user-defined labels for accessing object parameters via control logic.

  • create_temperature_varTrueWhether to create the temperature variable.

    Default:True

    C++ Type:bool

    Controllable:No

    Description:Whether to create the temperature variable.

  • dg_for_temperatureTrueWhether the temperature variable should use discontinuous basis functions.

    Default:True

    C++ Type:bool

    Controllable:No

    Description:Whether the temperature variable should use discontinuous basis functions.

  • eigenFalseWhether to run an eigen- instead of a transient- simulation.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether to run an eigen- instead of a transient- simulation.

  • eigenvalue_scaling1Artificial scaling factor for the fission source. Primarily for introducing artificial reactivity to make super/subcritical systems exactly critical or to simulate reactivity insertions/withdrawals.

    Default:1

    C++ Type:double

    Controllable:No

    Description:Artificial scaling factor for the fission source. Primarily for introducing artificial reactivity to make super/subcritical systems exactly critical or to simulate reactivity insertions/withdrawals.

  • familyLAGRANGESpecifies the family of FE shape functions to use for this variable

    Default:LAGRANGE

    C++ Type:MooseEnum

    Options:LAGRANGE, MONOMIAL, HERMITE, SCALAR, HIERARCHIC, CLOUGH, XYZ, SZABAB, BERNSTEIN, L2_LAGRANGE, L2_HIERARCHIC, NEDELEC_ONE, LAGRANGE_VEC, MONOMIAL_VEC, RAVIART_THOMAS, RATIONAL_BERNSTEIN, SIDE_HIERARCHIC

    Controllable:No

    Description:Specifies the family of FE shape functions to use for this variable

  • inactiveIf specified blocks matching these identifiers will be skipped.

    C++ Type:std::vector<std::string>

    Controllable:No

    Description:If specified blocks matching these identifiers will be skipped.

  • init_nts_from_fileFalseWhether to restart simulation using nt output from a previous simulation.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether to restart simulation using nt output from a previous simulation.

  • init_temperature_from_fileFalseWhether to restart simulation using temperature output from a previous simulation.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether to restart simulation using temperature output from a previous simulation.

  • jac_testFalseWhether we're testing the Jacobian and should use some random initial conditions for the precursors.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether we're testing the Jacobian and should use some random initial conditions for the precursors.

  • nt_ic_functionAn initial condition function for the neutrons.

    C++ Type:FunctionName

    Controllable:No

    Description:An initial condition function for the neutrons.

  • orderFIRSTSpecifies the order of the FE shape function to use for this variable (additional orders not listed are allowed)

    Default:FIRST

    C++ Type:MooseEnum

    Options:CONSTANT, FIRST, SECOND, THIRD, FOURTH

    Controllable:No

    Description:Specifies the order of the FE shape function to use for this variable (additional orders not listed are allowed)

  • pre_blocksThe blocks the precursors live on.

    C++ Type:std::vector<SubdomainName>

    Controllable:No

    Description:The blocks the precursors live on.

  • pre_concsAll the variables that hold the precursor concentrations. These MUST be listed by increasing group number.

    C++ Type:std::vector<VariableName>

    Controllable:No

    Description:All the variables that hold the precursor concentrations. These MUST be listed by increasing group number.

  • scaling1Specifies a scaling factor to apply to this variable

    Default:1

    C++ Type:double

    Controllable:No

    Description:Specifies a scaling factor to apply to this variable

  • temp_scalingThe amount by which to scale the temperature variable.

    C++ Type:double

    Controllable:No

    Description:The amount by which to scale the temperature variable.

  • vacuum_bc_typemarshakWhether to apply Marshak, Mark, or Milne vacuum boundary conditions. Defaults to Marshak.

    Default:marshak

    C++ Type:MooseEnum

    Options:marshak, mark, milne

    Controllable:No

    Description:Whether to apply Marshak, Mark, or Milne vacuum boundary conditions. Defaults to Marshak.

  • vacuum_boundariesThe boundaries on which to apply vacuum boundaries.

    C++ Type:std::vector<BoundaryName>

    Controllable:No

    Description:The boundaries on which to apply vacuum boundaries.

Optional Parameters