FVThermalResistanceBC

Thermal resistance Heat flux boundary condition for the fluid and solid energy equations

Description

Heat flux boundary condition for the fluid or solid energy conservation equations. When used with the fluid energy equation, this boundary condition specifies

where

where is the imposed heat flux, to be discussed shortly. When used with the solid energy equation, this boundary condition specifies

where

The heat flux is computed based on the thermal resistance concept, where heat is assumed to conduct through multiple parallel slabs of constant-property solid in series, followed by parallel convection and radiation to an ambient temperature. For conducting layers, the conduction thermal resistance is computed for Cartesian slabs as

where is the thickness of each layer and is the thermal conductivity of each layer. For cylindrical annuli, the conduction thermal resistance is computed as

where is the inner radius corresponding to each layer. The inner radius of the very first cylindrical annulus is specified by the inner_radius parameter.

warningwarning

The inner radius of a cylindrical bed is also provided by the inner_radius parameter for setting porosity functions and other near-wall behavior. To prevent errors associated with mixing the two different interpretations of the inner_radius parameter, it's best to avoid setting this parameter in the GlobalParams input file block.

The parallel convection and radiation resistance from the surface of the conduction layers, or , is then computed as

where is equal to the cylindrical annuli outer radius for cylindrical geometries and unity for Cartesian geometries; is the surface convection coefficient; and is the radiation heat transfer coefficient,

where is the emissivity of the last conduction layer, is the Stefan-Boltzmann constant, is the surface temperature of the last conduction layer, and is the far-field temperature.

The surface temperature is implicitly dependent on the heat flux, so an underrelaxed fixed point iteration is used to solve for at each quadrature point.

warningwarning

The thermal resistance concept does not apply to conducting slabs with heat sources or systems undergoing transients. This boundary condition should only be applied to steady-state or pseudo-steady transients.

commentnote

The emissivity parameter represents the emissivity of the _surface_, or last layer, of the conducting slabs.

Example input syntax

In this example, we set thermal resistance boundary conditions on the top and left boundaries. We specify emissivity, thermal conductivity and convective heat transfer coefficients to model those three heat transfer mechanisms where present (they are set to 0 when absent).

The inner iteration parameters are exposed for the left boundary. This is only meant to be used to fine-tune a simulation for performance, or if convergence difficulties are encountered for that boundary.

[FVBCs]
  [left]
    type = FVThermalResistanceBC
    geometry = 'cartesian'
    variable = u
    T_ambient = 10
    htc = 'htc'
    emissivity = 0.2
    thermal_conductivities = '0.1 0.2 0.3'
    conduction_thicknesses = '1 0.7 0.2'
    boundary = 'left'

    # Test setting iteration parameters
    step_size = 0.02
    max_iterations = 120
    tolerance = 1e-4
  []
  [top]
    type = FVThermalResistanceBC
    geometry = 'cartesian'
    variable = u
    # Test setting the temperature separately from the variable
    temperature = 'u'
    T_ambient = 14
    htc = 'htc'
    emissivity = 0
    thermal_conductivities = '0.1 0.2 0.3'
    conduction_thicknesses = '1 0.7 0.4'
    boundary = 'top'
  []
  [other]
    type = FVDirichletBC
    variable = u
    boundary = 'right bottom'
    value = 0
  []
[]
(moose/modules/heat_transfer/test/tests/fvbcs/fv_thermal_resistance/test.i)

Input Parameters

  • T_ambientconstant ambient temperature

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:constant ambient temperature

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

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

    Unit:(no unit assumed)

    Controllable:No

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

  • conduction_thicknessesvector of conduction layer thicknesses

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

    Unit:(no unit assumed)

    Controllable:No

    Description:vector of conduction layer thicknesses

  • emissivityemissivity of the surface

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:emissivity of the surface

  • htcheat transfer coefficient

    C++ Type:MaterialPropertyName

    Unit:(no unit assumed)

    Controllable:No

    Description:heat transfer coefficient

  • thermal_conductivitiesvector of thermal conductivity values used for the conduction layers

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

    Unit:(no unit assumed)

    Controllable:No

    Description:vector of thermal conductivity values used for the conduction layers

  • variableThe name of the variable that this boundary condition applies to

    C++ Type:NonlinearVariableName

    Unit:(no unit assumed)

    Controllable:No

    Description:The name of the variable that this boundary condition applies to

Required Parameters

  • displacementsThe displacements

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

    Unit:(no unit assumed)

    Controllable:No

    Description:The displacements

  • geometrycartesiantype of geometry

    Default:cartesian

    C++ Type:MooseEnum

    Unit:(no unit assumed)

    Options:cartesian, cylindrical

    Controllable:No

    Description:type of geometry

  • inner_radiuscoordinate corresponding to the first resistance layer

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:coordinate corresponding to the first resistance layer

  • max_iterations100maximum iterations

    Default:100

    C++ Type:unsigned int

    Unit:(no unit assumed)

    Controllable:No

    Description:maximum iterations

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

  • step_size0.1underrelaxation step size

    Default:0.1

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:underrelaxation step size

  • temperaturetemperature variable

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

    Unit:(no unit assumed)

    Controllable:No

    Description:temperature variable

  • tolerance0.001tolerance to converge iterations

    Default:0.001

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:tolerance to converge iterations

  • 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

    Unit:(no unit assumed)

    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.

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>

    Unit:(no unit assumed)

    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>

    Unit:(no unit assumed)

    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>

    Unit:(no unit assumed)

    Controllable:No

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

  • matrix_tagssystemThe tag for the matrices this Kernel should fill

    Default:system

    C++ Type:MultiMooseEnum

    Unit:(no unit assumed)

    Options:nontime, system

    Controllable:No

    Description:The tag for the matrices this Kernel should fill

  • vector_tagsnontimeThe tag for the vectors this Kernel should fill

    Default:nontime

    C++ Type:MultiMooseEnum

    Unit:(no unit assumed)

    Options:nontime, time

    Controllable:No

    Description:The tag for the vectors this Kernel should fill

Tagging 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: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

    Unit:(no unit assumed)

    Controllable:No

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

  • 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

    Unit:(no unit assumed)

    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