Appendix A3 - Multiple scattering between parallel planes¶
A transmitting Lambertian sheet lies above reflecting ground. Sunlight entering the cavity reflects repeatedly between the ground and the underside of the sheet before escaping or being absorbed. This case tests higher-order scattering through multiple diffuse surface reflections.
Each round trip retains a fixed fraction of flux, giving an exact geometric-series solution. We compare total reflectance, absorption by each surface, angular BRF and results at individual interaction limits.
Scene settings¶
Drag to rotate, or open the 3D view separately.
The horizontal cell is 2 m by 2 m, with ground at Z = 0 and the sheet at Z = 1 m. Horizontal periodic boundaries, allowing 10000 crossings, represent infinitely extended planes. Solar zenith is 30 degrees, normal irradiance is 1 W m^-2 nm^-1 at each wavelength, and there is no atmosphere or sky. Incident flux is \(4\cos30^\circ\) W nm^-1 per wavelength.
Let r and b denote the upper and lower sheet reflectances, t the transmittance in either direction, and g the ground reflectance. Reflection and transmission follow Lambertian angular distributions.
| Wavelength / nm | r | b | t | g | Round-trip factor q = gb |
|---|---|---|---|---|---|
| 550 | 0.2 | 0.3 | 0.5 | 0.6 | 0.18 |
| 850 | 0.1 | 0.8 | 0.15 | 0.9 | 0.72 |
| 1600 | 0.8 | 0.8 | 0.2 | 1 | 0.8 |
Higher orders contribute relatively little at 550 nm and strongly at 850 nm. At 1600 nm both surfaces are nonabsorbing, so all flux eventually escapes upward.
Analytic solution¶
The view factor between infinite parallel planes is one: all downward flux from the sheet reaches the ground, and all upward flux from the ground reaches the sheet. For view-factor fundamentals, see NASA's Thermal Radiation Heat Transfer.
The first downward flux fraction is t. After reflection by the ground and sheet underside, it becomes \(tgb=tq\). Total ground incidence is therefore
Summing escape and absorption at every interaction gives total reflectance R, ground absorptance \(A_g\), and sheet absorptance \(A_s\):
These satisfy \(R+A_g+A_s=1\) and include infinitely many reflections. Outgoing radiance is uniform and Lambertian, so BRF equals R in every upward viewing direction.
| Wavelength / nm | Analytic reflectance | Analytic sheet absorptance | Analytic ground absorptance |
|---|---|---|---|
| 550 | 0.38292683 | 0.37317073 | 0.24390244 |
| 850 | 0.17232143 | 0.77410714 | 0.05357143 |
| 1600 | 1.00000000 | 0 | 0 |
Finite-order reference¶
At the initial sheet interaction, r escapes, \(1-r-t\) is absorbed and t travels downward. Subsequent interactions alternate:
- Ground incidence w: absorb \(w(1-g)\), reflect wg upward.
- Sheet underside incidence w: absorb \(w(1-b-t)\), transmit wt upward to escape, and reflect wb downward.
Stop after D interactions and retain the remaining flux U. Accumulating these exact fractions gives the finite-order reference, satisfying \(R_D+A_{g,D}+A_{s,D}+U_D=1\).
Simulation results¶
The left panel compares limits of 1, 2, 3, 5, 9, 17 and 33 interactions. Lines give the finite-order solution, points give backend results, and dotted horizontal lines show the infinite-series limit. Higher orders visibly affect the 850 and 1600 nm results.
Full transport allows 200 interactions, leaving a theoretical residual below \(6\times10^{-11}\). Sampling uses 1, 2, 4, 8 and 16 million photons; final results use 16 million. BRF viewing directions (zenith, azimuth) are (0, 0), (30, 90) and (60, 180) degrees.
Error evaluation¶
| Metric | Limit |
|---|---|
| Maximum absolute error in escape, absorption or finite-order residual fractions | 0.005 |
| Maximum angular BRF error | 0.005 |
| Maximum change between final photon budgets | 0.003 |
| Energy closure error | 0.003 |
| Truncated flux fraction in full transport | 0.00001 |
Escape, sheet absorption and ground absorption are recorded separately by the simulation. Russian roulette produces small statistical fluctuations in energy closure at finite photon counts.
| Backend | Full flux error | BRF error | Max finite-order error | Closure error | Final budget change | Status |
|---|---|---|---|---|---|---|
| optix | 0.00009787 | 0.00033307 | 0.00030130 | 0.00009787 | 0.00004855 | Pass |
| vulkan | 0.00014619 | 0.00033283 | 0.00032326 | 0.00014619 | 0.00025135 | Pass |
| embree | 0.00009787 | 0.00033295 | 0.00030123 | 0.00009787 | 0.00004818 | Pass |
All three backends pass all criteria. The maximum absolute BRF error is approximately 0.000333, and the maximum full-transport flux error is approximately 0.000146.
At 1600 nm, initial reflectance is 0.8 and the infinite-series total is 1. The finite-order curve shows the contribution of repeated reflections.
Downloads and reproduction¶
Save the script under scripts/, with inputs and OBJ under the sibling data/multiple-scattering/. With LESS, matplotlib and all three backends available, run:
The script saves results and two SVG figures for examining scattering-order contributions and sampling convergence.