Bad default in the FV/FEFunctorRadiativeBC Boundary Conditions #29839
Labels
C: Modules/Heat Transfer
Tickets pertaining to the heat_transfer module
P: minor
A defect that does not affect the accuracy of results.
T: defect
An anomaly, which is anything that deviates from expectations.
Reason
A user got weird results on a radiation problem.
We should be requesting a valid value, not accepting a 0 default.
Same problem for FV and FE versions
How to reproduce
Use the object dont set the Tinfrinity parameter
Impact
User support need
Discussed in #29838
Originally posted by CadenWil February 7, 2025
Check these boxes if you have followed the posting rules.
Question
Hi, this is my first time posting. I am currently learning Moose and decided to work with problems that I know the answer to.
I have been working on recreating example problem 3.1 from the Fundamentals of Heat and Mass Transfer 6th Edition in Moose with the goal of understanding units, convective boundaries, radiative boundaries, and heat conduction. This problem is split into two parts one with water and the other with air as the cold fluid. This is the problem statement:
""" In Example 1.6, we calculated the heat loss rate from a human body in air and water
environments. Now we consider the same conditions except that the surroundings
(air or water) are at 10�C. To reduce the heat loss rate, the person wears special
sporting gear (snow suit and wet suit) made from a nanostructured silica aerogel in-
sulation with an extremely low thermal conductivity of 0.014 W/m K. The emis-
sivity of the outer surface of the snow and wet suits is 0.95. What thickness of aero-
gel insulation is needed to reduce the heat loss rate to 100 W (a typical metabolic
heat generation rate) in air and water? What are the resulting skin temperatures? """
The using the variables given in the book I first focused on calculating the outer surface temperature of the insulation layer if the cold fluid was water. This went well and I was able to get MOOSE and hand calculations to agree on the outer surface temperature of the insulation layer at 283.427
This is the input file I created:
"""
[Mesh]
[generated]
type = GeneratedMeshGenerator
dim = 2
nx = 300
ny = 300
xmin = 0
xmax = 0.0091
ymax = 0.01
[]
[block1]
type = SubdomainBoundingBoxGenerator
input = generated
block_id = 1
bottom_left = '0 0 0'
top_right = '0.003 0.01 0'
[]
[block2]
type = SubdomainBoundingBoxGenerator
input = block1
block_id = 2
bottom_left = '0.003 0 0'
top_right = '0.0091 0.01 0'
[]
[]
[Variables]
[T]
initial_condition = 308.15
[]
[]
[Kernels]
[heat_conduction]
type = HeatConduction
variable = T
[]
[time_derivative]
type = HeatConductionTimeDerivative
variable = T
[]
[]
[Materials]
[thermal_skin]
type = HeatConductionMaterial
thermal_conductivity = 0.3
specific_heat = 4.184
block = 1
[]
[density_skin]
type = GenericConstantMaterial
prop_names = 'density'
prop_values = 1.0
block = 1
[]
[thermal_ins]
type = HeatConductionMaterial
thermal_conductivity = 0.014
specific_heat = 2.5
block = 2
[]
[density_ins]
type = GenericConstantMaterial
prop_names = 'density'
prop_values = 0.8
block = 2
[]
[]
[BCs]
[t_left]
type = DirichletBC
variable = T
value = 308.15
boundary = 'left'
[]
[convect_right]
type = ConvectiveHeatFluxBC
variable = T
boundary = 'right'
T_infinity = 283.15
heat_transfer_coefficient = 200
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type -pc_factor_shift_type'
petsc_options_value = 'lu NONZERO'
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e-3
optimal_iterations = 6
[]
end_time = 5000
nl_abs_tol = 1e-9
nl_max_its = 50
line_search = 'none'
automatic_scaling = true
off_diagonals_in_auto_scaling = true
compute_scaling_once = false
[]
[Outputs]
exodus = true
[]
"""
I then moved to the second problem using air rather than water. This adds a radiative boundary condition to the problem in conjunction with the convective boundary condition. I changed the necessary variables and added a FVFunctorRadiativeBC to the input. The hand calculation indicated that the temperature would be in the ballpark of 290.18 K. However the result of the MOOSE calculation yielded 249.12 K which is colder than the outside fluid. Below is the input file that I created. I'm uncertain why I am getting a nonsensical answer with this input. I do get the correct answer if I instead choose to add the radiation heat transfer coefficient to the convective heat transfer coefficient in the ConvectiveHeatFluxBC and remove the FVFunctorRadiativeBC entirely.
"""
[Mesh]
[generated]
type = GeneratedMeshGenerator
dim = 2
nx = 32
ny = 32
xmin = 0
xmax = 0.0074
ymax = 0.01
[]
[block1]
type = SubdomainBoundingBoxGenerator
input = generated
block_id = 1
bottom_left = '0 0 0'
top_right = '0.003 0.1 0'
[]
[block2]
type = SubdomainBoundingBoxGenerator
input = block1
block_id = 2
bottom_left = '0.003 0 0'
top_right = '0.0074 0.1 0'
[]
[]
[Variables]
[T]
initial_condition = 308.15
[]
[]
[Kernels]
[heat_conduction]
type = HeatConduction
variable = T
[]
[time_derivative]
type = HeatConductionTimeDerivative
variable = T
[]
[]
[Materials]
[thermal_skin]
type = HeatConductionMaterial
thermal_conductivity = 0.3
specific_heat = 4.184
block = 1
[]
[density_skin]
type = GenericConstantMaterial
prop_names = 'density'
prop_values = 1.0
block = 1
[]
[thermal_ins]
type = HeatConductionMaterial
thermal_conductivity = 0.014
specific_heat = 2.5
block = 2
[]
[density_ins]
type = GenericConstantMaterial
prop_names = 'density'
prop_values = 0.8
block = 2
[]
[]
[BCs]
[t_left]
type = DirichletBC
variable = T
value = 308.15
boundary = 'left'
[]
[convect_right]
type = ConvectiveHeatFluxBC
variable = T
boundary = 'right'
T_infinity = 283.15
heat_transfer_coefficient = 2
[]
[Radiative_right]
# htc/(stefan-boltzmann4T_inf^3)
type = FunctionRadiativeBC
variable = T
boundary = 'right'
emissivity_function = '5.9/(5.670367e-84283.15283.15283.15)'
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type -pc_factor_shift_type'
petsc_options_value = 'lu NONZERO'
[TimeStepper]
type = IterationAdaptiveDT
dt = 1e-3
optimal_iterations = 6
[]
end_time = 5000
nl_abs_tol = 1e-9
nl_max_its = 50
line_search = 'none'
automatic_scaling = true
off_diagonals_in_auto_scaling = true
compute_scaling_once = false
[]
[Outputs]
exodus = true
[]
"""
Thanks for any help that you can offer.
The text was updated successfully, but these errors were encountered: