SubmodelEndBC

Specialized preset DirichletBC intended to be used to prescribe displacements at the ends of a submodel of a section of a fuel rod.

Description

The SubmodelEndBC boundary condition is designed to be used to prescribe boundary conditions at the top and bottom of a detailed model of a subset of a fuel rod. This was designed specifically for simulations of light water reactor fuel rods, but could be applied to other similar fuel forms as well. The basic idea of this boundary condition is that to accurately represent the behavor of a region of a fuel rod, a detailed submodel needs to have realistic prescribed displacement boundary conditions applied to the regions in the submodel above and below the region of interest. This allows for phenomena such as large relative motion of the fuel and cladding to be correctly represnted in a submodel.

The boundary conditions in those regions are prescribed in SubmodelEndBC using any MOOSE Function, but the most likely function used would be SolutionFunction, which would get its values from a reduced fidelity model of the entire fuel rod.

Two optional parameters to this BC are used to provide the locations above and below which the BC are applied: fuel_stack_top and fuel_stack_bottom. The purpose of these parameters is to allow for the BC to be applied to the cladding only in the regions above and below the ends of the fuel stack, which is moving relative to the cladding. A boundary would be defined that includes all nodes in the cladding, and these options would be used to dynamically control which portion of that boundary would have BCs applied at a given point in time during the analysis. The Postprocessors used for this purpose would typically be AverageAxialPosition objects.

Example Input Syntax

[BCs<<<{"href": "../../syntax/NuclearMaterials/BCs/index.html"}>>>]
  [ends_x]
    type = SubmodelEndBC<<<{"description": "Specialized preset DirichletBC intended to be used to prescribe displacements at the ends of a submodel of a section of a fuel rod.", "href": "SubmodelEndBC.html"}>>>
    variable<<<{"description": "The name of the variable that this residual object operates on"}>>> = disp_x
    boundary<<<{"description": "The list of boundary IDs from the mesh where this object applies"}>>> = 5
    function<<<{"description": "The forcing function."}>>> = zero
    fuel_stack_top<<<{"description": "Postprocessor that defines the axial position of the top of the submodel fuel stack."}>>> = top_position
    fuel_stack_bottom<<<{"description": "Postprocessor that defines the axial position of the bottom of the submodel fuel stack."}>>> = bottom_position
  []
[]
(test/tests/submodel_end_bc/submodel_end_bc.i)

Input Parameters

  • boundaryThe list of boundary IDs from the mesh where this object applies

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

    Controllable:No

    Description:The list of boundary IDs from the mesh where this object applies

  • fuel_stack_bottomPostprocessor that defines the axial position of the bottom of the submodel fuel stack.

    C++ Type:PostprocessorName

    Unit:(no unit assumed)

    Controllable:No

    Description:Postprocessor that defines the axial position of the bottom of the submodel fuel stack.

  • fuel_stack_topPostprocessor that defines the axial position of the top of the submodel fuel stack.

    C++ Type:PostprocessorName

    Unit:(no unit assumed)

    Controllable:No

    Description:Postprocessor that defines the axial position of the top of the submodel fuel stack.

  • functionThe forcing function.

    C++ Type:FunctionName

    Unit:(no unit assumed)

    Controllable:No

    Description:The forcing function.

  • variableThe name of the variable that this residual object operates on

    C++ Type:NonlinearVariableName

    Unit:(no unit assumed)

    Controllable:No

    Description:The name of the variable that this residual object operates on

Required Parameters

  • axial_directionyCoordinate axis of the axial direction of the fuel stack (0, 1, or 2 for x, y, or z).

    Default:y

    C++ Type:MooseEnum

    Options:x, y, z

    Controllable:No

    Description:Coordinate axis of the axial direction of the fuel stack (0, 1, or 2 for x, y, or z).

  • diag_save_inThe name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)

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

    Unit:(no unit assumed)

    Controllable:No

    Description:The name of auxiliary variables to save this BC's diagonal jacobian contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)

  • displacementsThe displacements

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

    Unit:(no unit assumed)

    Controllable:No

    Description:The displacements

  • save_inThe name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)

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

    Unit:(no unit assumed)

    Controllable:No

    Description:The name of auxiliary variables to save this BC's residual contributions to. Everything about that variable must match everything about this variable (the type, what blocks it's on, etc.)

Optional Parameters

  • absolute_value_vector_tagsThe tags for the vectors this residual object should fill with the absolute value of the residual contribution

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

    Controllable:No

    Description:The tags for the vectors this residual object should fill with the absolute value of the residual contribution

  • extra_matrix_tagsThe extra tags for the matrices this Kernel should fill

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

    Controllable:No

    Description:The extra tags for the matrices this Kernel should fill

  • extra_vector_tagsThe extra tags for the vectors this Kernel should fill

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

    Controllable:No

    Description:The extra tags for the vectors this Kernel should fill

Contribution To Tagged Field Data 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.

  • implicitTrueDetermines whether this object is calculated using an implicit or explicit form

    Default:True

    C++ Type:bool

    Controllable:No

    Description:Determines whether this object is calculated using an implicit or explicit form

  • 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_meshTrueWhether 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:True

    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

  • matrix_tagssystem timeThe tag for the matrices this Kernel should fill

    Default:system time

    C++ Type:MultiMooseEnum

    Options:nontime, system, time

    Controllable:No

    Description:The tag for the matrices this Kernel should fill

  • vector_tagsresidualThe tag for the vectors this Kernel should fill

    Default:residual

    C++ Type:MultiMooseEnum

    Options:nontime, time, residual

    Controllable:No

    Description:The tag for the vectors this Kernel should fill

Tagging Parameters

Input Files