Heat Transfer Recipe¶
This recipe trains neural surrogate models for heat transfer simulations on the SIMSHIFT Heatsink benchmark dataset.
We published a report on baseline models on W&B

Figure: Visualization showing the unnormalized temperature error of a trained ABUPT model.
Overview¶
Given a heatsink geometry described by simulation parameters (number of fins, fin dimensions, inlet temperature, etc.), the model predicts the full 3D volume fields:
Velocity (3 components)
Temperature (scalar)
Pressure (scalar)
The recipe includes:
Dataset:
SimshiftHeatsinkDataset– 819 heat transfer simulations with varying fin configurationsModels: AB-UPT and Transformer architectures, both conditioned on simulation parameters
Pipeline: Volume point sampling with configurable anchor subsampling
Callbacks: Denormalized RMSE/nRMSE metrics and interactive 3D plotly visualizations
Normalization: Position scaling to
[0, 1000], mean-std normalization for all other fields
Running an experiment¶
All commands must be run from the recipes/heat_transfer/ directory.
Local training¶
uv run noether-train \
--hp configs/train_simshift_heatsink.yaml \
+experiment/simshift_heatsink=ab_upt \
tracker=disabled \
dataset_root=/path/to/simshift_heatsink
SLURM submission¶
uv run noether-train-submit-job \
--hp configs/train_simshift_heatsink.yaml \
+experiment/simshift_heatsink=ab_upt \
dataset_root=/path/to/simshift_heatsink
Available experiments¶
Experiment config |
Model |
Description |
|---|---|---|
|
AB-UPT |
Anchored-Branched UPT with 5 physics blocks |
|
Transformer |
Standard Transformer |
Project structure¶
recipes/heat_transfer/
├── callbacks/ # Evaluation and visualization callbacks
│ ├── heat_transfer_metrics.py # RMSE and nRMSE in physical space
│ └── heat_transfer_visualization.py # 3D plotly scatter plots (GT, prediction, error)
├── configs/
│ ├── experiment/simshift_heatsink/ # Per-model experiment overrides
│ ├── model/ # Model architecture configs
│ ├── slurm/ # SLURM job configuration
│ ├── tracker/ # WandB / disabled tracker configs
│ └── train_simshift_heatsink.yaml # Main training config
├── model/
│ └── heat_transfer_transformer.py # Transformer wrapper for volume-only + conditioning
├── pipeline/
│ └── heat_transfer_pipeline.py # Volume point sampling and anchor creation
└── README.md
Configuration¶
Key parameters in train_simshift_heatsink.yaml:
Parameter |
Default |
Description |
|---|---|---|
|
– |
Path to the SIMSHIFT Heatsink dataset (required) |
|
4096 |
Number of volume points sampled per training sample |
|
75 |
Total training epochs |
|
float16 |
Training precision |
|
1e-3 |
Peak learning rate (cosine decay with 5% warmup) |
Callbacks¶
Training automatically logs:
Validation loss every epoch (
OfflineLossCallback)Denormalized RMSE and nRMSE per field on val and test sets (
HeatTransferMetricsCallback)3D scatter visualizations every 10 epochs on the first test sample (
HeatTransferVisualizationCallback) – ground truth, prediction, and per-point relative L2 error