Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Ok-landscape
GitHub Repository: Ok-landscape/computational-pipeline
Path: blob/main/latex-templates/templates/mechanical-engineering/heat_transfer.tex
51 views
unlisted
1
\documentclass[11pt,a4paper]{article}
2
3
% Document Setup
4
\usepackage[utf8]{inputenc}
5
\usepackage[T1]{fontenc}
6
\usepackage{lmodern}
7
\usepackage[margin=1in]{geometry}
8
\usepackage{amsmath,amssymb}
9
\usepackage{siunitx}
10
\usepackage{booktabs}
11
\usepackage{float}
12
\usepackage{caption}
13
\usepackage{hyperref}
14
15
% PythonTeX Setup
16
\usepackage[makestderr]{pythontex}
17
18
\title{Heat Transfer Analysis: Conduction, Convection, and Fins}
19
\author{Mechanical Engineering Laboratory}
20
\date{\today}
21
22
\begin{document}
23
\maketitle
24
25
\begin{abstract}
26
This report presents computational analysis of heat transfer mechanisms including conduction through composite walls, convection correlations, fin analysis, and heat exchanger design. Python-based computations provide quantitative analysis with dynamic visualization of temperature distributions and heat flux.
27
\end{abstract}
28
29
\tableofcontents
30
\newpage
31
32
\section{Introduction to Heat Transfer}
33
34
Heat transfer is the thermal energy in transit due to a temperature difference. The three modes are:
35
\begin{itemize}
36
\item Conduction: Energy transfer through molecular interactions
37
\item Convection: Energy transfer by fluid motion
38
\item Radiation: Energy transfer by electromagnetic waves
39
\end{itemize}
40
41
% Initialize Python environment
42
\begin{pycode}
43
import numpy as np
44
import matplotlib.pyplot as plt
45
from scipy.optimize import fsolve
46
47
plt.rcParams['figure.figsize'] = (8, 5)
48
plt.rcParams['font.size'] = 10
49
plt.rcParams['text.usetex'] = True
50
51
def save_fig(filename):
52
plt.savefig(filename, dpi=150, bbox_inches='tight')
53
plt.close()
54
\end{pycode}
55
56
\section{Conduction Heat Transfer}
57
58
\subsection{Fourier's Law}
59
60
The rate of heat conduction is proportional to the temperature gradient:
61
\begin{equation}
62
q = -k \frac{dT}{dx}
63
\end{equation}
64
where $k$ is thermal conductivity (\si{\watt\per\meter\per\kelvin}).
65
66
\subsection{Composite Wall Analysis}
67
68
For a composite wall with convection on both sides:
69
\begin{equation}
70
q = \frac{T_{i} - T_{o}}{R_{total}} = \frac{T_{i} - T_{o}}{\frac{1}{h_i A} + \sum\frac{L_j}{k_j A} + \frac{1}{h_o A}}
71
\end{equation}
72
73
\begin{pycode}
74
# Composite wall analysis
75
# Three-layer wall: brick + insulation + plaster
76
materials = [
77
{'name': 'Brick', 'k': 0.72, 'L': 0.23}, # W/mK, m
78
{'name': 'Insulation', 'k': 0.038, 'L': 0.08},
79
{'name': 'Plaster', 'k': 0.48, 'L': 0.02}
80
]
81
82
h_i = 10 # W/m2K (inside convection)
83
h_o = 25 # W/m2K (outside convection)
84
T_i = 22 # C (inside temperature)
85
T_o = -5 # C (outside temperature)
86
87
# Calculate thermal resistances (per unit area)
88
R_i = 1/h_i
89
R_o = 1/h_o
90
R_total = R_i + R_o
91
92
x_positions = [0]
93
T_positions = [T_i]
94
95
# Calculate temperature at each interface
96
q = 0 # Will be calculated
97
current_T = T_i - (T_i - T_o) * R_i # Temperature at inner surface
98
99
R_materials = []
100
for mat in materials:
101
R = mat['L'] / mat['k']
102
R_materials.append(R)
103
R_total += R
104
105
# Heat flux
106
q = (T_i - T_o) / R_total
107
108
# Temperature profile
109
T_positions = [T_i]
110
x_positions = [0]
111
112
# Inner convection boundary
113
T_s1 = T_i - q * R_i
114
T_positions.append(T_s1)
115
x = 0
116
x_positions.append(x)
117
118
# Through each material layer
119
for mat, R in zip(materials, R_materials):
120
x += mat['L']
121
T_next = T_positions[-1] - q * R
122
x_positions.append(x)
123
T_positions.append(T_next)
124
125
# Outer surface
126
T_positions.append(T_o)
127
x_positions.append(x_positions[-1])
128
129
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(14, 5))
130
131
# Temperature profile
132
ax1.plot(np.array(x_positions)*100, T_positions, 'b-o', linewidth=2, markersize=8)
133
ax1.axhline(0, color='k', linestyle='--', alpha=0.3)
134
135
# Shade regions
136
colors = ['#FFB6C1', '#90EE90', '#ADD8E6']
137
x_start = 0
138
for i, (mat, color) in enumerate(zip(materials, colors)):
139
ax1.axvspan(x_start*100, (x_start + mat['L'])*100, alpha=0.3, color=color, label=mat['name'])
140
x_start += mat['L']
141
142
ax1.set_xlabel('Position (cm)')
143
ax1.set_ylabel('Temperature ($^\\circ$C)')
144
ax1.set_title('Temperature Profile Through Composite Wall')
145
ax1.legend(loc='upper right')
146
ax1.grid(True, alpha=0.3)
147
148
# Thermal resistance breakdown
149
resistances = [R_i] + R_materials + [R_o]
150
labels = ['Conv (in)'] + [m['name'] for m in materials] + ['Conv (out)']
151
colors_bar = ['yellow'] + colors + ['yellow']
152
153
ax2.bar(labels, resistances, color=colors_bar, alpha=0.7)
154
ax2.set_ylabel('Thermal Resistance (m$^2$K/W)')
155
ax2.set_title(f'Resistance Breakdown (Total = {R_total:.3f} m$^2$K/W)')
156
ax2.grid(True, alpha=0.3, axis='y')
157
158
plt.tight_layout()
159
save_fig('composite_wall.pdf')
160
\end{pycode}
161
162
\begin{figure}[H]
163
\centering
164
\includegraphics[width=\textwidth]{composite_wall.pdf}
165
\caption{Composite wall analysis: temperature profile and thermal resistance breakdown.}
166
\end{figure}
167
168
Heat flux through wall: $q = \py{f"{q:.1f}"}$ \si{\watt\per\square\meter}
169
170
\section{Convection Heat Transfer}
171
172
\subsection{Convection Correlations}
173
174
The heat transfer coefficient depends on the Nusselt number:
175
\begin{equation}
176
h = \frac{Nu \cdot k}{L_c}
177
\end{equation}
178
179
\begin{pycode}
180
# Convection correlations for different geometries
181
def Nu_flat_plate_laminar(Re, Pr):
182
"""Laminar flow over flat plate"""
183
return 0.664 * Re**0.5 * Pr**(1/3)
184
185
def Nu_flat_plate_turbulent(Re, Pr):
186
"""Turbulent flow over flat plate"""
187
return 0.037 * Re**0.8 * Pr**(1/3)
188
189
def Nu_cylinder_crossflow(Re, Pr):
190
"""Cross-flow over cylinder (Churchill-Bernstein)"""
191
return 0.3 + (0.62 * Re**0.5 * Pr**(1/3)) / (1 + (0.4/Pr)**(2/3))**0.25 * \
192
(1 + (Re/282000)**(5/8))**(4/5)
193
194
def Nu_pipe_turbulent(Re, Pr):
195
"""Fully developed turbulent flow in pipe (Dittus-Boelter)"""
196
return 0.023 * Re**0.8 * Pr**0.4
197
198
# Calculate for air flow
199
Pr = 0.71 # Prandtl number for air
200
Re_range = np.logspace(3, 6, 100)
201
202
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 5))
203
204
# External flow correlations
205
Nu_plate_lam = [Nu_flat_plate_laminar(Re, Pr) for Re in Re_range if Re < 5e5]
206
Nu_plate_turb = [Nu_flat_plate_turbulent(Re, Pr) for Re in Re_range if Re >= 5e5]
207
Nu_cyl = [Nu_cylinder_crossflow(Re, Pr) for Re in Re_range]
208
209
ax1.loglog(Re_range[Re_range < 5e5], Nu_plate_lam, 'b-', linewidth=2, label='Flat plate (laminar)')
210
ax1.loglog(Re_range[Re_range >= 5e5], Nu_plate_turb, 'b--', linewidth=2, label='Flat plate (turbulent)')
211
ax1.loglog(Re_range, Nu_cyl, 'r-', linewidth=2, label='Cylinder cross-flow')
212
ax1.axvline(5e5, color='k', linestyle=':', alpha=0.5)
213
ax1.set_xlabel('Reynolds Number')
214
ax1.set_ylabel('Nusselt Number')
215
ax1.set_title('External Flow Correlations')
216
ax1.legend()
217
ax1.grid(True, which='both', alpha=0.3)
218
219
# Internal flow correlation
220
Re_pipe = np.logspace(4, 6, 50)
221
Nu_pipe = [Nu_pipe_turbulent(Re, Pr) for Re in Re_pipe]
222
223
ax2.loglog(Re_pipe, Nu_pipe, 'g-', linewidth=2, label='Dittus-Boelter (heating)')
224
ax2.set_xlabel('Reynolds Number')
225
ax2.set_ylabel('Nusselt Number')
226
ax2.set_title('Internal Flow Correlation (Turbulent Pipe)')
227
ax2.legend()
228
ax2.grid(True, which='both', alpha=0.3)
229
230
plt.tight_layout()
231
save_fig('convection_correlations.pdf')
232
\end{pycode}
233
234
\begin{figure}[H]
235
\centering
236
\includegraphics[width=\textwidth]{convection_correlations.pdf}
237
\caption{Convection heat transfer correlations for external and internal flows.}
238
\end{figure}
239
240
\section{Extended Surfaces (Fins)}
241
242
\subsection{Fin Temperature Distribution}
243
244
For a fin with adiabatic tip:
245
\begin{equation}
246
\frac{\theta}{\theta_b} = \frac{\cosh[m(L-x)]}{\cosh(mL)}
247
\end{equation}
248
where $m = \sqrt{\frac{hP}{kA_c}}$ and $\theta = T - T_{\infty}$.
249
250
\begin{pycode}
251
# Fin analysis
252
k_fin = 200 # W/mK (aluminum)
253
h_fin = 50 # W/m2K
254
L_fin = 0.1 # m (fin length)
255
t_fin = 0.005 # m (fin thickness)
256
w_fin = 0.05 # m (fin width)
257
258
# Cross-section parameters
259
P = 2 * (t_fin + w_fin) # perimeter
260
A_c = t_fin * w_fin # cross-sectional area
261
m = np.sqrt(h_fin * P / (k_fin * A_c))
262
263
T_b = 100 # C (base temperature)
264
T_inf = 25 # C (ambient temperature)
265
theta_b = T_b - T_inf
266
267
# Temperature distribution
268
x = np.linspace(0, L_fin, 100)
269
theta = theta_b * np.cosh(m * (L_fin - x)) / np.cosh(m * L_fin)
270
T_fin = theta + T_inf
271
272
# Heat transfer rate
273
q_fin = np.sqrt(h_fin * P * k_fin * A_c) * theta_b * np.tanh(m * L_fin)
274
275
# Maximum possible heat transfer (if entire fin at base temperature)
276
A_fin = P * L_fin # fin surface area
277
q_max = h_fin * A_fin * theta_b
278
279
# Fin efficiency
280
eta_fin = q_fin / q_max
281
282
fig, axes = plt.subplots(2, 2, figsize=(12, 10))
283
284
# Temperature distribution
285
axes[0, 0].plot(x*100, T_fin, 'b-', linewidth=2)
286
axes[0, 0].axhline(T_inf, color='r', linestyle='--', label=f'$T_\\infty$ = {T_inf}$^\\circ$C')
287
axes[0, 0].set_xlabel('Distance from Base (cm)')
288
axes[0, 0].set_ylabel('Temperature ($^\\circ$C)')
289
axes[0, 0].set_title('Fin Temperature Distribution')
290
axes[0, 0].legend()
291
axes[0, 0].grid(True, alpha=0.3)
292
293
# Temperature ratio
294
axes[0, 1].plot(x*100, theta/theta_b * 100, 'g-', linewidth=2)
295
axes[0, 1].set_xlabel('Distance from Base (cm)')
296
axes[0, 1].set_ylabel('Temperature Ratio $\\theta/\\theta_b$ (\\%)')
297
axes[0, 1].set_title('Normalized Temperature Distribution')
298
axes[0, 1].grid(True, alpha=0.3)
299
300
# Effect of fin length
301
L_range = np.linspace(0.01, 0.2, 50)
302
eta_range = []
303
q_range = []
304
for L in L_range:
305
mL = m * L
306
q = np.sqrt(h_fin * P * k_fin * A_c) * theta_b * np.tanh(mL)
307
A_s = P * L
308
q_max_L = h_fin * A_s * theta_b
309
eta = q / q_max_L
310
eta_range.append(eta * 100)
311
q_range.append(q)
312
313
axes[1, 0].plot(L_range*100, eta_range, 'r-', linewidth=2)
314
axes[1, 0].axvline(L_fin*100, color='k', linestyle='--', alpha=0.5)
315
axes[1, 0].set_xlabel('Fin Length (cm)')
316
axes[1, 0].set_ylabel('Fin Efficiency (\\%)')
317
axes[1, 0].set_title('Fin Efficiency vs Length')
318
axes[1, 0].grid(True, alpha=0.3)
319
320
# Heat transfer rate
321
axes[1, 1].plot(L_range*100, q_range, 'm-', linewidth=2)
322
axes[1, 1].axvline(L_fin*100, color='k', linestyle='--', alpha=0.5)
323
axes[1, 1].set_xlabel('Fin Length (cm)')
324
axes[1, 1].set_ylabel('Heat Transfer Rate (W)')
325
axes[1, 1].set_title('Fin Heat Transfer vs Length')
326
axes[1, 1].grid(True, alpha=0.3)
327
328
plt.tight_layout()
329
save_fig('fin_analysis.pdf')
330
\end{pycode}
331
332
\begin{figure}[H]
333
\centering
334
\includegraphics[width=\textwidth]{fin_analysis.pdf}
335
\caption{Fin analysis: temperature distribution, efficiency, and heat transfer rate.}
336
\end{figure}
337
338
\begin{table}[H]
339
\centering
340
\caption{Fin Performance Parameters}
341
\begin{tabular}{lcc}
342
\toprule
343
Parameter & Value & Units \\
344
\midrule
345
Fin parameter $m$ & \py{f"{m:.2f}"} & 1/m \\
346
Product $mL$ & \py{f"{m*L_fin:.2f}"} & -- \\
347
Fin efficiency & \py{f"{eta_fin*100:.1f}"} & \% \\
348
Heat transfer rate & \py{f"{q_fin:.1f}"} & W \\
349
\bottomrule
350
\end{tabular}
351
\end{table}
352
353
\section{Heat Exchanger Analysis}
354
355
\subsection{LMTD Method}
356
357
For counter-flow heat exchangers:
358
\begin{equation}
359
\Delta T_{lm} = \frac{\Delta T_1 - \Delta T_2}{\ln(\Delta T_1/\Delta T_2)}
360
\end{equation}
361
362
\begin{pycode}
363
# Counter-flow heat exchanger analysis
364
# Hot fluid (oil): inlet 150C, outlet 90C
365
# Cold fluid (water): inlet 20C, outlet 70C
366
367
T_h_in = 150 # C
368
T_h_out = 90 # C
369
T_c_in = 20 # C
370
T_c_out = 70 # C
371
372
# Temperature differences
373
dT_1 = T_h_in - T_c_out # at hot inlet
374
dT_2 = T_h_out - T_c_in # at hot outlet
375
376
# LMTD
377
if dT_1 != dT_2:
378
LMTD = (dT_1 - dT_2) / np.log(dT_1/dT_2)
379
else:
380
LMTD = dT_1
381
382
# Assume heat transfer and calculate UA
383
m_dot_h = 0.5 # kg/s
384
c_p_h = 2000 # J/kgK (oil)
385
Q = m_dot_h * c_p_h * (T_h_in - T_h_out)
386
UA = Q / LMTD
387
388
# Temperature profiles along heat exchanger
389
x = np.linspace(0, 1, 100)
390
391
# Counter-flow
392
T_h_counter = T_h_in - (T_h_in - T_h_out) * x
393
T_c_counter = T_c_out - (T_c_out - T_c_in) * x
394
395
# Parallel flow (for comparison)
396
# Need to recalculate outlet temps for same UA
397
dT_1_parallel = T_h_in - T_c_in
398
C_h = m_dot_h * c_p_h
399
m_dot_c = Q / (4186 * (T_c_out - T_c_in))
400
C_c = m_dot_c * 4186
401
C_min = min(C_h, C_c)
402
NTU = UA / C_min
403
C_r = C_min / max(C_h, C_c)
404
eps_counter = (1 - np.exp(-NTU * (1 - C_r))) / (1 - C_r * np.exp(-NTU * (1 - C_r)))
405
eps_parallel = (1 - np.exp(-NTU * (1 + C_r))) / (1 + C_r)
406
407
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 5))
408
409
# Counter-flow temperature profiles
410
ax1.plot(x*100, T_h_counter, 'r-', linewidth=2, label='Hot fluid')
411
ax1.plot(x*100, T_c_counter, 'b-', linewidth=2, label='Cold fluid')
412
ax1.fill_between(x*100, T_h_counter, T_c_counter, alpha=0.2, color='green')
413
ax1.set_xlabel('Position (\\% of length)')
414
ax1.set_ylabel('Temperature ($^\\circ$C)')
415
ax1.set_title(f'Counter-Flow HX (LMTD = {LMTD:.1f}$^\\circ$C)')
416
ax1.legend()
417
ax1.grid(True, alpha=0.3)
418
419
# Effectiveness-NTU curves
420
NTU_range = np.linspace(0.1, 5, 100)
421
C_r_values = [0, 0.25, 0.5, 0.75, 1.0]
422
423
for C_r in C_r_values:
424
if C_r == 1:
425
eps = NTU_range / (1 + NTU_range)
426
else:
427
eps = (1 - np.exp(-NTU_range * (1 - C_r))) / (1 - C_r * np.exp(-NTU_range * (1 - C_r)))
428
ax2.plot(NTU_range, eps, linewidth=1.5, label=f'$C_r$ = {C_r}')
429
430
ax2.set_xlabel('NTU')
431
ax2.set_ylabel('Effectiveness $\\varepsilon$')
432
ax2.set_title('Counter-Flow HX Effectiveness')
433
ax2.legend()
434
ax2.grid(True, alpha=0.3)
435
436
plt.tight_layout()
437
save_fig('heat_exchanger.pdf')
438
\end{pycode}
439
440
\begin{figure}[H]
441
\centering
442
\includegraphics[width=\textwidth]{heat_exchanger.pdf}
443
\caption{Heat exchanger analysis: temperature profiles and effectiveness-NTU curves.}
444
\end{figure}
445
446
Heat duty: $Q = \py{f"{Q/1000:.1f}"}$ kW, $UA = \py{f"{UA:.0f}"}$ W/K
447
448
\section{Transient Conduction}
449
450
\subsection{Lumped Capacitance Method}
451
452
When $Bi = hL_c/k < 0.1$:
453
\begin{equation}
454
\frac{T - T_{\infty}}{T_i - T_{\infty}} = \exp\left(-\frac{hA_s}{\rho V c_p}t\right) = \exp\left(-\frac{t}{\tau}\right)
455
\end{equation}
456
457
\begin{pycode}
458
# Transient cooling of a sphere
459
D = 0.05 # m diameter
460
rho = 2700 # kg/m3 (aluminum)
461
c_p = 900 # J/kgK
462
k = 200 # W/mK
463
h = 100 # W/m2K
464
465
V = (4/3) * np.pi * (D/2)**3
466
A_s = 4 * np.pi * (D/2)**2
467
L_c = V / A_s
468
469
# Biot number
470
Bi = h * L_c / k
471
472
# Time constant
473
tau = rho * V * c_p / (h * A_s)
474
475
T_i = 200 # C initial
476
T_inf = 25 # C ambient
477
478
# Temperature history
479
t = np.linspace(0, 600, 200)
480
theta_ratio = np.exp(-t/tau)
481
T = T_inf + (T_i - T_inf) * theta_ratio
482
483
# Heat transfer rate
484
q_t = h * A_s * (T - T_inf)
485
Q_total = rho * V * c_p * (T_i - T_inf) # total energy
486
Q_transferred = Q_total * (1 - theta_ratio)
487
488
fig, axes = plt.subplots(2, 2, figsize=(12, 10))
489
490
# Temperature history
491
axes[0, 0].plot(t, T, 'b-', linewidth=2)
492
axes[0, 0].axhline(T_inf, color='r', linestyle='--', label=f'$T_\\infty$ = {T_inf}$^\\circ$C')
493
axes[0, 0].axvline(tau, color='k', linestyle=':', alpha=0.5, label=f'$\\tau$ = {tau:.0f} s')
494
axes[0, 0].set_xlabel('Time (s)')
495
axes[0, 0].set_ylabel('Temperature ($^\\circ$C)')
496
axes[0, 0].set_title('Temperature History (Lumped Capacitance)')
497
axes[0, 0].legend()
498
axes[0, 0].grid(True, alpha=0.3)
499
500
# Temperature ratio (semi-log)
501
axes[0, 1].semilogy(t, theta_ratio, 'g-', linewidth=2)
502
axes[0, 1].axhline(0.368, color='k', linestyle='--', alpha=0.5, label='$e^{-1}$')
503
axes[0, 1].axvline(tau, color='k', linestyle=':', alpha=0.5)
504
axes[0, 1].set_xlabel('Time (s)')
505
axes[0, 1].set_ylabel('$(T - T_\\infty)/(T_i - T_\\infty)$')
506
axes[0, 1].set_title('Normalized Temperature')
507
axes[0, 1].legend()
508
axes[0, 1].grid(True, which='both', alpha=0.3)
509
510
# Instantaneous heat transfer rate
511
axes[1, 0].plot(t, q_t, 'r-', linewidth=2)
512
axes[1, 0].set_xlabel('Time (s)')
513
axes[1, 0].set_ylabel('Heat Transfer Rate (W)')
514
axes[1, 0].set_title('Instantaneous Heat Transfer')
515
axes[1, 0].grid(True, alpha=0.3)
516
517
# Cumulative energy transferred
518
axes[1, 1].plot(t, Q_transferred/1000, 'm-', linewidth=2)
519
axes[1, 1].axhline(Q_total/1000, color='k', linestyle='--', alpha=0.5, label=f'Total = {Q_total/1000:.2f} kJ')
520
axes[1, 1].set_xlabel('Time (s)')
521
axes[1, 1].set_ylabel('Energy Transferred (kJ)')
522
axes[1, 1].set_title('Cumulative Energy Transfer')
523
axes[1, 1].legend()
524
axes[1, 1].grid(True, alpha=0.3)
525
526
plt.tight_layout()
527
save_fig('transient_conduction.pdf')
528
\end{pycode}
529
530
\begin{figure}[H]
531
\centering
532
\includegraphics[width=\textwidth]{transient_conduction.pdf}
533
\caption{Transient conduction analysis using lumped capacitance method.}
534
\end{figure}
535
536
Biot number: $Bi = \py{f"{Bi:.3f}"}$ (lumped model valid since $Bi < 0.1$)
537
538
\section{Radiation Heat Transfer}
539
540
\begin{pycode}
541
# Radiation between surfaces
542
sigma = 5.67e-8 # Stefan-Boltzmann constant
543
544
# Enclosure with two surfaces
545
T1 = 500 + 273 # K (hot surface)
546
T2 = 300 + 273 # K (cold surface)
547
eps1 = 0.8
548
eps2 = 0.6
549
A1 = 2 # m2
550
F12 = 0.5 # view factor
551
552
# Net radiation heat transfer
553
q_rad = sigma * A1 * F12 * (T1**4 - T2**4) / (1/eps1 + A1/(A1*F12) * (1/eps2 - 1))
554
555
# Blackbody radiation
556
T_range = np.linspace(300, 1500, 100)
557
E_b = sigma * T_range**4
558
559
fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 5))
560
561
# Blackbody emissive power
562
ax1.plot(T_range - 273, E_b/1000, 'r-', linewidth=2)
563
ax1.set_xlabel('Temperature ($^\\circ$C)')
564
ax1.set_ylabel('Emissive Power (kW/m$^2$)')
565
ax1.set_title('Blackbody Emissive Power')
566
ax1.grid(True, alpha=0.3)
567
568
# Effect of emissivity on net radiation
569
eps_range = np.linspace(0.1, 1.0, 50)
570
q_eps = []
571
for eps in eps_range:
572
q = sigma * A1 * F12 * (T1**4 - T2**4) * eps # simplified
573
q_eps.append(q/1000)
574
575
ax2.plot(eps_range, q_eps, 'b-', linewidth=2)
576
ax2.set_xlabel('Emissivity')
577
ax2.set_ylabel('Heat Transfer (kW)')
578
ax2.set_title('Effect of Emissivity on Radiation')
579
ax2.grid(True, alpha=0.3)
580
581
plt.tight_layout()
582
save_fig('radiation.pdf')
583
\end{pycode}
584
585
\begin{figure}[H]
586
\centering
587
\includegraphics[width=\textwidth]{radiation.pdf}
588
\caption{Radiation heat transfer: blackbody emission and emissivity effects.}
589
\end{figure}
590
591
\section{Conclusions}
592
593
This analysis demonstrates key aspects of heat transfer:
594
\begin{enumerate}
595
\item Composite walls require thermal resistance network analysis
596
\item Convection correlations depend on flow geometry and regime
597
\item Fin efficiency decreases with length but total heat transfer increases
598
\item Heat exchanger design uses LMTD or effectiveness-NTU methods
599
\item Lumped capacitance applies when $Bi < 0.1$
600
\item Radiation becomes dominant at high temperatures
601
\end{enumerate}
602
603
\end{document}
604
605