Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bad default in the FV/FEFunctorRadiativeBC Boundary Conditions #29839

Open
5 tasks done
GiudGiud opened this issue Feb 7, 2025 · 0 comments
Open
5 tasks done

Bad default in the FV/FEFunctorRadiativeBC Boundary Conditions #29839

GiudGiud opened this issue Feb 7, 2025 · 0 comments
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.

Comments

@GiudGiud
Copy link
Contributor

GiudGiud commented Feb 7, 2025

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.

  • Q&A General is the most appropriate section for my question
  • I have consulted the posting Guidelines on the Discussions front page
  • I have searched the Discussions forum and my question has not been asked before
  • I have searched the MOOSE website and the documentation does not answer my question
  • I have formatted my post following the posting guidelines (screenshots as a last resort, triple back quotes around pasted text)

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.

@GiudGiud GiudGiud added 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. labels Feb 7, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
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.
Projects
None yet
Development

No branches or pull requests

1 participant