How ddsirota/reservoir-neural-bench works
ReservoirNeuralBench benchmarks neural surrogates for one-step, three-phase Norne reservoir forecasts and evaluates them through 60-step autoregressive rollouts, including out-of-distribution well controls. The product workflow runs from dataset preparation and actual-rate inputs through model training to rollout validation and reporting. Its model portfolio spans spectral, convolutional, operator-learning, and graph architectures. The README documents the benchmark stages and capabilities; source excerpts and the SOURCE INDEX support selected implementation links, so unsampled subsystem connections are not assumed.
Main entry points: train_norne.py Model training · norne_generate_dataset.py Dataset generation · validate_rollout_norne.py Rollout validation · make_report_norne.py Benchmark report
Components 28
Norne data
- Dataset generation
tools/norne_generate_dataset.py - Realized rates
tools/norne_extract_actual_rates.py - Well features
tools/norne_extract_well_index.py - Graph construction
tools/norne_build_graph.py - Dataset export
tools/norne_export_dataset.py - Norne loader
data/norne_loader.py
Surrogate models
- TFNO
models/tfno.py - Multi-input Fourier
models/fourier_mionet.py - U-FNO
models/u_fno.py - DeepONet
models/deeponet.py - MIONet variants
models/mionet_deeponet.py - DeepXDE branches
models/deepxde_branch_deeponet.py - Message passing GNN
models/gnn.py - MeshGraphNet
models/meshgraphnet.py - Multiscale graph net
models/mgn.py - Flux GNN
models/flux_gnn.py - TPFA GNN
models/tpfa_gnn.py - 3D U-Net
models/unet3d.py - Residual U-Net
models/resunet3d_hdc.py - Conv3D residual
models/residual.py
Training and evaluation
- Model training
train_norne.py - Rollout validation
validate_rollout_norne.py - Mass balance
tools/mass_balance.py - Fluid properties
tools/norne_fluid_props.py
Benchmark analysis
- Benchmark report
make_report_norne.py - Figures
tools/make_figures.py - Rollout error curves
tools/make_rollout_error_curves.py
Other components
- Benchmark user
Connections 29
- Benchmark user → Dataset generation: generate data
README.md - Dataset generation → Realized rates: extract rates
- Dataset generation → Well features: derive well features
- Dataset generation → Graph construction: build graph
- Dataset generation → Dataset export: export dataset
- Benchmark user → Model training: train models
README.md - Model training → Norne loader: loads batches
train_norne.py - Model training → TFNO: uses model registry
train_norne.py - Model training → Multi-input Fourier: selects model
- Multi-input Fourier → TFNO: uses backbone
models/fourier_mionet.py - Benchmark user → Rollout validation: validate forecasts
README.md - Rollout validation → Norne loader: loads scenarios
validate_rollout_norne.py - Rollout validation → Mass balance: checks balance
validate_rollout_norne.py - Rollout validation → Fluid properties: uses fluid properties
validate_rollout_norne.py - Benchmark user → Benchmark report: review results
README.md - Benchmark report → Figures: summarizes benchmark
- Benchmark report → Rollout error curves: presents rollout errors
- Model training → Message passing GNN: selects model
train_norne.py - Model training → MeshGraphNet: selects model
train_norne.py - Model training → Multiscale graph net: selects model
train_norne.py - Model training → Flux GNN: selects model
train_norne.py - Model training → TPFA GNN: selects model
train_norne.py - Model training → DeepONet: selects model
- Model training → MIONet variants: selects model
- Model training → DeepXDE branches: selects model
- Model training → 3D U-Net: selects model
- Model training → Residual U-Net: selects model
- Model training → Conv3D residual: uses component
train_norne.py - Model training → U-FNO: selects model