Skip to main content
Version: 0.4.0

Heat conduction

Verification of heatConduction against published benchmarks and closed-form solutions. All results are from FEAScript-core 0.4.0, solved with lusolve.

The benchmark tests run on one mesh each. The convergence studies below were run for these pages with the same setups on a sequence of structured meshes, refined by a factor of 2 each time.

NAFEMS T4​

A 0.6 m × 1.0 m plate, k=52k = 52 W/(m·K), with a fixed temperature of 100 °C on the bottom edge, an insulated left edge, and convection (h=750h = 750 W/(m²·K), T∞=0T_\infty = 0 °C) on the top and right edges. The target is the temperature at point E (0.6 m, 0.2 m): 18.3 °C in the NAFEMS standard benchmarks (TNSB Rev. 3, 1990), the value used by most codes. COMSOL quotes 18.25 °C, citing the 1986 NAFEMS summary of the thermal benchmarks (Cameron, Casey and Simpson).

NAFEMS T4 plate with its boundary conditions and point E

12 × 20 quadratic mesh of the NAFEMS T4 test

MeshLinear (°C)Quadratic (°C)
3 × 58.499621.5227
6 × 1017.954018.3984
12 × 2018.092718.2558
24 × 4018.213718.2539
48 × 8018.243818.2538

Both element orders converge to 18.254 °C, which agrees with 18.25 °C and rounds to 18.3 °C. The plot shows the error against the finest quadratic result (18.2538 °C). Linear elements converge at second order on the finer meshes, quadratic elements at fourth order or faster.

NAFEMS T4: error at point E against element size, for linear and quadratic elements, logarithmic axes

The test checks the 12 × 20 quadratic mesh against 18.3 °C with a tolerance of 0.1 °C: heatConduction2DNafemsT4. This is an independent reproduction of the T4 problem and is not sponsored, endorsed, or affiliated with NAFEMS.

Code_Aster TPLP302​

From the Code_Aster validation manual (V4.05.302): a strip 0.2 m wide and 2 m long, k=1k = 1, with 100 °C on the bottom edge, 0 °C on both side edges and an insulated top edge. The strip is ten widths long, so the solution is that of a semi-infinite strip (Welty, Wicks and Wilson):

T(x,y)=4Tpπ∑n=0∞12n+1 e−(2n+1)πy/l sin⁡(2n+1)πxl,T(x, y) = \frac{4 T_p}{\pi} \sum_{n=0}^{\infty} \frac{1}{2n+1} \, e^{-(2n+1)\pi y / l} \, \sin\frac{(2n+1)\pi x}{l},

with Tp=100T_p = 100 °C and l=0.2l = 0.2 m. The temperature jumps from 100 °C to 0 °C at the two bottom corners.

Code_Aster TPLP302 strip with its boundary conditions and the reference points E to K

8 × 80 quadratic mesh of the TPLP302 test, lower part of the strip

Pointx (m)y (m)Reference (°C)Quadratic 8 × 80 (°C)Quadratic 16 × 160 (°C)
E0.050.0543.49643.48343.495
F0.050.1018.97818.97718.978
G0.050.158.5598.5588.559
H0.100.0554.46754.47054.467
I0.100.1026.09626.09626.096
J0.100.1512.03212.03212.032
K0.100.205.4995.4995.499

The convergence study measures the largest error at the seven points against the series:

MeshNodes (linear)Error, linear (°C)OrderNodes (quadratic)Error, quadratic (°C)Order
4 × 402056.9e07296.4e-1
8 × 807291.6e02.082,7371.3e-25.64
16 × 1602,7373.5e-12.2110,5931.6e-46.28
32 × 32010,5938.5e-22.0441,6659.9e-64.04

Linear elements converge at second order. Quadratic elements converge at fourth order or faster at these points: nodal values of quadratic elements often converge faster than the solution between the nodes.

Code_Aster TPLP302: largest error at the seven reference points against element size, for linear and quadratic elements, logarithmic axes

The test checks the 8 × 80 quadratic mesh against the reference values (relative tolerance 1e-3) and the 16 × 160 quadratic mesh against the series (tolerance 2e-3 °C): heatConduction2DCodeAsterTplp302. This is an independent reproduction and is not sponsored, endorsed, or affiliated with EDF or the Code_Aster project.

Code_Aster TPLP01​

From the Code_Aster validation manual (V4.05.001), which takes the problem and its reference values from the VPCS validation guide (SFM/AFNOR, 1990, after Symm, NPL Report NAC 31, 1973). An L-shaped domain, a 0.8 m × 0.8 m square without its 0.4 m × 0.4 m bottom right quarter, k=1k = 1, with 10 °C on the left edge, 0 °C on the right edge (x=0.8x = 0.8, 0.4≤y≤0.80.4 \le y \le 0.8) and all other edges insulated. The temperature gradient is singular at the re-entrant corner (0.4, 0.4).

Code_Aster TPLP01 L-shaped domain with its boundary conditions, the re-entrant corner C and the 13 reference points

The meshes are made with Gmsh, with an element size of 0.05 m refined to 0.01 m at the corner: 618 six-node triangles and 321 nine-node quadrilaterals, both with a node at each reference point.

Gmsh meshes of the TPLP01 test: quadratic triangles and quadratic quadrilaterals, refined at the corner C

x (m)y (m)Reference (°C)Triangles (°C)Quadrilaterals (°C)
0.20.09.3169.3079.307
0.20.29.001 ¹9.1009.101
0.20.48.5148.5168.517
0.20.68.0188.0188.018
0.20.87.8697.8747.874
0.40.09.0099.0089.008
0.40.28.6408.6608.660
0.40.46.6676.6666.665
0.40.65.6805.6705.670
0.40.85.4955.4965.496
0.60.42.9722.9672.967
0.60.62.8812.8812.881
0.60.82.8162.8192.819

Triangles and quadrilaterals agree within 0.001 °C, and the values hardly change on a mesh of about 20,000 nodes. The largest deviation from the reference is 0.24 %, apart from the point marked ¹.

¹ At (0.2, 0.2) the published 9.001 °C is 1.1 % below the FEAScript result, which is mesh-converged (9.1007 °C on the 20,000-node mesh). It is likely a misprint of about 9.10 °C.

The test checks every point on both meshes with a relative tolerance of 5e-3 (1.5e-2 at the point marked ¹): heatConduction2DCodeAsterTplp01. This is an independent reproduction and is not sponsored, endorsed, or affiliated with EDF, the Code_Aster project, SFM or AFNOR.

Spatially varying coefficients​

Closed-form solutions with spatially varying kk and QQ, chosen so that the finite element solution is exact at the nodes. Every nodal value must match to within 1e-10; the observed deviations are of order 1e-15.

Domains and meshes of the spatially varying coefficient tests: 8 elements in 1D, 4 × 3 quadratic elements in 2D

DimensionkkQQExact solutionElements
1D11T=x(1−x)/2T = x (1 - x) / 2Linear
1D1+x1 + x−1T=xT = xLinear, quadratic
2D1+x1 + x−1T=xT = xQuadratic quads
2D1+y1 + y−1T=yT = yQuadratic quads

The 1D test also checks the frontal solver against lusolve. Tests: heatConduction1DVaryingCoefficients and heatConduction2DVaryingCoefficients.