MultiControlDrumFunction

A function that returns an absorber fraction for multiple control drums application.

Overview

MultiControlDrumFunction is a Function object that assigns values for the absorber volume fraction. This is useful for simulating control drums rotation during power transients. It must be used with a mesh generated by PatternedHexMeshGenerator so as to get access to the essential MeshMetaData. This MultiControlDrumFunction is capable of handling multiple control drums within a single mesh.

Principles

A control drum is a common reactivity control approach. It usually has a cylindrical geometry with an outer ring containing both absorber (yellow) and reflector (blue) sections (see Figure 1). Using this MultiControlDrumFunction object, the rotation of the absorber section can be simulated. The entire ring needs to be a single block, while this Function object creates a time and space dependent function to represent the volume percentage of the absorber in this ring block. The function is supposed to work with either FunctionAux to assign value to an elemental auxiliary variable, or GenericFunctionMaterial to assign value to a material property. There are three possible scenarios:

  • If the entire mesh element is within the absorber section, the function value is 100 (percent absorber);

  • If the entire mesh element is within the reflector section, the function value is 0 (percent absorber);

  • If the mesh element is intercepted by the absorber-reflector boundary, the function value is between 0 and 100 and equal to the volume percentage of the absorber part in that mesh element.

Figure 1: A schematic drawing showing a typical control drum structure and important parameters of this MultiControlDrumFunction object.

Key Parameters

To simulate the rotation of the control drums, a set of parameters are needed for each control drum (see Figure 1):

  • "start_angles": the azimuthal angles of the starting positions of the absorber sections at the beginning of rotation;

  • "angle_ranges": the azimuthal angle ranges of the absorber sections;

  • "angular_speeds": the rotation speeds of the control drums in degree per second (positive values mean counterclockwise rotation; negative values mean clockwise rotation.)

By default, rotation of the control drums starts at t = 0 and never ends. Optionally, users can set up "rotation_start_time" and "rotation_end_time" to customize the control drums rotation time.

When "use_control_drum_id" is true, this MultiControlDrumFunction can also use the element extra integer control_drum_id in the mesh to determine the domain of each control drum. Please refer to PatternedHexMeshGenerator for details on how control_drum_id's are assigned. If "use_control_drum_id" is false, the domain of each control drum is determined based on the nearest control drum position.

Figure 2: An example of control drums simulated by this MultiControlDrumFunction object (see input file here).

Example Syntax

[Functions]
  [cd_param_func]
    type = MultiControlDrumFunction
    mesh_generator = core
    angular_speeds = '2 4 8 16 64 128'
    start_angles = '0 0 0 0 0 0'
    angle_ranges = '90 90 90 90 90 90'
  []
[]
(contrib/moose/modules/reactor/test/tests/functions/multi_control_drum_function/multi_cd.i)

Input Parameters

  • angle_rangesVector of angular ranges of the beginning of the absorber components.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Vector of angular ranges of the beginning of the absorber components.

  • angular_speedsVector of angular rotation speeds of the control drum.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Vector of angular rotation speeds of the control drum.

  • mesh_generatorName of the mesh generator to be used to retrieve control drums information.

    C++ Type:MeshGeneratorName

    Unit:(no unit assumed)

    Controllable:No

    Description:Name of the mesh generator to be used to retrieve control drums information.

  • start_anglesVector of initial angular positions of the beginning of the absorber components.

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

    Unit:(no unit assumed)

    Controllable:No

    Description:Vector of initial angular positions of the beginning of the absorber components.

Required Parameters

  • rotation_end_time1.79769e+308The time point at which the control drums stop rotating.

    Default:1.79769e+308

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:The time point at which the control drums stop rotating.

  • rotation_start_time0The time point at which the control drums start rotating.

    Default:0

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:The time point at which the control drums start rotating.

Optional Parameters

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

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

    Unit:(no unit assumed)

    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

    Unit:(no unit assumed)

    Controllable:No

    Description:Set the enabled status of the MooseObject.

  • use_control_drum_idTrueWhether extra element id user_control_drum_id is used.

    Default:True

    C++ Type:bool

    Unit:(no unit assumed)

    Controllable:No

    Description:Whether extra element id user_control_drum_id is used.

Advanced Parameters