English
Log in
Log in Simulate Now
English
Log in Simulate Now
Documentation
Help > OnScale Solve Validation Cases > Validation Case: Heat Transfer in a Composite Wall

Validation Case: Heat Transfer in a Composite Wall


Problem statement

This thermal simulation is part of the series of validation cases performed using OnScale Solve. In this case, a composite wall consisting of two layers (an insulating brick on the outside and a fire brick on the inside) surrounds a furnace. Thermal convection boundary conditions are used on the inside of the fire brick wall and on the outside of the insulating brick wall to represent the transfer of heat from the brick to the air. The predicted temperatures on the outside of the insulating brick, between the insulating brick and fire brick and on the inside of the fire brick from the simulation results are compared against the reference solution given by Kreith’s Principles of Heat transfer [1].

Geometry

The geometry is a 0.03 \times 0.03 m thick composite wall made up of two brick layers of length 0.1 m and 0.2 m respectively as shown in fig. 1. The CAD file for this geometry is available as an Onshape document.

Figure 1: Composite wall 3D CAD in meters

Boundary Conditions

Thermal convection boundary conditions are imposed on the inside of the fire brick wall and on the outside of the insulating brick wall with a convection coefficient and far-field reference temperature of 68~\text{W/(m$^2 \cdot$ C)} and 1700 ºC and 11~\text{W/(m$^2 \cdot$ C)} and 26 ºC respectively.

Material Properties

The thermal conductivity material property is defined for the fire brick and the insulating brick.

MaterialThermal Conductivity [\text{W/(m$^2 \cdot$ C)}]
Fire Brick1.38
Insulating Brick0.17

Mesh

OnScale Solve generated a second-order tetrahedral mesh. Five simulations are run with the mesh density ranging from very coarse to very fine.

Mesh density# of elements# of dofs
very coarse6521,368
coarse2,3254,246
medium6,07710,392
fine14,56423,779
very fine74,108115,495

Results

The thermal resistance at each point of the composite wall is given by the following equations.

R_0 = \frac{1}{h_1A}

R_1 = \frac{L_1}{k_1A}

R_2 = \frac{L_2}{k_2A}

R_3 = \frac{1}{h_2A}

Where A is the cross-sectional area of the wall which in this case is constant, L is the length of the brick layers, h is the convection coefficients of the brick materials and k is the thermal conductivity of the brick materials. The total thermal resistance of the composite wall is given by

R_\text{total} = R_0 + R_1 + R_2 + R_3

The heat transfer rate through the composite wall is given by

Q = \frac{T_\text{in} - T_\text{out}}{R_\text{total}}

Calculating the heat transfer rate through the composite wall allows the calculation of the temperature at each point of the wall using the following set of equations. The points at which the temperatures are measured are as shown in fig. 1.

T_1 = T_\text{in} - \frac{Q}{h_1A}

T_2 = T_1 - \frac{QL_1}{k_1A}

T_3 = T_2 - \frac{QL_2}{k_2A}

The calculated temperatures from the reference solution are found in the table below.

Ref Name.Ref Value. [ºC]
T_11670.650574022314004
T_21381.409854242221172
T_3207.4328151347856419

The absolute difference of the numerical solution with respect to the reference solution for all five mesh densities are in the table below. Note that the numerical solution can recover the reference solution (minus numerical accuracy) with any mesh size or element order. Note that Onscale Solve automatically switched from a direct solver to an iterative one in the very fine mesh case to optimize memory usage. This explains the slighly larger absolute differences seen in the last row of the table.

Mesh density# of dofsAbs Diff. T_1 [ºC]Abs Diff. T_2 [ºC]Abs Diff. T_3 [ºC]
very coarse4,4131.7 \times 10^{-5}1.7 \times 10^{-5}8.1 \times 10^{-12}
coarse4,2461.7 \times 10^{-5}1.7 \times 10^{-5}8.6 \times 10^{-12}
medium10,3921.7 \times 10^{-5}1.7 \times 10^{-5}7.4 \times 10^{-12}
fine23,7791.7 \times 10^{-5}1.7 \times 10^{-5}1.9 \times 10^{-12}
very fine115,4952.1 \times 10^{-4}3.1 \times 10^{-3}6.8 \times 10^{-4}

Simulation Definition

The complete simulation definition is given below. The metadata tags for parts and faces correspond to the version of the CAD file that was imported from Onshape.

"""
    Auto-generated simulation code.
"""
import onscale as on
with on.Simulation('Simulation', 'Generated in SOLVE', version = '0.8.1') as sim:
    # General simulation settings
    on.settings.EnabledPhysics(["thermal"])
    on.settings.AmbientTemperature(20)
    # Define geometry
    geometry = on.CadFile('Assembly_1.x_t', unit="m")
    point = on.Point(0, 0, 0.1)
    point_2 = on.Point(0, 0, 0.3)
    point_3 = on.Point(0, 0, 0)
    # Define meshing
    on.meshes.MeshFile('very_fine_mesh_volume.msh')
    # Define material database and materials
    materials = on.CloudMaterials('onscale')
    silicon_nitride = materials['Silicon nitride']
    thermal_grease = materials['Thermal grease']
    brick = materials['Brick']
    brick.alias = 'Fire Brick'
    brick >> geometry.parts.search('MsybGxB++OGYH9HTZ', field='partIDTag')
    brick.set('thermal_conductivity_x', 1.38)
    brick_2 = materials['Brick']
    brick_2.alias = 'Insulating Brick'
    brick_2 >> geometry.parts.search('M2AxZFgsZoSSR12p0', field='partIDTag')
    brick_2.set('thermal_conductivity_x', 0.17)
    # Define and apply loads
    convection = on.loads.Convection(68, reference_temp=1700, alias='Convection 1')
    convection >> geometry.parts.search('MsybGxB++OGYH9HTZ', field='partIDTag').faces.search('JKK', field='faceIDTag')
    convection_2 = on.loads.Convection(11, reference_temp=26, alias='Convection 2')
    convection_2 >> geometry.parts.search('M2AxZFgsZoSSR12p0', field='partIDTag').faces.search('JHG', field='faceIDTag')
    # Define output variables
    field_sensor = on.sensors.FieldSensor(data="Temperature", alias='Global Sensor')
    field_sensor >> geometry
    probe_sensor = on.sensors.ProbeSensor(data="Temperature", alias='Sensor 1')
    probe_sensor >> point
    probe_sensor_2 = on.sensors.ProbeSensor(data="Temperature", alias='Sensor 2')
    probe_sensor_2 >> point_2
    probe_sensor_3 = on.sensors.ProbeSensor(data="Temperature", alias='Sensor Origin')
    probe_sensor_3 >> point_3
    # For OnScale System use only
    geometry.set('onshape_workspace_id', "cce9c272aff690265277edb6")
    geometry.set('onshape_doc_id', "8706a468aad47d1879376f7d")
    geometry.set('onshape_doc_microversion', "29dded87cc762aed5992d805")
    geometry.set('onshape_assembly_id', "927d7270428b61643eef5160")
    geometry.set('onshape_assembly_microversion', "d71efac7979215a4a82622bc")

References

[1]
F. Kreith, Principles of heat transfer. New York: Harper & Row, 1976.