This is the 2D counterpart to the 3D Formica-mound scene, built from the exact same cosine-law absorption and nest-temperature ODE, but computed on a top-down 2D height-field grid instead of an instanced 3D dome mesh.
Dome height field h(x,y), south-elongated footprint:
φ = atan2(x, y), rimScale(φ) = 1 + asym·cos(φ)
h = H·(1 − 0.18(rimScale−1))·√max(0, 1 − (r / (R·rimScale))²)
Surface normal from the grid itself (finite differences, no mesh):
n̂ ∝ ( −∂h/∂x, 1, −∂h/∂y ), normalized
Irradiance per cell = S₀·max(0, n̂ · ŝ), ŝ from elevation θ, azimuth φ:
ŝ = (sinφ·cosθ, sinθ, cosφ·cosθ)
dT/dt = a·Q_solar(t) − b·(T − T_amb) − v(t)·c·(T − T_amb)
The grid panel is a genuine 2D scalar field — height and slope are stored per cell and the surface normal is recovered numerically from neighboring cells, the same way a digital-elevation model derives slope/aspect for solar-exposure mapping in real terrain analysis. The polar chart is a standard architectural/solar-engineering sun-path diagram: radius = 90° − elevation (zenith at the center, horizon at the rim), angle = azimuth. The strip chart integrates the identical ODE used by the 3D scene in real time.
- Peak sun elevation — the sun's maximum altitude at solar noon; traces a half-sine arc from sunrise (06:00) to sunset (18:00 solar time) on the polar chart.
- South-slope elongation — stretches the grid footprint toward the south (bottom of the grid, φ=0), the same low-angle-collecting profile as the real dome.
- Vent-opening threshold — each of the 8 vents (small circles at mid-slope on the grid) has its own jittered set-point and opens/closes with hysteresis, identical bang-bang logic to the 3D scene.
- Flux map toggles the grid between a topographic relief tint and a live red↔blue absorbed-flux map; Vents toggles their markers.