CoupledConvectiveHeatFluxBC
Convective heat transfer boundary condition with temperature and heat transfer coefficent given by auxiliary variables.
This boundary condition computes convective heat flux , where  is convective heat transfer coefficient,  is the temperature solved for, and  is far field temperature.  Both  and  are spatially varying variables.
A typical use case for this boundary condition are coupled multi-apps exchanging heat flux.
It is possible to use vector coupling to compute the heat flux for multi-phase fluids. In this case, users need to supply alpha parameter, which represents the volume fraction for each phase. Similarly, multiple components have to be supplied for htc and T_infinity. The number of components for alpha, Hw and T_infinity must match. The heat flux is then computed as .
Parameter  can be used to scale the total heat flux. By default, it is  (i.e. no scaling). Note that  is actually a field variable, so spatially dependent scaling is possible. This can be used to locally turn the BC on or off.
[./right]
  type = CoupledConvectiveHeatFluxBC
  variable = u
  boundary = right
  alpha = 'alpha_liquid alpha_vapor'
  htc = 'Hw_liquid Hw_vapor'
  T_infinity = 'T_infinity_liquid T_infinity_vapor'
[../]
(modules/heat_transfer/test/tests/heat_conduction/coupled_convective_heat_flux/coupled_convective_heat_flux_two_phase.i)(modules/heat_transfer/test/tests/heat_conduction/coupled_convective_heat_flux/coupled_convective_heat_flux_two_phase.i)
[Mesh]
  type = GeneratedMesh
  dim = 2
  nx = 10
  ny = 10
[]
[Functions]
  [./alpha_liquid_fn]
    type = ParsedFunction
    expression = 'sin(pi*y)'
  [../]
  [./T_infinity_liquid_fn]
    type = ParsedFunction
    expression = '(x*x+y*y)+500'
  [../]
  [./Hw_liquid_fn]
    type = ParsedFunction
    expression = '((1-x)*(1-x)+(1-y)*(1-y))+1000'
  [../]
  [./alpha_vapor_fn]
    type = ParsedFunction
    expression = '1-sin(pi*y)'
  [../]
  [./T_infinity_vapor_fn]
    type = ParsedFunction
    expression = '(x*x+y*y)+5'
  [../]
  [./Hw_vapor_fn]
    type = ParsedFunction
    expression = '((1-x)*(1-x)+(1-y)*(1-y))+10'
  [../]
[]
[Variables]
  [./u]
  [../]
[]
[AuxVariables]
  [./T_infinity_liquid]
  [../]
  [./Hw_liquid]
  [../]
  [./alpha_liquid]
  [../]
  [./T_infinity_vapor]
  [../]
  [./Hw_vapor]
  [../]
  [./alpha_vapor]
  [../]
[]
[Kernels]
  [./diff]
    type = Diffusion
    variable = u
  [../]
  [./force]
    type = BodyForce
    variable = u
    value = 1000
  [../]
[]
[AuxKernels]
  [./alpha_liquid_ak]
    type = FunctionAux
    variable = alpha_liquid
    function = alpha_liquid_fn
    execute_on = initial
  [../]
  [./T_infinity_liquid_ak]
    type = FunctionAux
    variable = T_infinity_liquid
    function = T_infinity_liquid_fn
    execute_on = initial
  [../]
  [./Hw_liquid_ak]
    type = FunctionAux
    variable = Hw_liquid
    function = Hw_liquid_fn
    execute_on = initial
  [../]
  [./alpha_vapor_ak]
    type = FunctionAux
    variable = alpha_vapor
    function = alpha_vapor_fn
    execute_on = initial
  [../]
  [./T_infinity_vapor_ak]
    type = FunctionAux
    variable = T_infinity_vapor
    function = T_infinity_vapor_fn
    execute_on = initial
  [../]
  [./Hw_vapor_ak]
    type = FunctionAux
    variable = Hw_vapor
    function = Hw_vapor_fn
    execute_on = initial
  [../]
[]
[BCs]
  [./right]
    type = CoupledConvectiveHeatFluxBC
    variable = u
    boundary = right
    alpha = 'alpha_liquid alpha_vapor'
    htc = 'Hw_liquid Hw_vapor'
    T_infinity = 'T_infinity_liquid T_infinity_vapor'
  [../]
[]
[Executioner]
  type = Steady
  solve_type = 'PJFNK'
  petsc_options_iname = '-pc_type -pc_hypre_type'
  petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
  exodus = true
[]
(modules/heat_transfer/test/tests/radiation_transfer_symmetry/cavity_with_pillars_symmetry_bc.i)
#
# inner_left: 8
# inner_top: 11
# inner_bottom: 10
# inner_front: 9
# back_2: 7
# obstruction: 6
#
[Mesh]
  [cartesian]
    type = CartesianMeshGenerator
    dim = 3
    dx = '0.4 0.5 0.5 0.5'
    dy = '0.5 0.75 0.5'
    dz = '1.5 0.5'
    subdomain_id = '
                    3 1 1 1
                    3 1 2 1
                    3 1 1 1
                    3 1 1 1
                    3 1 1 1
                    3 1 1 1
                    '
  []
  [add_obstruction]
    type = SideSetsBetweenSubdomainsGenerator
    primary_block = 2
    paired_block = 1
    new_boundary = obstruction
    input = cartesian
  []
  [add_new_back]
    type = ParsedGenerateSideset
    combinatorial_geometry = 'abs(z) < 1e-10'
    included_subdomains = '1'
    normal = '0 0 -1'
    new_sideset_name = back_2
    input = add_obstruction
  []
  [add_inner_left]
    type = SideSetsBetweenSubdomainsGenerator
    primary_block = 3
    paired_block = 1
    new_boundary = inner_left
    input = add_new_back
  []
  [add_inner_front]
    type = ParsedGenerateSideset
    combinatorial_geometry = 'abs(z - 2) < 1e-10'
    included_subdomains = '1'
    normal = '0 0 1'
    new_sideset_name = inner_front
    input = add_inner_left
  []
  [add_inner_bottom]
    type = ParsedGenerateSideset
    combinatorial_geometry = 'abs(y) < 1e-10'
    included_subdomains = '1'
    normal = '0 -1 0'
    new_sideset_name = inner_bottom
    input = add_inner_front
  []
  [add_inner_top]
    type = ParsedGenerateSideset
    combinatorial_geometry = 'abs(y - 1.75) < 1e-10'
    included_subdomains = '1'
    normal = '0 1 0'
    new_sideset_name = inner_top
    input = add_inner_bottom
  []
[]
[Problem]
  kernel_coverage_check = false
[]
[Variables]
  [temperature]
    block = '2 3'
    initial_condition = 300
  []
[]
[Kernels]
  [conduction]
    type = HeatConduction
    variable = temperature
    block = '2 3'
    diffusion_coefficient = 1
  []
  [source]
    type = BodyForce
    variable = temperature
    value = 1000
    block = '2'
  []
[]
[BCs]
  [convective]
    type = CoupledConvectiveHeatFluxBC
    variable = temperature
    T_infinity = 300
    htc = 50
    boundary = 'left'
  []
[]
[GrayDiffuseRadiation]
  [./cavity]
    boundary = '6 7 8 9 10 11'
    emissivity = '1 1 1 1 1 1'
    n_patches = '1 1 1 1 1 1'
    adiabatic_boundary = '7 9 10 11'
    symmetry_boundary = '2'
    partitioners = 'metis metis metis metis metis metis'
    temperature = temperature
    ray_tracing_face_order = SECOND
    normalize_view_factor = false
  [../]
[]
[Postprocessors]
  [Tpv]
    type = PointValue
    variable = temperature
    point = '0.3 0.5 0.5'
  []
  [volume]
    type = VolumePostprocessor
  []
[]
[Executioner]
  type = Steady
  petsc_options_iname = '-pc_type -pc_hypre_type'
  petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
  exodus = true
[]
(modules/heat_transfer/test/tests/postprocessors/convective_ht_side_integral.i)
[Mesh]
  type = MeshGeneratorMesh
  [./cartesian]
    type = CartesianMeshGenerator
    dim = 2
    dx = '0.45 0.1 0.45'
    ix = '5 1 5'
    dy = '0.45 0.1 0.45'
    iy = '5 1 5'
    subdomain_id = '1 1 1
                    1 2 1
                    1 1 1'
  [../]
  [./add_iss_1]
    type = SideSetsBetweenSubdomainsGenerator
    primary_block = 1
    paired_block = 2
    new_boundary = 'interface'
    input = cartesian
  [../]
  [./block_deleter]
    type = BlockDeletionGenerator
    block = 2
    input = add_iss_1
  [../]
[]
[Variables]
  [./temperature]
    initial_condition = 300
  [../]
[]
[AuxVariables]
  [./channel_T]
    family = MONOMIAL
    order = CONSTANT
    initial_condition = 400
  [../]
  [./channel_Hw]
    family = MONOMIAL
    order = CONSTANT
    initial_condition = 1000
  [../]
[]
[Kernels]
  [./graphite_diffusion]
    type = HeatConduction
    variable = temperature
    diffusion_coefficient = 'k_s'
  [../]
[]
[BCs]
  ## boundary conditions for the thm channels in the reflector
  [./channel_heat_transfer]
    type = CoupledConvectiveHeatFluxBC
    variable = temperature
    htc = channel_Hw
    T_infinity = channel_T
    boundary = 'interface'
  [../]
  # hot boundary on the left
  [./left]
    type = DirichletBC
    variable = temperature
    value = 1000
    boundary = 'left'
  [../]
  # cool boundary on the right
  [./right]
    type = DirichletBC
    variable = temperature
    value = 300
    boundary = 'right'
  [../]
[]
[Materials]
  [./thermal]
    type = GenericConstantMaterial
    prop_names = 'k_s'
    prop_values = '12'
  [../]
  [./htc_material]
    type = GenericConstantMaterial
    prop_names = 'alpha_wall'
    prop_values = '1000'
  [../]
  [./tfluid_mat]
    type = PiecewiseLinearInterpolationMaterial
    property = tfluid_mat
    variable = channel_T
    x = '400 500'
    y = '400 500'
  [../]
[]
[Postprocessors]
  [./Qw1]
    type = ConvectiveHeatTransferSideIntegral
    T_fluid_var = channel_T
    htc_var = channel_Hw
    T_solid = temperature
    boundary = interface
  [../]
  [./Qw2]
    type = ConvectiveHeatTransferSideIntegral
    T_fluid_var = channel_T
    htc = alpha_wall
    T_solid = temperature
    boundary = interface
  [../]
  [./Qw3]
    type = ConvectiveHeatTransferSideIntegral
    T_fluid = tfluid_mat
    htc = alpha_wall
    T_solid = temperature
    boundary = interface
  [../]
[]
[Executioner]
  type = Steady
[]
[Outputs]
  csv = true
[]
(modules/heat_transfer/test/tests/code_verification/spherical_test_no4.i)
# Problem III.4
#
# A spherical shell has thermal conductivity k and heat generation q.
# It has an inner radius ri and outer radius ro. A constant heat flux is
# applied to the inside surface qin and the outside surface is exposed
# to a fluid temperature uf and heat transfer coefficient h.
#
# REFERENCE:
# A. Toptan, et al. (Mar.2020). Tech. rep. CASL-U-2020-1939-000, SAND2020-3887 R. DOI:10.2172/1614683.
[Mesh]
  [./geom]
    type = GeneratedMeshGenerator
    dim = 1
    elem_type = EDGE2
    xmin = 0.2
    nx = 4
  [../]
  coord_type = RSPHERICAL
[]
[Variables]
  [./u]
    order = FIRST
  [../]
[]
[Functions]
  [./exact]
    type = ParsedFunction
    symbol_names = 'qin q k ri ro uf h'
    symbol_values = '100 1200 1.0 0.2 1 100 10'
    expression = 'uf+ (q/(6*k)) * ( ro^2-x^2 + 2*k*(ro^3-ri^3)/(h*ro^2) + 2 * ri^3 * (1/ro-1/x) ) + (1/x-1/ro+k/(h*ro^2)) * qin * ri^2 / k'
  [../]
[]
[Kernels]
  [./heat]
    type = HeatConduction
    variable = u
  [../]
  [./heatsource]
    type = HeatSource
    function = 1200
    variable = u
  [../]
[]
[BCs]
  [./ui]
    type = NeumannBC
    boundary = left
    variable = u
    value = 100
  [../]
  [./uo]
    type = CoupledConvectiveHeatFluxBC
    boundary = right
    variable = u
    htc = 10.0
    T_infinity = 100
  [../]
[]
[Materials]
  [./property]
    type = GenericConstantMaterial
    prop_names = 'density specific_heat thermal_conductivity'
    prop_values = '1.0 1.0 1.0'
  [../]
[]
[Executioner]
  type = Steady
[]
[Postprocessors]
  [./error]
    type = ElementL2Error
    function = exact
    variable = u
  [../]
  [./h]
    type = AverageElementSize
  []
[]
[Outputs]
  csv = true
[]
(modules/heat_transfer/test/tests/radiation_transfer_symmetry/cavity_with_pillars.i)
#
# inner_left: 8
# inner_right: 9
# inner_top: 12
# inner_bottom: 11
# inner_front: 10
# back_2: 7
# obstruction: 6
#
[Mesh]
  [cartesian]
    type = CartesianMeshGenerator
    dim = 3
    dx = '0.4 0.5 0.5 0.5 0.5 0.5 0.5 0.4'
    dy = '0.5 0.75 0.5'
    dz = '1.5 0.5'
    subdomain_id = '
                    3 1 1 1 1 1 1 4
                    3 1 2 1 1 2 1 4
                    3 1 1 1 1 1 1 4
                    3 1 1 1 1 1 1 4
                    3 1 1 1 1 1 1 4
                    3 1 1 1 1 1 1 4
                    '
  []
  [add_obstruction]
    type = SideSetsBetweenSubdomainsGenerator
    primary_block = 2
    paired_block = 1
    new_boundary = obstruction
    input = cartesian
  []
  [add_new_back]
    type = ParsedGenerateSideset
    combinatorial_geometry = 'abs(z) < 1e-10'
    included_subdomains = '1'
    normal = '0 0 -1'
    new_sideset_name = back_2
    input = add_obstruction
  []
  [add_inner_left]
    type = SideSetsBetweenSubdomainsGenerator
    primary_block = 3
    paired_block = 1
    new_boundary = inner_left
    input = add_new_back
  []
  [add_inner_right]
    type = SideSetsBetweenSubdomainsGenerator
    primary_block = 4
    paired_block = 1
    new_boundary = inner_right
    input = add_inner_left
  []
  [add_inner_front]
    type = ParsedGenerateSideset
    combinatorial_geometry = 'abs(z - 2) < 1e-10'
    included_subdomains = '1'
    normal = '0 0 1'
    new_sideset_name = inner_front
    input = add_inner_right
  []
  [add_inner_bottom]
    type = ParsedGenerateSideset
    combinatorial_geometry = 'abs(y) < 1e-10'
    included_subdomains = '1'
    normal = '0 -1 0'
    new_sideset_name = inner_bottom
    input = add_inner_front
  []
  [add_inner_top]
    type = ParsedGenerateSideset
    combinatorial_geometry = 'abs(y - 1.75) < 1e-10'
    included_subdomains = '1'
    normal = '0 1 0'
    new_sideset_name = inner_top
    input = add_inner_bottom
  []
[]
[Problem]
  kernel_coverage_check = false
[]
[Variables]
  [temperature]
    block = '2 3 4'
    initial_condition = 300
  []
[]
[Kernels]
  [conduction]
    type = HeatConduction
    variable = temperature
    block = '2 3 4'
    diffusion_coefficient = 1
  []
  [source]
    type = BodyForce
    variable = temperature
    value = 1000
    block = '2'
  []
[]
[BCs]
  [convective]
    type = CoupledConvectiveHeatFluxBC
    variable = temperature
    T_infinity = 300
    htc = 50
    boundary = 'left right'
  []
[]
[GrayDiffuseRadiation]
  [cavity]
    boundary = '6 7 8 9 10 11 12'
    emissivity = '1 1 1 1 1 1 1'
    n_patches = '1 1 1 1 1 1 1'
    adiabatic_boundary = '7 10 11 12'
    partitioners = 'metis metis metis metis metis metis metis'
    temperature = temperature
    ray_tracing_face_order = SECOND
    normalize_view_factor = false
  []
[]
[Postprocessors]
  [Tpv]
    type = PointValue
    variable = temperature
    point = '0.3 0.5 0.5'
  []
  [volume]
    type = VolumePostprocessor
  []
[]
[Executioner]
  type = Steady
  petsc_options_iname = '-pc_type -pc_hypre_type'
  petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
  exodus = true
[]
(modules/heat_transfer/test/tests/heat_conduction/coupled_convective_heat_flux/coupled_convective_heat_flux_two_phase.i)
[Mesh]
  type = GeneratedMesh
  dim = 2
  nx = 10
  ny = 10
[]
[Functions]
  [./alpha_liquid_fn]
    type = ParsedFunction
    expression = 'sin(pi*y)'
  [../]
  [./T_infinity_liquid_fn]
    type = ParsedFunction
    expression = '(x*x+y*y)+500'
  [../]
  [./Hw_liquid_fn]
    type = ParsedFunction
    expression = '((1-x)*(1-x)+(1-y)*(1-y))+1000'
  [../]
  [./alpha_vapor_fn]
    type = ParsedFunction
    expression = '1-sin(pi*y)'
  [../]
  [./T_infinity_vapor_fn]
    type = ParsedFunction
    expression = '(x*x+y*y)+5'
  [../]
  [./Hw_vapor_fn]
    type = ParsedFunction
    expression = '((1-x)*(1-x)+(1-y)*(1-y))+10'
  [../]
[]
[Variables]
  [./u]
  [../]
[]
[AuxVariables]
  [./T_infinity_liquid]
  [../]
  [./Hw_liquid]
  [../]
  [./alpha_liquid]
  [../]
  [./T_infinity_vapor]
  [../]
  [./Hw_vapor]
  [../]
  [./alpha_vapor]
  [../]
[]
[Kernels]
  [./diff]
    type = Diffusion
    variable = u
  [../]
  [./force]
    type = BodyForce
    variable = u
    value = 1000
  [../]
[]
[AuxKernels]
  [./alpha_liquid_ak]
    type = FunctionAux
    variable = alpha_liquid
    function = alpha_liquid_fn
    execute_on = initial
  [../]
  [./T_infinity_liquid_ak]
    type = FunctionAux
    variable = T_infinity_liquid
    function = T_infinity_liquid_fn
    execute_on = initial
  [../]
  [./Hw_liquid_ak]
    type = FunctionAux
    variable = Hw_liquid
    function = Hw_liquid_fn
    execute_on = initial
  [../]
  [./alpha_vapor_ak]
    type = FunctionAux
    variable = alpha_vapor
    function = alpha_vapor_fn
    execute_on = initial
  [../]
  [./T_infinity_vapor_ak]
    type = FunctionAux
    variable = T_infinity_vapor
    function = T_infinity_vapor_fn
    execute_on = initial
  [../]
  [./Hw_vapor_ak]
    type = FunctionAux
    variable = Hw_vapor
    function = Hw_vapor_fn
    execute_on = initial
  [../]
[]
[BCs]
  [./right]
    type = CoupledConvectiveHeatFluxBC
    variable = u
    boundary = right
    alpha = 'alpha_liquid alpha_vapor'
    htc = 'Hw_liquid Hw_vapor'
    T_infinity = 'T_infinity_liquid T_infinity_vapor'
  [../]
[]
[Executioner]
  type = Steady
  solve_type = 'PJFNK'
  petsc_options_iname = '-pc_type -pc_hypre_type'
  petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
  exodus = true
[]
(modules/heat_transfer/test/tests/heat_conduction/coupled_convective_heat_flux/on_off.i)
[Mesh]
  type = GeneratedMesh
  dim = 2
  nx = 10
  ny = 10
[]
[Variables]
  [./u]
  [../]
[]
[AuxVariables]
  [./t_infinity]
  [../]
  [./active]
    initial_condition = 1
  [../]
[]
[Kernels]
  [./diff]
    type = Diffusion
    variable = u
  [../]
  [./force]
    type = BodyForce
    variable = u
    value = 1000
  [../]
[]
[AuxKernels]
  [./t_infinity]
    type = ConstantAux
    variable = t_infinity
    value = 500
    execute_on = initial
  [../]
  [./active_right]
    type = ConstantAux
    variable = active
    value = 0
    boundary = right
  [../]
[]
[BCs]
  [./right]
    type = CoupledConvectiveHeatFluxBC
    variable = u
    boundary = 'left right top bottom'
    htc = 10
    T_infinity = t_infinity
    scale_factor = active
  [../]
[]
[Executioner]
  type = Steady
[]
[Outputs]
  exodus = true
[]
(modules/heat_transfer/test/tests/heat_conduction/coupled_convective_heat_flux/const_hw.i)
[Mesh]
  type = GeneratedMesh
  dim = 2
  nx = 10
  ny = 10
[]
[Variables]
  [./u]
  [../]
[]
[AuxVariables]
  [./t_infinity]
  [../]
[]
[Kernels]
  [./diff]
    type = Diffusion
    variable = u
  [../]
  [./force]
    type = BodyForce
    variable = u
    value = 1000
  [../]
[]
[AuxKernels]
  [./t_infinity]
    type = ConstantAux
    variable = t_infinity
    value = 500
    execute_on = initial
  [../]
[]
[BCs]
  [./right]
    type = CoupledConvectiveHeatFluxBC
    variable = u
    boundary = right
    htc = 10
    T_infinity = t_infinity
  [../]
[]
[Executioner]
  type = Steady
  #Preconditioned JFNK (default)
  solve_type = 'PJFNK'
  petsc_options_iname = '-pc_type -pc_hypre_type'
  petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
  exodus = true
[]
(modules/heat_transfer/test/tests/postprocessors/ad_convective_ht_side_integral.i)
[Mesh]
  [./cartesian]
    type = CartesianMeshGenerator
    dim = 2
    dx = '0.45 0.1 0.45'
    ix = '5 1 5'
    dy = '0.45 0.1 0.45'
    iy = '5 1 5'
    subdomain_id = '1 1 1
                    1 2 1
                    1 1 1'
  [../]
  [./add_iss_1]
    type = SideSetsBetweenSubdomainsGenerator
    primary_block = 1
    paired_block = 2
    new_boundary = 'interface'
    input = cartesian
  [../]
  [./block_deleter]
    type = BlockDeletionGenerator
    block = 2
    input = add_iss_1
  [../]
[]
[Variables]
  [./temperature]
    initial_condition = 300
  [../]
[]
[AuxVariables]
  [./channel_T]
    family = MONOMIAL
    order = CONSTANT
    initial_condition = 400
  [../]
  [./channel_Hw]
    family = MONOMIAL
    order = CONSTANT
    initial_condition = 1000
  [../]
[]
[Kernels]
  [./graphite_diffusion]
    type = ADHeatConduction
    variable = temperature
    thermal_conductivity = 'thermal_conductivity'
  [../]
[]
[BCs]
  ## boundary conditions for the thm channels in the reflector
  [./channel_heat_transfer]
    type = CoupledConvectiveHeatFluxBC
    variable = temperature
    htc = channel_Hw
    T_infinity = channel_T
    boundary = 'interface'
  [../]
  # hot boundary on the left
  [./left]
    type = DirichletBC
    variable = temperature
    value = 1000
    boundary = 'left'
  [../]
  # cool boundary on the right
  [./right]
    type = DirichletBC
    variable = temperature
    value = 300
    boundary = 'right'
  [../]
[]
[Materials]
  [./pronghorn_solid_material]
    type = ADHeatConductionMaterial
    temp = temperature
    thermal_conductivity = 25
    specific_heat = 1000
  [../]
  [./htc_material]
    type = ADGenericConstantMaterial
    prop_names = 'alpha_wall'
    prop_values = '1000'
  [../]
  [./tfluid_mat]
    type = ADPiecewiseLinearInterpolationMaterial
    property = tfluid_mat
    variable = channel_T
    x = '400 500'
    y = '400 500'
  [../]
[]
[Postprocessors]
  [./Qw1]
    type = ADConvectiveHeatTransferSideIntegral
    T_fluid_var = channel_T
    htc_var = channel_Hw
    T_solid = temperature
    boundary = interface
  [../]
  [./Qw2]
    type = ADConvectiveHeatTransferSideIntegral
    T_fluid_var = channel_T
    htc = alpha_wall
    T_solid = temperature
    boundary = interface
  [../]
  [./Qw3]
    type = ADConvectiveHeatTransferSideIntegral
    T_fluid = tfluid_mat
    htc = alpha_wall
    T_solid = temperature
    boundary = interface
  [../]
[]
[Executioner]
  type = Steady
[]
[Outputs]
  csv = true
[]
(modules/heat_transfer/test/tests/heat_conduction/coupled_convective_heat_flux/coupled_convective_heat_flux.i)
[Mesh]
  type = GeneratedMesh
  dim = 2
  nx = 10
  ny = 10
[]
[Functions]
  [./T_infinity_fn]
    type = ParsedFunction
    expression = (x*x+y*y)+500
  [../]
  [./Hw_fn]
    type = ParsedFunction
    expression = ((1-x)*(1-x)+(1-y)*(1-y))+1000
  [../]
[]
[Variables]
  [./u]
  [../]
[]
[AuxVariables]
  [./T_infinity]
  [../]
  [./Hw]
  [../]
[]
[Kernels]
  [./diff]
    type = Diffusion
    variable = u
  [../]
  [./force]
    type = BodyForce
    variable = u
    value = 1000
  [../]
[]
[AuxKernels]
  [./T_infinity_ak]
    type = FunctionAux
    variable = T_infinity
    function = T_infinity_fn
    execute_on = initial
  [../]
  [./Hw_ak]
    type = FunctionAux
    variable = Hw
    function = Hw_fn
    execute_on = initial
  [../]
[]
[BCs]
  [./right]
    type = CoupledConvectiveHeatFluxBC
    variable = u
    boundary = right
    htc = Hw
    T_infinity = T_infinity
  [../]
[]
[Executioner]
  type = Steady
  solve_type = 'PJFNK'
  petsc_options_iname = '-pc_type -pc_hypre_type'
  petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
  exodus = true
[]
(modules/heat_transfer/test/tests/code_verification/cylindrical_test_no4.i)
# Problem II.4
#
# An infinitely long hollow cylinder has thermal conductivity k and internal
# heat generation q. Its inner radius is ri and outer radius is ro.
# A constant heat flux is applied to the inside surface qin and
# the outside surface is exposed to a fluid temperature T and heat transfer
# coefficient h, which results in the convective boundary condition.
#
# REFERENCE:
# A. Toptan, et al. (Mar.2020). Tech. rep. CASL-U-2020-1939-000, SAND2020-3887 R. DOI:10.2172/1614683.
[Mesh]
  [./geom]
    type = GeneratedMeshGenerator
    dim = 1
    elem_type = EDGE2
    xmin = 0.2
    nx = 4
  [../]
  coord_type = RZ
[]
[Variables]
  [./u]
    order = FIRST
  [../]
[]
[Functions]
  [./exact]
    type = ParsedFunction
    symbol_names = 'qin q k ri ro uf h'
    symbol_values = '100 1200 1.0 0.2 1 100 10'
    expression = 'uf+ (0.25*q/k) * ( 2*k*(ro^2-ri^2)/(h*ro) + ro^2-x^2 + 2*ri^2*log(x/ro)) + (k/(h*ro) - log(x/ro)) * qin * ri / k'
  [../]
[]
[Kernels]
  [./heat]
    type = HeatConduction
    variable = u
  [../]
  [./heatsource]
    type = HeatSource
    function = 1200
    variable = u
  [../]
[]
[BCs]
  [./ui]
    type = NeumannBC
    boundary = left
    variable = u
    value = 100
  [../]
  [./uo]
    type = CoupledConvectiveHeatFluxBC
    boundary = right
    variable = u
    htc = 10.0
    T_infinity = 100
  [../]
[]
[Materials]
  [./property]
    type = GenericConstantMaterial
    prop_names = 'density specific_heat thermal_conductivity'
    prop_values = '1.0 1.0 1.0'
  [../]
[]
[Executioner]
  type = Steady
[]
[Postprocessors]
  [./error]
    type = ElementL2Error
    function = exact
    variable = u
  [../]
  [./h]
    type = AverageElementSize
  []
[]
[Outputs]
  csv = true
[]
(modules/heat_transfer/test/tests/code_verification/cartesian_test_no4.i)
# Problem I.4
#
# An infinite plate with constant thermal conductivity k and internal
# heat generation q. The left boundary is exposed to a constant heat flux q0.
# The right boundary is exposed to a fluid with constant temperature uf and
# heat transfer coefficient h, which results in the convective boundary condition.
#
# REFERENCE:
# A. Toptan, et al. (Mar.2020). Tech. rep. CASL-U-2020-1939-000, SAND2020-3887 R. DOI:10.2172/1614683.
[Mesh]
  [./geom]
    type = GeneratedMeshGenerator
    dim = 1
    elem_type = EDGE2
    nx = 1
  [../]
[]
[Variables]
  [./u]
    order = FIRST
  [../]
[]
[Functions]
  [./exact]
    type = ParsedFunction
    symbol_names = 'q q0 k L uf h'
    symbol_values = '1200 200 1 1 100 10.0'
    expression = 'uf + (q0 + L * q)/h + 0.5 * ( 2 * q0 + q * (L + x)) * (L-x) / k'
  [../]
[]
[Kernels]
  [./heat]
    type = HeatConduction
    variable = u
  [../]
  [./heatsource]
    type = HeatSource
    function = 1200
    variable = u
  [../]
[]
[BCs]
  [./ui]
    type = NeumannBC
    boundary = left
    variable = u
    value = 200
  [../]
  [./uo]
    type = CoupledConvectiveHeatFluxBC
    boundary = right
    variable = u
    htc = 10.0
    T_infinity = 100
  [../]
[]
[Materials]
  [./property]
    type = GenericConstantMaterial
    prop_names = 'density specific_heat thermal_conductivity'
    prop_values = '1.0 1.0 1.0'
  [../]
[]
[Executioner]
  type = Steady
[]
[Postprocessors]
  [./error]
    type = ElementL2Error
    function = exact
    variable = u
  [../]
  [./h]
    type = AverageElementSize
  []
[]
[Outputs]
  csv = true
[]