Cluster 7 Fourier Conduction PINN
A Physics-Informed Neural Network predicting the 3D transient temperature field inside a cooling slab, at any thickness and time. Trained as part of the 9-cluster Scientific AI Cluster Orchestration Framework, which pairs this network with an exact symbolic ("Symetria") Fourier-series conduction solver and two physics-grounded safety audits under LangGraph supervision.
Architecture
| Input | (x, y, z, t, L) — 5 features |
| Output | T — temperature, Kelvin |
| Hidden layers | 4 × 64 neurons, Tanh activation |
| Parameters | ~13,000 |
| Output form | Predicts θ=(T−T∞)/θᵢ (O(1) normalized), reconstructs T=T∞+θᵢ·θ |
The exact solution depends on the dimensionless x/L (not raw x, which
is meaningless without knowing L) and the Fourier number α·t/L² — which
spans roughly 1e-4 to 1e4 across the thickness/time slider ranges combined,
over 7 orders of magnitude, so it's log-scaled (the same lesson applied
across this project since Cluster 1's Reynolds-number handling) rather than
fed raw.
Quickstart
import torch
from huggingface_hub import hf_hub_download
from modeling import ParallelFourierPINN
ckpt_path = hf_hub_download("dave1368/cluster-07-fourier-pinn", "fourier_pinn.pt")
# weights_only=False: the checkpoint is a dict with metadata (model_state_dict
# plus training info), not a bare tensor, so torch's default-safe loader can't
# be used as-is. Only do this for checkpoints you trust the source of.
checkpoint = torch.load(ckpt_path, map_location="cpu", weights_only=False)
model = ParallelFourierPINN()
model.load_state_dict(checkpoint["model_state_dict"]) # checkpoint also carries training-time loss history, see training_metrics.json
model.eval()
# coords: (x, y, z, time_seconds, plate_thickness_meters)
coords = torch.tensor([[0.05, 0.05, 0.05, 60.0, 0.1]])
temperature_k = model(coords)
print(temperature_k) # tensor([[T]])
Training data
Exact 3D product-solution Fourier series — no synthetic correlation needed. A slab of thickness L, all six faces held at ambient temperature, initially at 373.15 K (100°C, a standard textbook quenching scenario). The PDE and boundary conditions separate, so the 3D field is the product of three independent 1D series solutions (a real textbook technique for a cube with all faces at the same ambient temperature — Incropera's Fundamentals of Heat and Mass Transfer — not a synthetic approximation):
- 60,000 training points, 10,000 validation points
- Domain: L ∈ [0.01, 1.0] m, t ∈ [1, 3600] s (log-sampled), 30-term series per dimension
- Final train loss: 6.40e-04 · Final val loss: 6.72e-04 (MSE, 3000 epochs)
Validated against classical sources (post-deployment finding)
Cross-checked against Fourier (1822), Stefan & Boltzmann (1879/1884), and Nusselt (1915) — the papers cited in this cluster's Master Specification. Full data tables in the Space README.
| Check | Result |
|---|---|
| 30-term series vs. 2000-term reference (full grid) | Max error 2×10⁻⁴ |
| Boundary self-consistency (θ=0 at both faces, exact solution) | Holds to numerical precision |
| Second Law audit | Always passes (heat flux is calculated from the network's own gradient, not predicted independently, so the math can't come out wrong) — only catches a fully broken model |
| Absolute-zero audit | Real, meaningful check — verified capable of failing under an adversarial stress test; ~284 K margin for the actual trained network |
| Network T(x,y,z,t;L) vs. exact | Errors within a few Kelvin across the full domain |
Limitations
- Only transient conduction (Fourier, 1822) is actually implemented — the Master Specification's citations to Stefan-Boltzmann radiation and Nusselt film condensation reflect the cluster's broader "heat transfer" scope, not code that models radiative or convective heat transfer.
- The Second Law audit cannot discriminate a bad prediction from a good one (see finding above) — it would only catch a genuinely corrupted material constant (e.g. negative thermal conductivity), not network error.
- Both faces are held exactly at ambient temperature (infinite heat transfer coefficient) — no finite convective boundary condition is modeled.