SCMTriPowerAux

Computes axial power rate (W/m) assigned to the fuel pins in a triangular lattice arrangement

Overview

This AuxKernel does the same thing as the SCMTriPowerIC IC kernel, but is more versatile in the sense that it can populate q_prime not only during initialization but at multiple times during the solve. This object does two things:

  • At initial setup and at the start of each time step, it computes the trapezoidal integral of the axial power profile function over each pin on the subchannel axial grid. This normalization does not depend on "power".

  • Every time it is executed, as set by "execute_on", it sets q_prime at each pin node to the pin power times the axial power profile function, divided by that integral. The pin power is computed from the current value of "power" and the radial power distribution.

The "power" postprocessor executes before this object on every execution flag they share, so q_prime uses its current value, including within fixed point iterations. The exception is a "power" postprocessor listed in the executioner's transformed_postprocessors: it is relaxed or accelerated after the TIMESTEP_BEGIN objects execute, so q_prime set on TIMESTEP_BEGIN uses the value before that transformation. Execute both on the same flags, for example TIMESTEP_BEGIN so that the solver uses the power of the current time step; otherwise a time-dependent power is applied one execution late. This object warns if the postprocessor does not execute on all of its "execute_on" flags, or if it sets force_postaux. These checks are skipped when "power" is a Receiver postprocessor, because its value is set by a transfer rather than by its own execution. In that case q_prime is current only if the application sending the power computes it before the transfer executes, for example on MULTIAPP_FIXED_POINT_BEGIN when the transfer executes on TIMESTEP_BEGIN; otherwise q_prime uses the power of the previous time step. Set "verbose" to print the per-pin correction factor, the heated length divided by the integral of the axial power profile function, every time it is computed.

The axial power profile function "axial_heat_rate" may depend on time: both the integral and q_prime are evaluated at the current time, so its amplitude and its shape can change between time steps while each pin keeps its assigned power. It must not depend on values that change during a time step, such as postprocessors, because the integral is computed at the start of the time step, before they execute, while q_prime uses their updated values. The pin powers then no longer match "power".

Caveat

This AuxKernel requires a pin mesh. The axial heat rate q_prime is assigned only to the nodes of the pin mesh. If the subchannel mesh has no pin mesh, this object reports an error.

Input Parameters

  • filenamename of radial power profile .txt file (should be a single column) [UnitLess].

    C++ Type:std::string

    Controllable:No

    Description:name of radial power profile .txt file (should be a single column) [UnitLess].

  • powerThe postprocessor or Real to use for the total power of the subassembly [W]

    C++ Type:PostprocessorName

    Unit:(no unit assumed)

    Controllable:No

    Description:The postprocessor or Real to use for the total power of the subassembly [W]

  • variableThe name of the variable that this object applies to

    C++ Type:AuxVariableName

    Unit:(no unit assumed)

    Controllable:No

    Description:The name of the variable that this object applies to

Required Parameters

  • axial_heat_rate1.0Axial shape of the heat rate as a function of the distance from the start of the heated section [Unitless]. Its magnitude does not matter because each pin is rescaled to its assigned power

    Default:1.0

    C++ Type:FunctionName

    Unit:(no unit assumed)

    Controllable:No

    Description:Axial shape of the heat rate as a function of the distance from the start of the heated section [Unitless]. Its magnitude does not matter because each pin is rescaled to its assigned power

  • blockThe list of blocks (ids or names) that this object will be applied

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

    Controllable:No

    Description:The list of blocks (ids or names) that this object will be applied

  • boundaryThe list of boundaries (ids or names) from the mesh where this object applies

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

    Controllable:No

    Description:The list of boundaries (ids or names) from the mesh where this object applies

  • check_boundary_restrictedTrueWhether to check for multiple element sides on the boundary in the case of a boundary restricted, element aux variable. Setting this to false will allow contribution to a single element's elemental value(s) from multiple boundary sides on the same element (example: when the restricted boundary exists on two or more sides of an element, such as at a corner of a mesh

    Default:True

    C++ Type:bool

    Controllable:No

    Description:Whether to check for multiple element sides on the boundary in the case of a boundary restricted, element aux variable. Setting this to false will allow contribution to a single element's elemental value(s) from multiple boundary sides on the same element (example: when the restricted boundary exists on two or more sides of an element, such as at a corner of a mesh

  • execute_onLINEAR TIMESTEP_ENDThe list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html.

    Default:LINEAR TIMESTEP_END

    C++ Type:ExecFlagEnum

    Options:XFEM_MARK, FORWARD, ADJOINT, HOMOGENEOUS_FORWARD, ADJOINT_TIMESTEP_BEGIN, ADJOINT_TIMESTEP_END, NONE, INITIAL, LINEAR, LINEAR_CONVERGENCE, NONLINEAR, NONLINEAR_CONVERGENCE, POSTCHECK, TIMESTEP_END, TIMESTEP_BEGIN, MULTIAPP_FIXED_POINT_END, MULTIAPP_FIXED_POINT_BEGIN, MULTIAPP_FIXED_POINT_CONVERGENCE, MULTISYSTEM_FIXED_POINT_ITERATION_END, FINAL, CUSTOM, PRE_DISPLACE

    Controllable:No

    Description:The list of flag(s) indicating when this object should be executed. For a description of each flag, see https://mooseframework.inl.gov/source/interfaces/SetupInterface.html.

  • verboseFalsePrint the per-pin power correction every time it is computed

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Print the per-pin power correction every time it is computed

Optional Parameters

  • 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.

  • enableTrueSet the enabled status of the MooseObject.

    Default:True

    C++ Type:bool

    Controllable:Yes

    Description:Set the enabled status of the MooseObject.

  • search_methodnearest_node_connected_sidesChoice of search algorithm. All options begin by finding the nearest node in the primary boundary to a query point in the secondary boundary. In the default nearest_node_connected_sides algorithm, primary boundary elements are searched iff that nearest node is one of their nodes. This is fast to determine via a pregenerated node-to-elem map and is robust on conforming meshes. In the optional all_proximate_sides algorithm, primary boundary elements are searched iff they touch that nearest node, even if they are not topologically connected to it. This is more CPU-intensive but is necessary for robustness on any boundary surfaces which has disconnections (such as Flex IGA meshes) or non-conformity (such as hanging nodes in adaptively h-refined meshes).

    Default:nearest_node_connected_sides

    C++ Type:MooseEnum

    Options:nearest_node_connected_sides, all_proximate_sides

    Controllable:No

    Description:Choice of search algorithm. All options begin by finding the nearest node in the primary boundary to a query point in the secondary boundary. In the default nearest_node_connected_sides algorithm, primary boundary elements are searched iff that nearest node is one of their nodes. This is fast to determine via a pregenerated node-to-elem map and is robust on conforming meshes. In the optional all_proximate_sides algorithm, primary boundary elements are searched iff they touch that nearest node, even if they are not topologically connected to it. This is more CPU-intensive but is necessary for robustness on any boundary surfaces which has disconnections (such as Flex IGA meshes) or non-conformity (such as hanging nodes in adaptively h-refined meshes).

  • seed0The seed for the master random number generator

    Default:0

    C++ Type:unsigned int

    Controllable:No

    Description:The seed for the master random number generator

  • use_displaced_meshFalseWhether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.

Advanced Parameters

  • prop_getter_suffixAn optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.

    C++ Type:MaterialPropertyName

    Unit:(no unit assumed)

    Controllable:No

    Description:An optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.

  • use_interpolated_stateFalseFor the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:For the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.

Material Property Retrieval Parameters

Input Files