How tum-pbs/pbfm works
PBFM is a physics-constrained flow-matching implementation for generating fields in three PDE benchmarks: Darcy flow, dynamic stall, and Kolmogorov flow. The main workflow loads benchmark data, trains a time-conditioned model with flow-matching and physics-residual objectives, saves checkpoints, then samples fields from a selected checkpoint for evaluation. The README also highlights unrolled training, conflict-free gradient updates, and stochastic sampling; source excerpts confirm some training and sampling details, but not all benchmark-specific wiring, so uncertain links are omitted.
Main entry points: darcy_flow/train_ddp.py Darcy training · checkpoints Model checkpoints · dynamic_stall/train_ddp.py Stall training · kolmogorov_flow/train_ddp.py Kolmogorov training
Components 21
Benchmark data
- Darcy loader
darcy_flow/dataset_loader.py - Stall loader
dynamic_stall - Kolmogorov loader
kolmogorov_flow
Training
- Darcy training
darcy_flow/train_ddp.py - Stall training
dynamic_stall/train_ddp.py - Kolmogorov training
kolmogorov_flow/train_ddp.py - Darcy flow matching
darcy_flow - Stall flow matching
dynamic_stall/flow_matching.py - Kolmogorov flow matching
kolmogorov_flow/flow_matching.py - Gradient constraints
darcy_flow/grad_utils.py
Sampling and evaluation
- Darcy sampling
darcy_flow/sample.py - Stall sampling
dynamic_stall/sample.py - Kolmogorov sampling
kolmogorov_flow/sample.py - Model checkpoints
darcy_flow/logs/PBFM/checkpoints - Generated fields
Neural models
- Darcy DiT / U-Net
darcy_flow - Stall DiT
dynamic_stall/dit.py - Kolmogorov DiT
kolmogorov_flow/dit.py
Other components
- Researcher
- HF datasets
- PIDM Darcy data
Connections 37
- Researcher → Darcy training: starts training
- Researcher → Stall training: starts training
- Researcher → Kolmogorov training: starts training
- Researcher → Darcy sampling: requests samples
- Researcher → Stall sampling: requests samples
- Researcher → Kolmogorov sampling: requests samples
- PIDM Darcy data → Darcy loader: provides data
- HF datasets → Stall loader: provides data
- HF datasets → Kolmogorov loader: provides data
- Darcy training → Darcy loader: loads batches
- Stall training → Stall loader: loads batches
- Kolmogorov training → Kolmogorov loader: loads batches
- Darcy training → Darcy flow matching: computes objective
- Stall training → Stall flow matching: computes objective
- Kolmogorov training → Kolmogorov flow matching: computes objective
- Darcy training → Darcy DiT / U-Net: instantiates model
- Stall training → Stall DiT: instantiates model
- Kolmogorov training → Kolmogorov DiT: instantiates model
- Darcy flow matching → Darcy DiT / U-Net: queries model
- Stall flow matching → Stall DiT: queries model
- Kolmogorov flow matching → Kolmogorov DiT: queries model
- Darcy training → Gradient constraints: uses gradients
- Darcy training → Model checkpoints: saves weights
- Stall training → Model checkpoints: saves weights
- Kolmogorov training → Model checkpoints: saves weights
- Darcy sampling → Darcy loader: loads test data
- Stall sampling → Stall loader: loads test data
- Kolmogorov sampling → Kolmogorov loader: loads test data
- Darcy sampling → Model checkpoints: loads weights
- Stall sampling → Model checkpoints: loads weights
- Kolmogorov sampling → Model checkpoints: loads weights
- Darcy sampling → Darcy flow matching: runs sampler
- Stall sampling → Stall flow matching: runs sampler
- Kolmogorov sampling → Kolmogorov flow matching: runs sampler
- Darcy sampling → Generated fields: produces fields
- Stall sampling → Generated fields: produces fields
- Kolmogorov sampling → Generated fields: produces fields