RasmahRasmah

Surface-to-Surface Radiation: View Factors and the Radiosity Method

using Rasmah
using LinearAlgebra

Overview

Heat moves by conduction (contact), convection (moving fluid), and radiation (electromagnetic exchange between surfaces). Radiation needs no medium — that is why it dominates in vacuum and in high-temperature enclosures like furnaces and spacecraft. Rasmah implements surface-to-surface radiation for diffuse-gray surfaces: geometric view factors, the radiosity system, and the net radiative flux, all verified against the classical closed forms.

View factors

The view factor F_{1→2} is the fraction of radiation leaving surface 1 that lands on surface 2. For simple geometries it is analytic (Howell’s catalog):

# infinite parallel plates see each other fully
println("parallel plates F12 = ", parallel_plate_view_factor())

# concentric cylinders / spheres (inner surface 1, outer surface 2)
F12c, F21c = concentric_cylinder_view_factors(0.5, 2.0)
F12s, F21s = concentric_sphere_view_factors(0.5, 2.0)
println("cylinders: F12 = $F12c, F21 = $F21c   (F21 = r1/r2)")
println("spheres:   F12 = $F12s, F21 = $F21s   (F21 = (r1/r2)^2)")
parallel plates F12 = 1.0
cylinders: F12 = 1.0, F21 = 0.25   (F21 = r1/r2)
spheres:   F12 = 1.0, F21 = 0.0625   (F21 = (r1/r2)^2)

The radiosity method

For a closed enclosure of N diffuse-gray surfaces (area A, emissivity ε, temperature T), the radiosity J_i (outgoing flux per unit area) solves

\[J_i - (1-\varepsilon_i)\sum_j F_{ij} J_j = \varepsilon_i\,\sigma T_i^4\]

and the net heat lost by surface i is q_i = A_i ε_i/(1−ε_i) (σT_i⁴ − J_i). Rasmah’s solve_radiosity solves the system and returns both:

# a 3-surface enclosure at one temperature: no net radiative exchange
A = [1.0, 2.0, 3.0]
F = [0.0 0.4 0.6; 0.2 0.0 0.8; 0.2 0.5333333333 0.2666666667]
J, q = solve_radiosity(A, [0.5, 0.5, 0.5], [400.0, 400.0, 400.0], F)
println("net fluxes at uniform T = ", round.(q, digits=10), "  (≈ 0)")
net fluxes at uniform T = [-0.0, -0.0, -0.0]  (≈ 0)

Two parallel gray plates

The classical result: two infinite parallel plates at T₁, T₂ with emissivities ε₁, ε₂ exchange

\[q = \frac{\sigma (T_1^4 - T_2^4)}{1/\varepsilon_1 + 1/\varepsilon_2 - 1}\]

per unit area. Rasmah reproduces it through the radiosity method:

T1, T2, ε1, ε2 = 1000.0, 300.0, 0.8, 0.5
q = two_parallel_plates_flux(T1, T2, ε1, ε2)
σ = 5.670374419e-8                                  # Stefan–Boltzmann constant
q_exact = σ * (T1^4 - T2^4) / (1/ε1 + 1/ε2 - 1)
println("radiosity q = ", round(q; digits=1), "   exact = ", round(q_exact; digits=1))
radiosity q = 24997.5   exact = 24997.5

Next steps